Forum: Offtopic Sicherheitslücken in TCP/IP-Stacks


von 100Ω W. (tr0ll) Benutzerseite


Lesenswert?

Hallo,

für die die das noch nicht mitbekommen haben:
https://www.heise.de/news/Amnesia-33-ein-Ripple20-Deja-vu-im-Open-Source-Gewand-4982063.html

Als wie gefährlich würdet ihr die Lücke beurteilen?

von S. R. (svenska)


Lesenswert?

100Ω W. schrieb:
> Als wie gefährlich würdet ihr die Lücke beurteilen?

Eher irrelevant, zumindest was uIP betrifft.
Die anderen Stacks kenne ich nicht.

von Johannes K. (krjdev)


Lesenswert?

Würde gerne wissen wie bei uIP eine Remote Code Execution auf einem AVR 
ausgeführt werden soll. Vor allem wenn jetzt zum Beispiel nicht der 
Befehl Store Program Memory im Programm (weder Applikation noch 
Bootloader) verwendet wird. Die AVR's haben ja meines Wissens ja eine 
Harvard Architektur.

Wenn der Befehl Store Program Memory verwendet werden würde, dann könnte 
ich es ja noch verstehen, dass hier die Rücksprungadressen manipuliert 
werden... Aber ohne diesem Befehl im Programm? Übersehe ich hier etwas?

von (prx) A. K. (prx)


Lesenswert?

Johannes K. schrieb:
> Würde gerne wissen wie bei uIP eine Remote Code Execution auf einem AVR
> ausgeführt werden soll.

Im Prinzip genauso wie bei stinknormalen PCs mit nicht ausführbaren 
Datenbereichen dank NX-Bit: 
https://en.wikipedia.org/wiki/Return-oriented_programming

Allerdings steigt das Potential ausnutzbaren Codes mit der Grösse des 
Codes. Bei einigen KB ist das schwieriger als bei einigen MB.

: Bearbeitet durch User
von Johannes K. (krjdev)


Lesenswert?

(prx) A. K. schrieb:
> Johannes K. schrieb:
> Im Prinzip genauso wie bei stinknormalen PCs mit nicht ausführbaren
> Datenbereichen dank NX-Bit:
> https://en.wikipedia.org/wiki/Return-oriented_programming
Das habe ich ja mit "Manipulation" der Rücksprungadressen gemeint. Also 
ein Art Return-to-libc.

Weil eigentlich wird hier ja "nur" bei einem fehlerhaften Programm 
(keine Überprüfung der Länge der Eingabedaten) der Buffer bis zur der 
jeweiligen Rücksprungadresse der Subroutine überschrieben. Mag, 
vielleicht jetzt etwas Laienhaft erklärt sein. Zu mindestens hab ich so 
laut dem Buch "Hacking - Die Kunst des Exploits" gelernt.

OT
Wollte das hier schon immer mal fragen. Gibt es auch eine Architektur 
bei dem der Datenstack und der Stack mit den Rücksprungadressen getrennt 
sind? Also ein Hardwareschutz. Wäre meine Idee für eine neue Architektur 
um das ganze etwas Einhalt zu gebieten. Man hat zwar ein paar mögliche 
Einschränkungen...aber irgendwie müsste man eine Architektur ja dadurch 
so einigermaßen sicher bekommen können.

EDIT
Hat wer Zeit um eine neue Architektur zu designen, sollte es solche 
ähnliche Architektur noch nicht geben? Zuerst mal in VHDL? Ich wäre 
dabei. :)

: Bearbeitet durch User
von (prx) A. K. (prx)


Lesenswert?

Johannes K. schrieb:
> Gibt es auch eine Architektur
> bei dem der Datenstack und der Stack mit den Rücksprungadressen getrennt
> sind?

Der IAR C Compiler für AVR trennt Returnstack und Datenstack. Sicherlich 
nicht aus Sicherheitsgründen, sondern vmtl weil eine atomare 
Manipulation des Stackpointers bei AVRs umständlich aber bei Interrupts 
unumgänglich ist. Das ist ein Designfehler der AVRs.

Manche kleinen µCs haben einen Hardware-Stack. Manche µCs tun sich 
überhaupt schwer mit Datenstacks und verwenden deshalb normalerweise 
keinen, statt dessen statische Daten für lokale Variablen und Parameter, 
was reentrant code erschwert (z.B. 8051).

von Εrnst B. (ernst)


Lesenswert?

Johannes K. schrieb:
> Würde gerne wissen wie bei uIP eine Remote Code Execution auf einem AVR
> ausgeführt werden soll.

evtl. über "DNS cache poisioning": Bieg den Firmware-Update-Server um, 
wenn das Gerät self-updates über's Internet macht (und die nicht nochmal 
gesondert signiert sind)

Ansonsten ist das für viele Angriffe garnicht wichtig, da reicht es wenn 
du über den Angriff ein paar Bytes am Datenstack/globale Variablen 
verstellen kannst.

Wenn der IP-Stack dann z.B. statt nur Einem gleich 0xFFFFFFFF ACK Pakete 
raussendet, womöglich noch an eine frei überschriebene Ziel-IP, dann ist 
das ein perfekter DDoS-Multiplikator.
Ganz ohne Fremdcode-Ausführung, ohne RoP, und ohne dass getrennte 
Daten/Return-Stacks helfen würden.

: Bearbeitet durch User
von S. R. (svenska)


Lesenswert?

Naja, bei uIP wird außerdem ein Teil des TCP/IP-Stacks in die Anwendung 
ausgelagert (z.B. Retransmissions), da kommt es auf einen Bug im Stack 
auch nicht mehr an.

Mit der Verbreitung von IoT wird es ohnehin keinen Mangel an 
verwundbaren Geräten geben und da erst die Massenproduktion 
fast-identischer Produkte die IoT-Geschäftsmodelle überhaupt 
ermöglicht...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.