Der VLC-Player ist ein freier Medien-Player für zahlreiche Audio- und Videoformate. Eine Sicherheitslücke in der Software hat zur Folge, dass ein entfernter Angreifer Befehle mit den Rechten des Anwenders ausführen kann. Die Attacke ist mit Hilfe einer geschickt konstruierten Ogg-Datei möglich.
Ursache für die Schwachstelle ist ein Heap-Overflow-Fehler in der Quelltextdatei “modules/demux/ogg.c”. Die darin implementierte Funktion “Ogg_DecodePacket()”, die für das Dekodieren von Ogg-Dateien zuständig ist, enthält folgende fehlerhafte Zeilen:
...
if( p_stream->p_headers )
{ memcpy((unsigned char *)p_stream->p_headers + p_stream->i_headers - p_oggpacket->bytes, p_oggpacket->packet, p_stream->i_headers);
}
else
{
...
Die “memcpy()”-Funktion wird hier angewiesen “p_stream->i_headers” Bytes von “p_oggpacket->packet” nach “p_stream->p_headers + p_stream->i_headers – p_oggpacket->bytes” zu kopieren. Allerdings ist die angegebene Zahl an Bytes, die kopiert werden sollen, falsch. Denn diese Anzahl ist in p_oggpacket->bytes und nicht in p_stream->i_headers abgelegt. Diese falsche Angabe hat zur Folge, dass ein Angreifer den Heap-Speicher überlaufen lassen kann. Die korrigierte Version sieht so aus:
...
if( p_stream->p_headers )
{ memcpy((unsigned char *)p_stream->p_headers + p_stream->i_headers - p_oggpacket->bytes, p_oggpacket->packet, p_oggpacket->bytes);
}
else
{
...
Betroffen sind die Versionen vor 2.0.2.

