ietf
[Top] [All Lists]

Re: [OPSEC] [tcpm] draft-gont-tcp-security

2009-04-14 10:22:01
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1



Fernando Gont wrote:
Joe Touch wrote:

The consensus seems to be that the current state of affairs is something
like: "a mess". Even if you do care to produce a resilient
implementation, that task is going to be much harder than necessary. You
don't know the amount of cycles we spent in producing
draft-gont-tcp-security.... let alone the time it would take to move the
advice in an actual implementation.
Advice in making a hardened version of TCP would be useful to the
implementation community.
To a large extent this is what draft-gont-tcp-security is about.
Implementation advice is outside the scope of the IETF. It's not even
operational, IMO.

RFC 816: "MODULARITY AND EFFICIENCY IN PROTOCOL IMPLEMENTATION"
RFC 815: "IP DATAGRAM REASSEMBLY ALGORITHMS" (see Section 4)

and,

RFC 1936: "Implementing the Internet Checksum in Hardware" (of which you
are on of the co-authors :-) )

Those are informational, you will note.

That said, to a large extent the document is provides advise about
enforcing stricter validation checks, timeouts where appropriate, and
about a number of policies that may improve TCP's resiliency/security
(e.g., how to select ISN's, etc.)

Those 'validation checks' aren't validations when they exceed the TCP
specifications.

You've produced a summary of issues you feel would harden TCP. I feel
that some of them make TCP more brittle, and some make TCP unnecessarily
complex, and in both cases the mods are not needed in the general
Internet.
Is there nothing in the document with which you agree?
That'd be harsh. I agree with some of the implementation advice as
implementation advice. I agree that, in risk-prone environments (where
packets can be tapped, e.g.), some of the recommendations are appropriate.

I'm disagreeing primarily with the general tone and balance of the document.

I believe at this point in time we're deciding whether it makes sense to
work on this document, and where it would make sense to do it.
draft-gont-tcp-security-00 is just a starting point. Of course, it
represents my pov, and to some extent the pov of the reviewers. But the
idea of bringing it to the IETF is that future versions of the document
represent wg consensus.

If you have specific suggestions on how to improve the document, I'll be
more than happy to hear about them.

However, I believe at this point we are not yet discussing on any
specific issue discussed in the draft, but are trying to agree on how to
move forward. (Feedback on the technical details in the document is
nevertheless welcome, though)

Agreed. I'm suggesting that there are several possible documents, with
different possible 'homes':

1. a document that focuses on implementing a hardened TCP
        that is outside the scope of the IETF, esp. where
        it exceeds IETF recommendations for modifications to
        TCP

2. a document that summarizes and streamlines TCP modifications
        i.e., this would be somewhat like a 793-bis;
        that's a huge undertaking, and would belong in TSVWG
        rather than TCPM

If this document is intended to be an IETF product, rather than an
informational individual contribution, it needs to reflect IETF consensus.

c'mon Joe.. IMO, tcpsecure needed to include those statements about
usefulness in large part because it was IPR-encumbered, and in part as a
political workaround that would avoid further waste of time in endless
discussions.
I disagree. Even if it weren't IPR encumbered, I would disagree with
widescale deployment of a modification to TCP that answers a RST with
one *or more* ACKs. As I said numerous times w.r.t. that document, the
modifications it suggests are generally not needed, unnecessarily
complicate packet processing, and since they don't protect from
in-window injection attacks, I find them useless in the general case.

TCP is already very complicated. And the implementation of the
countermeasures in tcpsecure usually require not much more than
(literally) a couple of additional lines, or a slight modification in
some conditional statement.

The number of lines alone does not reflect the complexity issue; the way
it complicates interactions is.

It becomes harder to get s staright answer when it's impossible for a
vendor to point to a counter-measure that is supposed to be the result
of a thorough review process, in a *timely* fashion.
Can you be as specific here as you want us to be? What exactly does a
vendor want that isn't provided by IPsec, TCP MD5, etc., or the existing
known countermeasures?
What's "the existing known counter-measures"?
Limit cycles/resources available for new connections, e.g., for SYN
attacks -- as is already done for things like IKE.

At the point in which you actually try to put this into code, a number
of questions arise that need to be answered. Why should vendors rehash
the same analysis over an over again (with the potential of doing it
wrong, which would lead to buggy implementations), when we could put out
a document with consensus on the preferable way to do those things.

Showing a way to do something is useful; claiming it is preferred
requires consensus. The IETF doesn't specify preferred implementations;
it does give them as examples, but they tend to be in informational
individual documents rather than as WG product.

FWIW, vendors are following the UK CPNI document. The idea of bringing
those results to the IETF is so that these results/advice can be further
discussed, more eyes look into them, and the doc is modified if it is
felt necessary.
I've been saying I feel that mods are necessary, and you keep
complaining. 

That's not how I read your comments. If your point of view is "it would
be interesting to work on this. however, i believe the document should
be modified in this way, because of this reason" that's one thing.

If your pov is "we don't need this. go somewhere else", that's something
entirely different.

IMO, the IETF doesn't need to spend group cycles to work on how to
implement TCP efficiently or in safe ways. That's software engineering,
and may be a good idea or even a good individual submission, but not
what I think of as WG effort.

If this doc is intended to be a WG product, it needs to focus on
reflecting IETF consensus and recommendations. Its current focus is
"what is implemented", as if that is sufficient rationale.

...
The sky has been falling in this WG for several years. Although this
document is the first aggregation of such recommendations, as you know
it's composed of many documents you yourself have been discussing for
that period in this WG..

I'd probably argue that the case with tcpm is that at (many) times
protocol specifications have been taken as if they were casted in stone.
And unless one is part of some small circle of people that is supposed
to have been allowed by God to modify such specs, it will be very hard
there's no effort that takes less than quite a few years.

We are conservative. We're talking about changes that affect the core of
the Internet, so that is appropriate. Whether a modification is accepted
as standards track or not is based on whether it is **generally**
needed, not whether it has been implemented or even deployed.

I'm not quite sure of what small circle you're referring to, but the
primary mods to the standards track over the past few years have been in
ways that were supported by a large pile of analysis, e.g., increasing
TCP's initial window. When people come without that pile, they're
challenged. A pile of code is not a substitute for a pile of analysis.

Very loud people take the time to maintain endless discussions, and most
mere mortals that need to get work done end up completely avoiding tcpm
altogether, because it requires a huge spend of time.

Virtually every developer that I know of won't care about what the end
result in tcpm is. At most, they will post a question to hear comments.
But that's it. To a large extent people cannot believe the amount of
energy we spend for such a null progress.

Example: ICMP attacks draft (draft-ietf-tcpm-icmp-attacks).
The doc was reviewed by devolpers from Sun, FreeBSD, NetBSD, OpenBSD,
Linux, extreme networks, and Cisco (this last one "unofficially"). To
them, the draft looks okay. Many other people have also agreed with
that. But I cannot get those folks involved in our endless discussions.
The ROI for them is NULL.

Do they care about the outcome? Not really. They agree with the
proposal, it is in the code already, and has been running for years.
They just let us waste our time.

I agree that there are benefits to be gained from having a more
conservative philosophy, to put it some way. I believe that it is a good
thing to challenge proposals, to aim at improving their quality, etc.
This has helped improve many documents, including those I have authored.
But I believe at some point it starts looking as "everything that
neither me or my inner circle proposes will be banned".

TCPM exists as much to protect TCP from tweaking as it is to mature
proposed tweaks. The more tweaks anyone proposes, the more they get
challenged. The less analysis behind the proposals, the more they get
challenged. Deployed code is not a substitute for analysis.

It's unfortunate if you feel personally affected by that approach, but
it's simply cause and effect. **ALL** documents in this WG are
challenged, and the bar in this WG is higher than in other WGs - and it
should be.

If your goal is making progress more quickly, you need to create your
own protocol to modify.

Honestly, I'm not sure why you always have to knock down others' efforts
on a "by default" basis, and prejudge the motivation behind those efforts.
I'm asking the question I apparently keep needing to ask:

     Why do you think that just because something is implemented
     we should recommend it?

That's not how the tcp-security document was produced. For instance,
many of the recommendations had never been implemented. And the document
argues *against* some common implementation strategies.

Agreed; those are not the parts I'm as concerned with.

     Why do you think that a message that isn't expected indicates
     an attack to be defended against, vs. the actions of a
     benign endpoint?

We simply raise the bar about what we react to. If there are packets for
which there's no legitimate use, we don't react to them (if this doesn't
cause harm).

When a packet arrives that *could* have been legitimate, i.e., for which
there is *any* legitimate use, you have an obligation to react to it. I
don't agree that some of what you're proposing takes this into account.

I have a high bar for the need for modifications to TCP, and the need to
propagate local solutions to every endpoint in the Internet. 

And do you believe that such propagation depends on our outcome? --
Thanks God, it doesn't. Try to find any implementation that is
fully-compliant with the RFCs, and let me know if you find any.

The lack of advice on all these issues has put vendors in a position in
which they have to figure out that advice by themselves. Sometimes they
got to the right answers, sometimes not.

Have a look at the vulnerability advisories referenced in the I-D: the
same errors are committed over and over again.

draft-gont-tcp-security is an effort to help the vendor/developer
community in that area.

I agree that vendors need some sort of implementation advice. I don't
agree that the IETF needs to be the place where that is made.

Joe


-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAknkm6wACgkQE5f5cImnZrsZbQCg4F5I57j8Zz/wTSsnjfN7dhrx
tqMAoNaM+MmXCJc6yvsvwXUc52cn+ZaB
=9V8t
-----END PGP SIGNATURE-----
_______________________________________________
Ietf mailing list
Ietf(_at_)ietf(_dot_)org
https://www.ietf.org/mailman/listinfo/ietf