Hlavní navigace

Zero day zranitelnost Linuxu způsobená emulátorem SNES

Petr Krčmář

Bezpečnostní odborník Chris Evans zveřejnil novou zero day zranitelnost, která ohrožuje linuxové distribuce. Překvapivě za problémem stojí emulátor SNES, který je integrován do systémových knihoven.

S kuriózní chybou přišel Chris Evans, který zároveň předvedl velmi spolehlivý exploit. K jeho spuštění stačí, aby uživatel navštívil upravenou webovou stránku, na které je umístěn zvukový soubor s příponou .flac nebo .mp3. Ve skutečnosti jde ale o audio soubor ve formátu SPC – hudební soubor z herní platformy Nintendo SNES.

Chyba byla předvedena na distribucích Fedora 25 a Ubuntu 16.04 LTS, ale pravděpodobně bude funkční i na dalších distribucích. Evans předvedl, jak pomocí upraveného hudebního souboru stáhne a spustí libovolný kód, který pak poběží s právy uživatele, který se soubor pokusil přehrát.

Názorně je to vidět na dvou krátkých videích, kde je demonstrováno prosté spuštění kalkulačky.

Na exploitu je zajímavé to, že využívá chybu v knihovně GStreamer. Ta dovoluje mimo jiné přehrávat zvukové soubory z herní konzole SNES a dělá to pomocí emulace zvukového procesoru Sony SPC700 založeného na MOS 6502.

Konkrétně je problém v knihovně Game_Music_Emu, která takto dovoluje emulovat různý starý hardware právě pro potřeby přehrávání zvukových souborů. Právě v emulaci SPC se ale nacházejí dvě vážné chyby, které je možné zneužít a uniknout z emulátoru ven. Evans vše velmi podrobně rozepsal na svém blogu.

Pro zneužití chyby je potřeba hudební soubor otevřít tak, aby k jeho zpracování byl použit právě GStreamer. Ten je ale automaticky volán například ve správci souborů Nautilus, video přehrávači Totem nebo prohlížeči Chrome (ten je použit v ukázce).

Tak to je on, zvukový čip v SNES
Autor: Wikimedie, CC BY-SA 3.0

Tak to je on, zvukový čip v SNES

Podstatné je, že takto zneužitá chyba může například uživateli odcizit veškerá data, nainstalovat libovolný malware nebo jinak libovolně zneužít přístupu do systému. Sám Evans uvádí, že chybějící sandboxing (oddělení aplikací) výrazně přispívá ke zneužitelnosti chyby. Žijeme ve světě, kde by sandboxy pro parsování médií měly být povinné, píše na svém blogu a dodává, že je tu jistá naděje na změnu, protože jeho dřívější odhalení už přiměla vývojáře vytvořit sandbox pro Gnome Tracker.

Zároveň vysvětluje, že dopad exploitu závisí na konkrétní distribuci. V Ubuntu je například příslušná knihovna gstreamer1-plugins-bad  nainstalována už v základu, pokud uživatel při instalaci vybral podporu formátu mp3. Autoři Fedory se GStreamer rozhodli rozdělit do několika různých balíků a ve výchozí instalaci knihovna Game Music Emu chybí. Fedora ale ochotně nabídne její instalaci, pokud se uživatel pokusí otevřít relevantní zvukový formát.

Chris Evans nedávno zveřejnil podobný problém týkající se emulace NES, kdy byl schopen obejít 64bitový ASLR pomocí přehrávání zvukových souborů NSF. Problém se ale týkal staré verze knihovny GStreamer 0.10.x, takže exploit fungoval jen na velmi starých distribucích. Bylo potřeba mít přesně verzi Ubuntu 12.04.5.

Našli jste v článku chybu?