Icecast: Buffer Overflow trotz snprintf()

Eine Sicherheitslücke in dem Streaming-Media-Server Icecast hat zur Folge, dass ein entfernter Angreifer eigene Befehle ausführen kann.

Ursache ist ein Fehler, der beim Verarbeiten von HTTP-Headern auftreten kann. Genauer gesagt kann es hier zu einem Buffer-Overflow-Fehler auf dem Stack kommen. Dies gschieht, weil die snprintf()-Funktion im Icecast-Code nicht korrekt verwendet wird. Gewöhnlich gilt die snprintf()-Funktion als eine sichere Variante von sprintf(), weil sie die Ausgabe abschneidet, falls der bereitgestellte Puffer zu klein ist. Allerdings kann es  bei einem snprintf()-Aufruf immer noch zu einem Buffer Overflow kommen, falls die Länge des Puffers beim Aufruf falsch angegeben wird. Ein weiteres
Problem besteht darin, dass die snprintf()-Funktion lediglich die Zahl der Bytes zurückgibt, die es hätte schreiben können, wäre der bereitgestellte Puffer groß genug gewesen. Es gibt also nicht die eigentliche Anzahl geschriebener Bytes zurück.

Diese Eigenschaften der snprintf()-Funktion führen im Icecast-Code dazu, dass es zu einem Stack-Overflow-Fehler im Code zum Verarbeiten des HTTP-Headers kommen kann. Das Problem tritt auf, wenn der Angreifer einen sehr langen HTTP-Header an den Icecast-Server sendet.

Betroffen sind die Versionen 2.4.0 bis inklusive 2.4.3.

E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Nach oben