27 Stimmen

Überraschende Software-Schwachstellen oder Exploits?

Welches sind die seltsamsten/raffiniertesten/überraschendsten/tiefsten versteckten Software-Schwachstellen oder Exploits, die Sie je gesehen haben? Stellen im Code, von denen Sie dachten, dass sich dort keine Gefahr verbirgt, aber falsch lagen?

[Zur Klarstellung: Jeder kennt SQL-Injektionen, XSS oder Pufferüberläufe - Fehler, die oft durch unvorsichtige Kodierung entstehen. Aber Dinge wie Ken Thompsons versteckter Trojaner (Reflections on Trusting Trust: http://cm.bell-labs.com/who/ken/trust.html ), die jüngste NULL-Dereferenz-Schwachstelle im Linux-Kernel ( http://isc.sans.org/diary.html?storyid=6820 ), oder ein komplexer Angriff auf RNG mit Denial of Service ( http://news.ycombinator.com/item?id=639976 ) haben mich sehr beunruhigt].

Update: Vielen Dank für alle Antworten, sie waren großartig. Ich hatte die Qual der Wahl. Letztendlich habe ich mich entschieden, das Kopfgeld für den Seitenkanal-/Stromüberwachungsangriff zu zahlen. Nichtsdestotrotz zeigen all eure Antworten zusammen, dass ich mehr über Sicherheit lernen muss, da es ein wirklich tiefes Thema ist :).

0 Stimmen

Hinzufügung der Kennzeichnung "subjektiv", da es keine objektive Möglichkeit gibt, die Frage zu beantworten, was am "merkwürdigsten" oder überraschendsten ist.

0 Stimmen

Eigentlich handelt es sich bei allen dreien um neue Anwendungen alter, bekannter Probleme. Daran ist nichts auszusetzen, aber sie sollten nicht als besonders überraschend angesehen werden.

3 Stimmen

Das sind keine Bugs, das sind Features!

9voto

Brian Beckett Punkte 4604

Ok, es handelt sich nicht um eine Software-Schwachstelle oder ein Exploit, aber trotzdem:

" Van Eck Phreaking ist das Verfahren zum Abhören des Inhalts eines CRT- und LCD-Bildschirms durch Erkennung seiner elektromagnetischen Emissionen". (Aus Wikipedia)

Einfach... wow...

9voto

Aaron Digulla Punkte 308693

Erst gestern habe ich von einer cleveren Methode gelesen, den Browserverlauf zu stehlen: Durch das Hinzufügen von JavaScript, das die Farbe Ihrer Links untersucht (sie ändern die Farbe der von Ihnen besuchten Websites).

Damit können Websites angegriffen werden, die der URL ein Sicherheits-Token hinzufügen (wenn dieses Token nicht zu lang ist), indem einfach alle möglichen Kombinationen ausprobiert werden.

8voto

AviD Punkte 12808

Ja, ja, wir alle wissen über SQL Injection Bescheid - und wir alle wissen, wie man sich dagegen schützen kann, richtig?
Ihre Anwendung sollte eine Eingabevalidierung durchführen, Stored Procedures aufrufen usw. usw.

Aber wussten Sie, dass in bestimmten Situationen, SQL-Schmuggel das alles einfach umgehen kann?
Das Schockierendste daran ist, dass dies durch eine wenig bekannte, meist nicht dokumentierte "Funktion" in einigen Datenbanken, Frameworks, DB-Objekten usw. verursacht wird. Kurz gesagt - die Datenbank (oder die Rohrleitungen auf dem Weg dorthin) könnte Ihnen den Gefallen tun, ein unbekanntes Zeichen fröhlich - und geräuschlos - in ein anderes zu übersetzen! Zum Beispiel könnte das Unicode-Zeichen U+CABC zu einem Anführungszeichen (U+0027) werden, das Sie in Ihrer Anwendung zu blockieren versuchten, aber leider hat die DB beschlossen, es zu erzeugen und dem Angreifer zu erlauben, seinen SQLi-Angriff direkt durch Ihre Abwehr hindurch zu starten.

Ja, ich habe den verlinkten Artikel veröffentlicht, aber als ich dieses Verhalten ursprünglich entdeckte, habe ich war schockiert.

1 Stimmen

"Es ist allgemein anerkannt, dass eine starke Eingabevalidierung SQL-Injection-Angriffe verhindern kann". - FALSCH - wie in Ihrem Artikel dargelegt, ist es vergeblich zu versuchen, Eingaben zu bereinigen - die beste Praxis ist heute, nur parametrisierte Abfragen zu verwenden.

0 Stimmen

Ja, natürlich, aber es ist immer noch gängige Praxis, sich allein auf die Eingabevalidierung zu verlassen - und bis vor kurzem war es möglich, die offenbar Angriffe auf diese Weise zu blockieren, egal ob es sich um eine schlechte Praxis handelt oder nicht.

0 Stimmen

Oh, und falls es nicht klar war - der Artikel erklärt, wie man einen Angriff trotz der Verwendung von SP/PQ (in einigen Situationen) durchführen kann.

7voto

Jared Oberhaus Punkte 14325

0 Stimmen

Zustimmen +1. Fortgeschrittenes Rootkitting ist wie die Einnahme der roten Pille in der Matrix.

0 Stimmen

Wenn Sie Zugang zu einer Echtzeituhr haben, können Sie* feststellen, dass Ihr Betriebssystem vom Hypervisor Zyklen gestohlen bekommt. Die einzige Möglichkeit, dies zu verhindern, besteht darin, im Hypervisor auch ein Root-Antivirusprogramm laufen zu lassen.

0 Stimmen

Kann auch durch den Systemverwaltungsmodus (SMM) gestohlen werden.

6voto

YogoZuno Punkte 406

Einer der am wenigsten ausgeklügelten Angriffe, die ich je gesehen habe, war einer der effektivsten. Ein mir bekannter Tester arbeitete am Test einer VB6-Anwendung unter Win98. Die Anwendung war so aufgebaut, dass sie sich in einem Fenster mit fester Größe öffnete. Der schlaue Tester erstellte eine Verknüpfung zu der Anwendung und stellte die Verknüpfung so ein, dass die Anwendung maximiert geöffnet wurde. Als die Anwendung in einer viel größeren Größe geöffnet wurde, als der Entwickler jemals beabsichtigt hatte, wurde ein Datensteuerelement sichtbar, das normalerweise nicht sichtbar wäre. Durch manuelles Klicken auf das Datensteuerelement gelang es dem Tester, zu einem Datensatz zu gelangen, den er nicht hätte sehen dürfen, und ihn zu ändern...

0 Stimmen

Ich will ja nicht nerven, aber es hört sich so an, als würde sich diese Anwendung direkt mit der DB verbinden - in diesem Fall hätte der Benutzer bereits viel mehr Zugriff als vom Programmierer beabsichtigt, da er sich einfach selbst mit der DB verbinden könnte!

0 Stimmen

Angenommen, der Benutzer kannte den Benutzernamen und das Passwort, die in die Anwendung eingebettet sind, dann ja...

0 Stimmen

Diese Programmierpraxis war in Umgebungen üblich, in denen die maximalen Werte oder Längen der Typen zu restriktiv waren. Die Programmierer verwendeten die Steuerelemente als Variablen, da sie einen größeren Wert im Speicher ablegen konnten. Der zusätzliche Vorteil war, dass man die Fehlerbehebung durch Größenänderung des Fensters durchführen konnte.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X