Drei Schwachstellen in unzip

In dem Unzip-Programm wurden kürzlich drei Schwachstellen entdeckt und korrigiert. Ein entfernter Angreifer kann diese ausnutzen, um Befehle mit dem Rechten des Anwenders auszuführen. Alle drei Schwachstellen können mit Hilfe einer speziell konstruierten zip-Datei ausgenutzt werden. Wird diese Datei dann mit der ‘-t’ Option von Unzip aufgerufen, so werden Overflows im Unzip-Programm-Code ausgelöst, die es dem Angreifer gestatten, beliebige Befehle auszuführen.

Die drei Sicherheitslücken betreffen die folgenden Codeteile:

  • CRC32 Verification: Der Code zum Prüfen der CRC32 Checksumme enthält einen Heap-Overflow-Fehler, der von dem Angreifer ausgenutzt werden kann. Der Programmierfehler befindet sich in der »TestExtraField()«-Funktion. Das Problem tritt hier beim Verarbeiten der »ebLen«-Variable auf. Diese wurde bisher zwar korrekt auf zu grosse Werte geprüft, allerdings nicht auf zu kleine Werte. Das ist kritisch, da nämlich »ebLen < EB_HEADSIZE« zur Folge hat, dass es zu einem Heap Overlfow kommt.Der neue Unzip-Code umgeht dieses Problem durch eine zusätzliche »If()«-Abfrage für zu kleine Werte für »ebLen«.
  • Out-of-Bound Write: Eine Sicherheitslücke in der »test_compr_eb()«-Funktion hat ebenfalls zur Folge, dass ein entfernter Angreifer einen Heap Overflow ausnutzen kann.
  • Out-of-Bound Read: Eine Schwachstelle in der »getZip64Data()«-Funktion führt dazu, dass der UnZip-Code bei bestimmten zip-Dateien versucht aus einem Heap-Buffer mehr Bytes zu lesen als dieser enthält.

Betroffen von diesen Schwachstellen sind die Versionen 6.0 und älter.

Nach oben