{"id":799,"date":"2008-12-28T18:16:44","date_gmt":"2008-12-28T17:16:44","guid":{"rendered":"http:\/\/www.mitternachtshacking.de\/blog\/799-25c3-tcp-denial-of-service-vulnerabilities"},"modified":"2018-05-31T14:53:15","modified_gmt":"2018-05-31T13:53:15","slug":"25c3-tcp-denial-of-service-vulnerabilities","status":"publish","type":"post","link":"https:\/\/www.mitternachtshacking.de\/blog\/799-25c3-tcp-denial-of-service-vulnerabilities","title":{"rendered":"25C3: TCP Denial of Service Vulnerabilities"},"content":{"rendered":"<p>Wie letztes Jahr (PortBunny) machte die Einf\u00fchrung des Vortrags FX mit launischen Kommentaren wie &#8222;I&#8217;m his Boss&#8220;. Ich bin sicher, dass FX das gut meint aber die Arbeit von Fabs ist inzwischen so gut und umfangreich geworden, er k\u00f6nnte sich besser pr\u00e4sentieren wenn der &#8222;\u00dcbervater&#8220; nicht st\u00e4ndig daneben stehen w\u00fcrde. Die Folien kommen auf den Videoaufnahmen leider nicht gut r\u00fcber, wei\u00df auf schwarz sollte man eventuell auch nochmal \u00fcberdenken.<\/p>\n<p>TCP ist ein Protokoll aus den 80ern (RFC 793, 1981), das keine echten Sicherheitsfunktionen bietet sondern lediglich auf Robustness optimiert wurde. Bekannte Probleme sind die TCP Reset Attacks die 2004 von Paul Watson ver\u00f6ffentlicht hat und auf die mit TCP Source Port Randomization reagiert wurde (erinnert einen das zuf\u00e4llig an die Dan Kaminsky DNS L\u00f6sung?). Eine weitere Schutzma\u00dfnahme ist die Sequence Number Randomization, die in RFC 1948 beschrieben ist.<\/p>\n<p>Ich versuche mal, die DoS-Szenarien zusammenzufassen, das ist jedoch weder ganz korrekt und schon gar nicht vollst\u00e4ndig, im Zweifelsfall verweise ich auf das Video und die Slides von Fabs.<\/p>\n<p>DoS-Szenarien:<\/p>\n<ul>\n<li>Backlog Queue SYN-Flooding\n<ul>\n<li>Half-open Connections k\u00f6nnen von der Anwendung nicht abgebrochen werden<\/li>\n<li>Dienste sollten neue Verbindungen schnell annehmen k\u00f6nnen, um die Backlog-Queue wieder zu leeren<\/li>\n<\/ul>\n<\/li>\n<li>Congestion Control Hacking\n<ul>\n<li>man simuliert eine Gigabit-Verbindung um gro\u00dfe TCP Windows zu bekommen (z.B. durch ACKs, bevor man die Daten tats\u00e4chlich sieht)<\/li>\n<li>man kann steuern, wie man auf Pakete des Kommunikationspartners antwortet<\/li>\n<li>der Kommunikationspartner sendet sehr schnell Daten und flutet seine eigene Verbindung<\/li>\n<\/ul>\n<\/li>\n<li>Man kann eine Verbindung auch in FIN_WAIT1 halten &#8230; sehr lange (abh\u00e4ngig von der RTT)\n<ul>\n<li>Der Control Block bleibt offen, so kann man den RAM f\u00fcllen<\/li>\n<li>Gr\u00f6\u00dfe des Control Blocks abh\u00e4ngig von der Window Size<\/li>\n<\/ul>\n<\/li>\n<li>Fefe&#8217;s TCP_DEFER_ACCEPT Bug<\/li>\n<\/ul>\n<p>Das gr\u00f6\u00dfte Problem mit all diesen Fehlern ist, dass eigentlich eine \u00dcberarbeitung der Architektur von TCP notwendig w\u00e4re. Aktuelle Arbeiten besch\u00e4ftigen sich jedoch eher mit TCP f\u00fcr Satellitenstrecken (hohe Bandbreite aber auch hoher Roundtrip). Eine sicherheitsgetriebene \u00dcberarbeitung von TCP d\u00fcrfte aktuell nicht realistisch sein.<\/p>\n<p>Ein paar Ideen von Fabs sind dar\u00fcber hinaus recht clever, beispielsweise viele Verbindungen aufmachen und das Congestion Window zu tunen. ich warte ja, dass das mal irgendjemand richtig cool implementiert. Insgesamt hat mir der Vortrag ganz gut gefallen, man h\u00e4tte jedoch noch ein paar &#8222;Doomsday&#8220; und &#8222;wir werden alle st\u00f6rben&#8220; Nachrichten einbauen k\u00f6nnen \ud83d\ude42 Schade, dass die Folien noch nicht online sind.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wie letztes Jahr (PortBunny) machte die Einf\u00fchrung des Vortrags FX mit launischen Kommentaren wie &#8222;I&#8217;m his Boss&#8220;. Ich bin sicher, dass FX das gut meint aber die Arbeit von Fabs ist inzwischen so gut und umfangreich geworden, er k\u00f6nnte sich besser pr\u00e4sentieren wenn der &#8222;\u00dcbervater&#8220; nicht st\u00e4ndig daneben stehen w\u00fcrde. Die Folien kommen auf den [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[13],"tags":[],"_links":{"self":[{"href":"https:\/\/www.mitternachtshacking.de\/blog\/wp-json\/wp\/v2\/posts\/799"}],"collection":[{"href":"https:\/\/www.mitternachtshacking.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mitternachtshacking.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mitternachtshacking.de\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mitternachtshacking.de\/blog\/wp-json\/wp\/v2\/comments?post=799"}],"version-history":[{"count":0,"href":"https:\/\/www.mitternachtshacking.de\/blog\/wp-json\/wp\/v2\/posts\/799\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.mitternachtshacking.de\/blog\/wp-json\/wp\/v2\/media?parent=799"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mitternachtshacking.de\/blog\/wp-json\/wp\/v2\/categories?post=799"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mitternachtshacking.de\/blog\/wp-json\/wp\/v2\/tags?post=799"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}