I et teknisk og interessant indlæg fortæller sikkerhedsbloggeren Chris Evans om, hvordan det er muligt at kompromittere Ubuntu Desktop i den ældre variant 12.04.5 via musikformatet NSF fra Nintendo Entertainment System (NES).
Selvom Ubuntu 12.04.5 har nogle år på bagen er den - da der er tale om en LTS-udgave - stadig officielt understøttet af firmaet bag styresystemet Canonical.
Evans har lagt et Proof-of-Concept exploit ud i form af en nsf-fil, som frit kan downloades. Filen skal omdøbes til at have en .mp3-endelse, før angrebet fungerer.
Men så kan det også aktiveres alene ved at surfe hen til mappen med filen via Ubuntus Nautilus-filbrowser.
Herefter skulle PoC'et, som Version2 ikke har testet, automatisk få styresystemets lommeregner-applikation til at åbne.
Angrebet lader sig gøre via en sårbarhed i libgstnsf.so, en audio-dekoder, som ligger i gstreamer-0.10.
Og Ubuntu 12.04 bruger gstreamer-0.10 til al lydhåndtering. Ubuntu 14.04, bemærker Evans, er tilsyneladende også påvirket, da denne udgave af styresystemet som standard også indeholder gstreamer-0.10.
Men i Ubuntu 14.04 bliver mediehåndteringen dog i udgangspunktet klaret af den ikke-sårbare gstreamer-1.0.
»De præcise omstændigheder, hvorunder Ubuntu 14.04 anvender den sårbare gstreamer-0.10 er uklare,« bemærker Chris Evans.
Emulerer Nintendo CPU
Sårbarheden udspringer af, at NSF-musikfiler ikke bliver behandlet som andre - eksempelvis mp3 - musikfiler. NSF-formatet bliver afspillet ved faktisk at emulere end NES-CPU og dennes lyd-hardware i realtid.
Det vil sige, at gstreamer-plugin'en skaber et virtuelt 6502 CPU-miljø. Og i det miljø er der flere sårbarheder, som kan læses i tekniske detaljer i Evans indlæg.
Overskrifterne på problemerne er 'Lack of checking ROM size when mapping into 6502 memory and bank switching' og 'Ability to load or bank switch ROM to writable memory locations'.
Chris Evans har flere bud på angrebs-scenarier, hvordan Nintendo-musik-formatet kan bruges til at kompromittere en sårbar Ubuntu-desktop. Et eksempel - ganske oplagt - er en vedhæftet fil i en mail, der kan kompromittere systemet, når filen bliver åbnet. Igen skal filen i forbindelse med angrebet hedde .mp3 til slut i stedet for .nsf, selvom der altså er tale om en nsf-fil.
Det skyldes, at de fleste systemer ikke ved, hvad de skal stille op med .nsf-filer. Men når de hedder .mp3, så bliver de genkendt som mediefiler.
Og de fleste gstreamer-baserede medie-afspillere forholder sig ifølge Evans ikke til fil-endelsen, altså i dette tilfælde mp3. I stedet forsøger medieafspillerne at autodetektere formatetet for så at indlæse den rette dekoder. Og det kan altså ende med, at den sårbare libgstnsf.so-dekoder bliver indlæst.
Et andet angreb, som Chris Evans nævner, er situationen fra før med Nautilus-filbrowseren, hvor det alene ved at tilgå mappen med angrebs-filen skulle være muligt at kompromittere et sårbart system.
Det skyldes, at Nautilus forsøger at autogenerere en passende thumbnail til filen, og det kan udløse angrebet. En lignede angrebsvektor kan udnyttes ved at puttee filen på en usb-nøgle, som så kompromitterer systemet, når brugeren tilgår indholdet på nøglen.
0-dages-sårbarhed
Evans kalder selv angrebet for en 0-dages-sårbarhed, hvilket generelt betyder, at et sikkerhedshul ikke er patched i forbindelse med, at detaljer om en sårbarhed bliver frigivet.
Chris Evans fortæller, at han har en masse erfaring med såkaldt 'co-ordinated disclosure,' hvor frigivelsen af sårbarheds-detaljer koordineres med den ansvarlige softwareleverandør. Men den slags har Chris Evans ifølge eget udsagn dårlige erfaringer med.
Han fortæller i den forbindelse, at han engang ventede i over et år på, at Apple fik fixed en Safari-sårbarhed.
Sikkerhedsbloggeren fremhæver her Googles Project Zeros disclosure-policy, der - som regel - giver softwareleverandøren 90 dage til at fikse en sårbarhed.
Og så peger han desuden på, at den konkrete Nintendo-sårbarhed ikke skulle være særlig alvorlig.
»Bare rolig, denne specifikke 0-dages er meget lille, påvirker kun meget gamle Linux-distributioner,« lyder vurderingen fra Chris Evans.
Han forsvarer i øvrigt også sin 0-dages-offentliggørelse med, at der findes en simpel patch til sårbarheden. Nemlig at køre en kommando, som fjerner den sårbare fil:
sudo rm /usr/lib/x86_64-linux-gnu/gstreamer-0.10/libgstnsf.so
Filen kan ifølge Evans bare fjernes, da både Ubuntu 12 og 14 har hele to forskellige kodebaser til at afspille NSF-filer med.
På Reddit er flere brugere uenig i Evens' fremgangsmåde med at offentliggøre sårbarheden, før den er patched. Eksempelvis skriver brugeren depressed_space_cat:
»Jeg synes, deres beslutning om at undgå ansvarlig disclosure er dum og farlig. Hvordan kan det at poste til deres obskure blog, hvor Ubuntu/gstreamer fok sandsynligvis ikke ser det, være bedre end at maile de relevante sikkerhedshold (eller åbne relevante bugs)?,« spørger Reddit-brugeren.