Am 28.02.23 um 20:05 schrieb Hugo Slabbert:
It is not so bad. But you are still raising a valid point and we have been pondering over this and indeed this is one of the reasons why we have posted our work here.
I think, if you want to mount an amplification attack, you would be way better off using DNS :)
Agreed; it's a very low level of amplification, and there are lower hanging fruit. I do think it's worthwhile to still indicate, though, in a similar vein overall in the security considerations re: rate limiting server side.
We have that, plus a few other things in the security consideration section. But we probably should quantify the level of amplification, too.
We could easily specify payload to be added to the request so that the request and the respective response and probe as equivalent in size.
I'm still a fan of the notion that, for a connectionless protocol, the response size should not exceed the request size, to eliminate that risk entirely. I think that does become a bit much in this case, though, if we have to factor in the spoofing scenario, as you have:
1. client: traceroute request -> server 2. server: probe -> client 3. client: probe response -> server (may be missing) 4. server: traceroute response -> client
The client gets both the traceroute response (4) as well as the traceroute probe (2). If padding were to be required in the traceroute request, it would need to account for *both* the +24 bytes delta between the traceroute request and response probes, as well as for the actual probe size, including its L3 headers. imho that starts to balloon the traceroute request a good bit, and also feels clunky that we're now coupling things such that the traceroute request also needs to calculate or be aware of the size of the actual probe in order to craft its traceroute request.
Yes, that is the dilemma. To make things a bit more complicated, RFC 792 (the original ICMP RFC) specifies, that the Time Exceeded Message contains the original IP header plus next 64 bits following it. On today's internet, there actually might be a few more bits. One could make a conservative estimate and use that. I also got off-list feedback that basicaclly said, if you don't add this now, and people find a way to exploit it later, operators will block it and once it is blocked, it won't be unblocked again".
Also, I think it would be worth while discussing over at the IETF.
Sure thing. Should I try to piggyback on an existing thread in Int-area or start a new thread there?
Please start a new thread. Thanks! Rolf
-- Hugo Slabbert
On Sun, Feb 26, 2023 at 1:39 AM Rolf Winter <rolf.winter@hs-augsburg.de <mailto:rolf.winter@hs-augsburg.de>> wrote:
Hi Hugo,
correct. It is not so bad. But you are still raising a valid point and we have been pondering over this and indeed this is one of the reasons why we have posted our work here.
I think, if you want to mount an amplification attack, you would be way better off using DNS :) A response and probe, as you said, is a little more than a request in terms of bytes on the wire. We could easily specify payload to be added to the request so that the request and the respective response and probe as equivalent in size. Would you, or anybody on this list be worried about amplification given that it only a little bit more? This would be really interesting input to us. Also, I think it would be worth while discussing over at the IETF.
Just as some additional information, we expect people to rate limit reverse traceroute, which our implementation already allows.
Best,
Rolf
Am 25.02.23 um 21:00 schrieb Hugo Slabbert: > Ah, apologies, I misunderstood: > > One reverse traceroute request => one probe + one reverse traceroute > response. > > So it is *slightly* additive, but does not multiply out to the distance > between the reverse traceroute server and the target. > > On Sat, Feb 25, 2023, 11:19 Hugo Slabbert <hugo@slabnet.com <mailto:hugo@slabnet.com> > <mailto:hugo@slabnet.com <mailto:hugo@slabnet.com>>> wrote: > > Is there a possible reflection & amplification vector here? > > * The client sends a reverse traceroute request to the server. This > has a 12-byte ICMP header as indicated in 3.1 > * The server responds to the client with a traceroute response. This > has a 12-byte ICMP header as indicated in 3.2, but also a traceroute > payload of 24 bytes as indicated in 3.3 > > So the total response from client to server has at least +24 bytes > beyond the original client request? And a spoofed source address on > a reverse traceroute request would then direct the reverse > traceroute response to the spoofed victim? > > +24 bytes is not a huge amount in terms of amplification, but if > this is accurate, is that perhaps worth calling out in the security > considerations? > > Actually: Would there not also be a slight additional bit of traffic > to the spoofed address, in that the actual traceroute probe itself, > that is sent from the reverse traceroute server, is also directed > towards the spoofed source IP address? The last probe in the series, > that has a TTL equal to the distance between the reverse traceroute > server and the probe target, would reach the target, but additional > probes (with TTL shorter than the distance from server to target) > would still be flung from the server across intermediate hops. > > E.g. if I spoof a client address that is 15 hops away from the > reverse traceroute server, then my single reverse traceroute request > would result in: > > * 15 probes initiated from the reverse traceroute server toward the > spoofed target (with each probe progressing one hop closer to the > target) > * one reverse traceroute response that is +24 bytes from my original > request, also directed toward the spoofed target > > Am I understanding the structure correctly there? > > -- > Hugo Slabbert > > > On Sat, Feb 25, 2023 at 5:40 AM Rolf Winter > <rolf.winter@hs-augsburg.de <mailto:rolf.winter@hs-augsburg.de> <mailto:rolf.winter@hs-augsburg.de <mailto:rolf.winter@hs-augsburg.de>>> wrote: > > Hi Tore, > > thanks for the suggestion. We are already in touch with the > NLNOG Ring > folks. They are really helpful! But, the more the better. > > Also, for people playing with the client, it would be helpful to > us if > you use the --transmit command line switch. This will send > information > about the traceroute operation to us for further analysis. > > Additionally, the endpoint "playground.net...." is currently > used for > some variations of reverse traceroute, so some measurements > might not > work currently. You can just use any of the other endpoints. > > Best, > > Rolf > > Am 25.02.23 um 11:09 schrieb Tore Anderson: > > * Rolf Winter > > > > > >> If you would like to play with reverse traceroute, the > easiest option > >> is to work with the client and use one of the public server > instances > >> > (https://github.com/HSAnet/reverse-traceroute/blob/main/ENDPOINTS <https://github.com/HSAnet/reverse-traceroute/blob/main/ENDPOINTS> <https://github.com/HSAnet/reverse-traceroute/blob/main/ENDPOINTS <https://github.com/HSAnet/reverse-traceroute/blob/main/ENDPOINTS>>). > >> If you would be willing to host a public server instance > yourself, > >> please reach out to us. > > > > I suggest you get in touch with the fine folks at NLNOG RING > and ask it > > they would be interested in setting this up on the 600+ RING > nodes all > > over the world. See https://ring.nlnog.net/ <https://ring.nlnog.net/> > <https://ring.nlnog.net/ <https://ring.nlnog.net/>>. > > > > Tore >