Open Source im professionellen Einsatz

Integer Overflow in Adobe Flash Player

Der Adobe Flash Player von Adobe ist die Standardanwendung, wenn es um die Darstellung von Flash-Inhalten auf Webseiten wie Youtube geht. Bedauerlicherweise macht er immer wieder durch Schwachstellen von sich reden.

Nun hat der Hersteller selbst eine ganze Reihe von Schwachstellen in einer neuen Version des Players korrigiert. Leider heißt das auch, dass zahlreiche im Umlauf befindliche Player fehlerhaft sind. Die Schwachstellen sind laut Adobe als kritisch einzustufen, weil sie es dem Angreifer erlauben, Befehle mit den Rechten des Anwenders auszuführen. Im Klartext heißt das, dass ein Benutzer durch das Abspielen einer manipulierten Flash-Datei dem Angreifer Zugriff auf sein System gibt.

Da der Player normalerweise als gewöhnlicher Benutzer und nicht mit dem Root-Account aufgerufen wird, kann der Angreifer auf alle die Daten des Anwenders zugreifen. Sollte der Anwender unbedacht den Player als Root ausführen, kann das gesamte System kompromittiert werden.

Die gefunden Sicherheitslücken sind vielfältig: Neben einem Integer-Overflow-Fehler finden sich zahlreiche Programmierfehler, wodurch die Größen und Grenzen von Speicherbereichen nicht korrekt geprüft werden. Integer-Overflow-Fehler treten auf, wenn - einfach gesprochen - ein Integer-Wert zu groß wird. Das kann in C/C++ beispielsweise so aussehen:

#include <iostream>

using namespace std;

int main(void)
{
 unsigned int a=~0;
 unsigned int b=1;
 unsigned int c=a+b;
 //a=  11111111 11111111 11111111 11111111 
 //+
 //b=  00000000 00000000 00000000 00000001 
 //=
 //c=1 00000000 00000000 00000000 00000000
 cout << a << "+" << b << "=" << c << endl;
 //4294967295+1=0
 return 0;
}

In diesem Beispiel sind die Unsigned-Int-Werte 4 Byte (=32 Bit) breit, und damit zu klein, um die Summe "c=a+b" aufnehmen zu können. Sobald das Programm nun 1 zu a addiert, werden die 32 niedrigen Bits auf 0 gesetzt und Bit 33 auf 1. Dadurch wird das Ergebnis fälschlicherweise zu 0 statt zu 4294967296. Enthält ein Programm sicherheitsrelevante Abfragen, die auf einer solchen Integer-Operation beruhen, kann das zu falschen Entscheidungen in der Programmlogik führen.

Screenshot einer SWF-Analyse mit SWREtools (Abbildung: Sebastian Porst).

Screenshot einer SWF-Analyse mit SWREtools (Abbildung: Sebastian Porst).

Um Flash-Player-Attacken durchführen zu können, muss der Angreifer eine präparierte Datei im SWF-Format an sein Opfer senden. Wer an den Details dieses Formats interessiert, ist kann sich entweder die längliche Spezifikation durchlesen oder aber die SWFREtools (3) verwenden, um Flash-Dateien direkt zu betrachten. SWFREtools ist eine Sammlung mehrerer Programme zum Analysieren von SWF-Dateien. Die Abbildung zeigt eine Beispiel-Analyse. Auf diese Weise lassen sich kompromittierte Flash-Inhalte finden.

Betroffen sind die Flash Player Versionen 10.2.159.1 und älter.

comments powered by Disqus

Ausgabe 07/2013

Preis € 6,40

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook