19 Jahre alte Lücke in Kompressionsalgorithmen LZO und LZ4
Der Sicherheitsforscher Don A. Bailey bietet eine sehr ausführliche Analyse eines Fehlers im Kompressionsalgorithmus LZO und dessen jüngerer Implementation LZ4, den er entdeckte und die Fachwelt alarmierte, dabei aber nicht erwähnt, dass real kaum jemals Chancen auf eine Ausnutzung des Fehlers bestehen.
Der Algorithmus LZO/LZ4 ist wegen seiner Effizienz sowohl in proprietären Umgebungen als auch im Open-Source-Umfeld weit verbreitet. Er zeichnet sich eher durch Geschwindigkeit – er ist rund fünf mal schneller als zlib und bzip – als durch einen besonders guten Kompressionsfaktor aus.
So ist er in allen Linux-Distributionen heute unter dem Paketnamen lzop einer der Standards zur Kompression, wird zudem im Bootmanager Grub und im Kernel, in Dateisystemen wie ZFS und BTRFS und SquashFS, in vielen eingebetteten Geräten sowie zahlreichen Routern eingesetzt. Auch in wichtigen Multimedia-Applikationen wie MPlayer2, LibAV und FFmpeg steckt LZ4. Selbst im Kernel von Samsungs Smartphones und Tablets kommt der Algorithmus zum Einsatz. Bei Debian gibt es mittlerweile eine Liste der betroffenen Applikationen.
Bailey hat einen Integer-Überlauf entdeckt, den der LZO-Entwickler Oberhumer allerdings als theoretisch bezeichnet. Zum Auslösen des Überlaufs, der nur 32-Bit-Systeme betrifft, wäre ein 16 Megabyte großer manipulierter Datenblock vonnöten, alle Implementationen und potentiell betroffenen Applikationen lassen allerdings maximal Blockgrößen von acht Megabyte zu, die meisten noch weniger.
Yann Collet, Spezialist für Kompressionsalgorithmen wirft Bailey in einem kritischen Blogeintrag Sensationsmache im Nachgang von Heartbleed vor. Besonders die schnelle Veröffentlichung erhöhe das theoretische Risiko, dass doch ein findiger Kopf eine Möglichkeit zur Ausnutzung finde. Collet behauptet außerdem, Bailey habe die Lücke nicht entdeckt, sondern bereits vor einem Jahr Ludwig Strigeus, der Autor von µTorrent, der sie zumindest für LZ4 auch beseitigt habe. Collet merkt noch an, eine solche Vermarktung von Sicherheitslücken desensibilisiere die Öffentlichkeit für die wirklich gefährlichen Sicherheitslücken.
Obwohl keine reale Gefahr durch diese Lücke besteht, wurde sie mittlerweile breitflächig geschlossen. LZO selbst liegt in korrigierter Version 2.0.7 vor, der Linux-Kernel schließt die Lücke in Version 3.15.2. Für FFmpeg und LibAV liegen ebenfalls neue Versionen vor.