Live data from Hacker News

Stupidly Simple DDoS Protocol (SSDP) Generates 100 Gbps DDoS

blog.cloudflare.com

101–110 of 112 posts

Re: Stupidly Simple DDoS Protocol (SSDP) Generates 100 Gbps DDoS

#101

Earlier quoted context omitted.

> UDP does not have connections. UDP does not have connections, but the OS does have a concept of UDP connections to a degree in the form of packet filtering/routing. Point being, if you send a DNS request (for example), the source IP/port and dest IP/port is how the OS will decide which packets to route back to you when the DNS server responds. If the responding DNS server changes the source port, the OS will not ro…

> UDP does not have connections, but the OS does have a concept of UDP connections to a degree in the form of packet filtering/routing. The filtering is completely optional to use. > Point being, if you send a DNS request (for example), the source IP/port and dest IP/port is how the OS will decide which packets to route back to you when the DNS server responds. That depends on how the requesting resolver has configur…

It's seems the context of my original comment just went way over your head. Yes, obviously, if the protocol is defined to allow for varying the source port then yes it will work because you specifically write your program to handle that. But the person I was responding too was asking in the context of protocols like SSDP, which is not defined that way. And he was asking if you could vary the source port anyway even though the protocol doesn't support it, and I said no and explained why that wouldn't work.

Re: Stupidly Simple DDoS Protocol (SSDP) Generates 100 Gbps DDoS

#102
post #28

>It's not a novelty that allowing UDP port 1900 traffic from the Internet to your home printer or such is not a good idea. How would this even be possible? Home routers have to NAT everything. Normally you have to set up reverse NAT to get ports forwarded to the LAN.

IPv6 (now you really need a real, properly configured firewall instead of NATting and praying)

Even better: fix your damn security.

The security standard we use for everything in our network is: if it would be insecure if hooked directly up to the Internet, it is broken.

Firewalls encourage poor security by creating a false sense of security and leading to developer and system administrator complacency. IMHO it would be better to get rid of them and let the insecure junk burn. To prevent DDOS exploitation the best would be to have grey hats take the latest exploits and mass-brick exploitable devices.

We'd learn our lesson and then we'd have secure devices.

Re: Stupidly Simple DDoS Protocol (SSDP) Generates 100 Gbps DDoS

#103

Earlier quoted context omitted.

> UDP does not have connections, but the OS does have a concept of UDP connections to a degree in the form of packet filtering/routing. The filtering is completely optional to use. > Point being, if you send a DNS request (for example), the source IP/port and dest IP/port is how the OS will decide which packets to route back to you when the DNS server responds. That depends on how the requesting resolver has configur…

It's seems the context of my original comment just went way over your head. Yes, obviously , if the protocol is defined to allow for varying the source port then yes it will work because you specifically write your program to handle that. But the person I was responding too was asking in the context of protocols like SSDP, which is not defined that way. And he was asking if you could vary the source port anyway even…

> and I said no and explained why that wouldn't work.

And your explanation is at the very least misleading, bordering on wrong. Pretty much noone (except where the protocol spec explicitly were to require such behaviour, maybe) would implement a client that would open a socket per server/per request, but bind them all to the same local address/port.

Either you use one socket for all requests, in which case you don't connect(), so you receive all the responses, and thus would also receive datagrams from addresses/ports that you didn't send to, and instead you would do the matching of responses to requests in userspace, even if potentially based on the sender's address/port.

Or you use one socket per server/per request and let the OS assign you a free port per socket, in which case the local address/port is perfectly sufficient for the OS to route received datagrams to sockets. In the latter case, it's common to simplify your code by letting the OS handle the filtering of source addresses, but that's all it really is, filtering--actual routing based on remote addresses by the OS is not what normally happens and not why varying the response source port would not work with many protocols.

Re: Stupidly Simple DDoS Protocol (SSDP) Generates 100 Gbps DDoS

#105
post #93

Earlier quoted context omitted.

OK, I'll try. :-) Are there good reasons to believe that obscurity (ie, keeping secret the means and methods of attack) is likely to be a viable defense in favor of civility and justice in the age to come?

No. Does the parent comment imply that somehow? (Did the reply end up on the wrong comment?)

Oh my goodness. Yes. :-)

I meant to reply to this: https://news.ycombinator.com/item?id=14660862

Sorry about the confusion.

Re: Stupidly Simple DDoS Protocol (SSDP) Generates 100 Gbps DDoS

#106
post #74
post #51

Earlier quoted context omitted.

BCP 38 on ingress at edges is trivial performance-wise (a few ACL entries in TCAM). It's just that there is no incentive to stop lazy ISPs from allowing everything since that's easier.

It's not few. It's a very common mistake. Say I have 20 10G ports on line card. Mid size ISP has from hundreds to thousands routes. Thus we will end up with tens of hundreds ACLs per line card. That affects performance, dramatically. Say on older yet supported Cisco 7600 you can apply about 10k entries per port, ~ 100k totaling per card. That's limit, after that performance degrades. Another question what to do on pe…

Do it on ingress of regular customers or very small peering interfaces, not peering links with other ISPs.

If all ISPs did this, there would be no ACL issue and BCP 38 would solve the problem. No need to make it harder than it is.

Re: Stupidly Simple DDoS Protocol (SSDP) Generates 100 Gbps DDoS

#107
post #53
post #50

Earlier quoted context omitted.

IP spoofing is the problem. Even if you completely ban UDP protocols, it still allows for anonymous unamplified attacks. Attacking every single protocol that dares to respond to a query is a pretty stupid approach IMO. Look how well it's worked so far. Additionally, unless we switch DNS to TCP only, root and authoritative name servers are always going to provide and amplification factor and there are still more than…

Who are these ISPs? I would love to see a treemap apportioning blame to the worst offenders...

That's the problem, it's hard to trace spoofed IPs since they are spoofed.

Re: Stupidly Simple DDoS Protocol (SSDP) Generates 100 Gbps DDoS

#108
post #54
post #49

> Internet service providers should never allow IP spoofing to be performed on their network. IP spoofing is the true root cause of the issue. See the infamous BCP38. I don't see how it is at all reasonable to shift blame from a protocol that assumes the world can be trusted to the untraceable goal of "every single network in the entire world should only generate trusted data: then the problem would be solved". > Int…

You commented on two points: A) ip spoofing B) netflow On IP spoofing I said plenty already https://idea.popcount.org/2016-09-20-strange-loop---ip-spoof... . There are two major points: - We will always have DDoS vulnerable UDP protocols. In past we had DNS. Then we had NTP. Now we have SSDP. The next one is going to be some gaming protocol. We should fix them as we go, but a more comprehensive solution it to actuall…

> We should fix them as we go, but a more comprehensive solution it to actually fight the spoofing.

The problem is that the Internet as designed simply supports this, and you can't fix it unless you fix the entire Internet at once; this problem is harder and less realistic to fix than any other place to poke at the problem, specifically due to the entire nature of the attack: it is an amplification attack... so I only need to find--somewhere, anywhere--a smattering of Internet that still supports spoofing, and use that to launch my attack.

> The ISP's can track you / deanonymize anyway...

They can, yes; the question is how much they do and if they should: I believe that it should be illegal for them to do this, and in a more perfect world on a more perfect network I believe it should be impossible for them to do this. The idea that you seriously think that not only is it OK that they do this but that they actively should do more of it, in all honesty, sickens me: we should be striving for a world where the list of reasons an ISP "should" track you--the list of reasons people feel they have to--is empty.

> That means the netflow collection point will have statistical metadata about customer connections (1 in 64k connections will have saved data - source port/ip, dest port/ip, length, packets, bytes).

No: that's not what this article says, and that's not how NetFlow works. You are proposing logging 1 out of every 64k packets, not 1 out of every 64k connections. Connections are made up of multiple packets--at least 4--and are sometimes made up of many many packets (the average I read was ~100 packets per connection, though I'm sure that falls into some inverse power loaw). So you are logging way more connections than 1 out of every 64k, and there are known attacks even on networks like Tor that are based on having this NetFlow data to correlate connections.

> Think about centralization that it causes: can your server sustain trivial 100Gbps SSDP attack?

The only force of centralization I'm seeing in either my experiences or your presentation is the marketing that comes out of CloudFlare and the, as far as many of us can tell, bending of the truth as to what even constitutes an attack that is used to up-sell existing CloudFlare customers. It is one of the reasons why the only websites you ever really notice being attacked are ones behind CloudFlare, because CloudFlare really really wants random other people to notice that they are "helping".

FWIW, I have absolutely been the target of SSDP attacks, and have been concerned about this protocol for a long long timeand it isn't obvious to me how "let's centralize more" is the real answer to the problem: if you really want to protect yourself from a DDoS attack, the obvious solution is to decentralize, not centralize... the more centralized you are the more you have a target that can actually be taken down. As a visceral demonstration of this, I dare you to use an SSDP attack to take down Bitcoin: the only reason that this attack is a conceptual problem in the first place is that people like to centralize things.

Re: Stupidly Simple DDoS Protocol (SSDP) Generates 100 Gbps DDoS

#110
post #108
post #54

Earlier quoted context omitted.

You commented on two points: A) ip spoofing B) netflow On IP spoofing I said plenty already https://idea.popcount.org/2016-09-20-strange-loop---ip-spoof... . There are two major points: - We will always have DDoS vulnerable UDP protocols. In past we had DNS. Then we had NTP. Now we have SSDP. The next one is going to be some gaming protocol. We should fix them as we go, but a more comprehensive solution it to actuall…

> We should fix them as we go, but a more comprehensive solution it to actually fight the spoofing. The problem is that the Internet as designed simply supports this, and you can't fix it unless you fix the entire Internet at once; this problem is harder and less realistic to fix than any other place to poke at the problem, specifically due to the entire nature of the attack: it is an amplification attack... so I onl…

Right, sounds like our fundamental assumptions differ.

For the great majority of internet users buying more capacity around the globe to sustain a 100Gbps SSDP is not an option. If you run a mildly controversial website, you don't expect to pay much for idle bandwidth. You can go for hosted solutions, but then you will be charged for attack traffic. What I'm proposing is a solution to this problem - how can we make the internet safer for the most common use case. I propose: netflow (to identify the spoofing boxes), flowspec (as stop gap measure), and BCP38 (a fundamental issue) will get us a long way.

If we were to design HTTP from scratch we could discuss how to make it truly decentralized. This sounds like an academic discussion though.

Your second argument is that DDoS is not a real problem. I don't know how to assess it. Dyn was down. Krebs went down. These are facts. I'm definitely not the guy that shouts "we are all doomed! buy product A or you will go down". All I say is - this is what I see, this is what happened, here are the numbers. Read the data and assess it yourself I guess!

- stats for amplifications https://blog.cloudflare.com/reflections-on-reflections/

- numbers for some random syn flood https://blog.cloudflare.com/a-winter-of-400gbps-weekend-ddos...

- numbers from some unexplained L7 event https://blog.cloudflare.com/the-porcupine-attack-investigati...

Post reply on HN