Objavljeno: 31.8.2010 | Avtor: Edi Strosar | Monitor Julij-avgust 2010

Ali zaupate omrežnim karticam?

Nič ni več sveto, bi lahko rekli. Zlonamerna programska oprema je namreč preskočila v svet, kjer jo je skorajda nemogoče razkriti - v svet izven nadzora centralnega procesorja, na vezja omrežnih kartic in v grafične procesorje.

Leta 1983 je Ken Thompson, eden izmed očetov sistema UNIX, objavil dokument z naslovom "Reflections on trusting trust" za katerega je kasneje prejel tudi prestižno Turingovo nagrado. V besedilu je predstavil koncept implementacije stranskih vrat v UNIXov prijavni program preko "trojanskega" C prevajalnika. Njegova genialna zamisel je slonela na dveh preprostih dejstvih: a) programerji zaupajo prevajalnikom in b) pregleduje se le izvorna koda ne pa tudi prevedena koda.

Thompson je v svojem besedilu izpostavil enega izmed temeljih problemov varnosti: komu zaupati in zakaj. Svoje razmišljanje pa je strnil z naslednjim legendarnim stavkom: "Ne moreš zaupati kodi, ki je nisi napisal sam."

Zanimivo, vendar kakšno zvezo ima zdaj to z omrežnimi karticami, boste vprašali. Danes ima skoraj kos strojne opreme mikroprocesor, ki poganja strojno-programsko opremo (firmware/embedded software). Uporabniki tej opremi seveda popolnoma zaupamo, saj smo prepričani, da nikakor ne more ogroziti varnost naših sistemov in omrežij. S tem smo spregledali Thompsonovo načelo, ki ga lahko preslikamo tudi v segment stojne opreme: če nismo sami programirali (E)EPROM (izbrisljiv/programirljiv bralni pomnilnik), potem zadevi ne moremo zaupati. OK, to je seveda ekstrem, kajti popolnoma jasno je, da nima vsakdo ustreznega znanja, da bi lahko brskal tako globoko. Programatorji za EPROMe se tudi ne valjajo ravno v vsakem domu, povratno inženirstvo strojnih naprav pa deluje kot močno uspavalo celo pri največjih zanesenjakih. Žal pa ti argumenti ne odpravijo osnovne težave.

Varnostni raziskovalci se tega problema še kako dobro zavedajo in nas s svojimi odkritji pogosto opomnijo, kako nevredna zaupanja in ranljiva je strojna oprema. Na varnostni konferenci CanSecWest sta raziskovalca Loic Duflot in Yves-Alexis Perez požela bučni navdušenje, ko sta demonstrirala kompromitiranje posodobljenega operacijskega sistema Linux - prek omrežne kartice seveda in menda z enim samim paketkom. Verjetno je odveč omenjati, da je obiskovalce takih konferenc zelo težko impresionirati.

Detajli izkoriščanja pomanjkljivosti sicer niso bili javno objavljeni, vendar lahko tudi iz odločitve raziskovalcev - da podrobnosti, uporabljena orodja in samo izkoriščevalno kodo ne nameravajo nikdar javno objaviti - sklepamo, da gre za kritično vrzel. Po znanih informacijah gre za klasično prekoračitev sklada (stack overflow) v strojno-programski opremi nekaterih Broadcom NetXtreme omrežnih kartic. Kot zanimivost, omenjene kartice uporabljajo procesor z RISC naborom ukazov, izkoriščanje prekoračitev medpomnilnika na takšni arhitekturi pa se precej razlikuje od tiste na x86.

Konkretno prekoračitev izkorišča funkcionalnost eksotičnega protokola ASFv2 (Alert Standard Format), namenjenega upravljanju na daljavo in nadzoru naprav brez nameščenega operacijskega sistema. Privzeto je podpora protokolu na ranljivih omrežnih karticah sicer izključena, vendar sta raziskovalca potrdila, da je ranljivost mogoče izkoristiti v primeru, ko je ASF protokol omogočen, čeprav je naprava izključena. Pošiljanje specifičnega WOL (Wake-On-LAN) paketka namreč sproži prebujanje naprave. Obstojnost kode tudi po vnovičnem zagonu je dosežena z modifikacijo (po domače "flešanjem") strojne-programske opreme (firmware) v EEPROM-u omrežne kartice. Velja omeniti, da izkoriščanje vrzeli ni pogojeno z različico operacijskega sistema, deluje torej na vseh platformah. Korporacija Broadcom je seveda že objavila ustrezne popravke.

Ranljivosti omrežnih kartic je sicer začel že pred časom raziskovati italijanski strokovnjak za računalniško varnost Arrigo Triulzi. Svoja odkritja je objavil v predstavitvi z naslovom "Project Maux". Tudi v tem primeru podrobnosti in koda niso bile javno objavljene, ranljive pa naj bi bile nekatere Broadcom omrežne kartice, ki uporabljajo sistemski nabor "Trigon". Program, ki ga je razvil Triulzi, omogoča napadalcu popoln nadzor nad računalnikom, kompromitiranje sistema pa poteka v naslednjih korakih: koda najprej "fleša" strojno-programsko opremo omrežne kartice, kar je seveda mogoče le pri napravah, ki ne preverjajo digitalnega podpisa posodobitev. Ker pomnilnik vmesnika nima dovolj prostora za namestitev ukazne lupine, preko vodila PCI vzpostavi komunikacijo z grafično kartico (t. i. most PCI-to-PCI) in začne uporabljati njen pomnilnik ter grafični procesor za izvajanje psevdoSSH terminala.

Koda, nameščena v omrežni kartici, je torej nekakšen korenski komplet (rootkit), ki opravlja funkcijo filtra. Ko napadalec pošlje ustrezno označen "čudežni paketek", ga filter prepozna ter posreduje grafičnemu procesorju v obdelavo, v nasprotnem ga preusmeri k omrežnemu gonilniku operacijskega sistema. Mimogrede, napadalec lahko prek krmilnika za neposredni dostop do pomnilnika (DMA, Direct Memory Access Controller), ki ga omogoča vodilo PCI, dostopa do fizičnega pomnilnika brez posredovanja centralne procesne enote. Gesla lahko torej prebere naravnost iz delovnega pomnilnika. Odkrivanje te "telovadbe" pa je na ravni operacijskega sistema praktično nemogoče.

Nekatere zanimivosti o projektu "Maux" je Arrigo Triulzi razkril v tudi intervjuju za slovenske tehnološke dveri:

www.slo-tech.com/clanki/09010/

Projekt "Maux" v praksi: dostop do psevdoSSH terminala s pomočjo namenskega orodja "nicssh" Vir: slo-tech.com

V luči številnih raziskav o t. i. strojnih korenskih kompletih (firmware/hardware rootkits), ki so bil objavljena v zadnjih letih -- ACPI/EFI/PCI/Ring -2/Ring -3 kompleti - lahko z gotovostjo trdimo, da so varnostni raziskovalci svojo pozornost preusmerili na strojno opremo in vgradne sisteme (embedded systems). To niti ne preseneča, saj so namizni/strežniški operacijski sistemi postali pravcate trdnjave, naphane s celim arzenalom varnostnih mehanizmov. Slika je seveda precej drugačna na področju strojne opreme, kjer je število implementiranih varnostnih mehanizmov (pre)pogosto enako nič.

Rešitve seveda so na voljo. Najpogosteje se omenja TC (Trusted Computing) oz. TXT (Trusted eXecution Technology), kakor tehnologijo imenuje Intel, in uporabo čipa TPM (Trusted Platform Module), ki bi preverjal integriteto vsake komponente v računalniku. Mnogim se taka rešitev ne zdi najprimernejša zaradi bojazni pred upravljanjem digitalnih pravic (DRM, Digital Rights Management), zaklepanja na določenega izdelovalca (vendor lock-in) in izgube anonimnosti, s katerimi se pogosto enači TC/TXT/TPM.

Priznana poljska strokovnjakinja Joanna Rutkowska, ki ima s "sesuvanjem" strojne opreme precej izkušenj, je zagovornica rešitev, ki jih ponuja virtualizacija oz., natančneje, IOMMU (Input/Output Memory Managenet Unit). Gre za enoto, namenjeno upravljanju pomnilniškega prostora vhodno/izhodnih naprav ter njihovo virtualizacijo. Po njenih besedah tak pristop zagotavlja učinkovito zaščito pred strojnimi korenskimi kompleti, saj omogoča separacijo in "premik" (dejansko gre seveda za virtualizacijo) gonilnikov v nekoliko deprivilegiran obroč 1.

Zlonamerna koda lahko sicer še vedno kompromitira strojno opremo (npr. omrežno kartico), vendar je obseg njenega delovanja bistveno bolj omejen. Tudi uporaba neposrednega dostopa do pomnilnika (DMA) je omejena na deprivilegiran obroč. Po mnenju Rutkowske naj bi bila kombinacija TXT in VT-d (Intelova različica IOMMU) popolna zmaga.

Kakorkoli obračamo, na koncu vedno pristanemo pri zaupanju. Uporabniki pač zaupamo korporacijam in njihovim izdelkom. Še posebej je to očitno pri uporabi zaprte kode, kjer je znanih primerov implementacije stranskih vrat (backdoor) in korenskih kompletov za celo zbirko (zadnji zgled: www.kb.cert.org/vuls/id/154421). Za podobna skrita presenečenja ni imuna niti strojna oprema: www.flylogic.net/blog/?p=25. Teoretično možnost, da bi kakšna zlobna državna agencija pomislila na vgradnjo sofisticiranega korenskega kompleta v kos strojne opreme, pa prepustimo raje zagovornikom teorij zarote. Vsaj zaenkrat.

Smo uporabniki torej lahko z razlogom zaskrbljeni zaradi preusmeritve pozornosti varnostnih raziskovalcev na strojno opremo? Ah, seveda ne. Dokler je spletno ribarjenje (phishing) tako učinkovito in programska oprema izdatno hroščata, ni razloga za paniko. Tudi v informacijski varnosti namreč veljajo načela ekonomije in tukaj se donosnost naložbe trenutno ne izteče.

Podrobneje

Arrigo Triulzi, "Project Maux": www.alchemistowl.org/arrigo/Papers/Arrigo-Triulzi-CANSEC10-Project-Maux-III.pdf

Loic Duflot/Yves-Alexis Perez: www.ssi.gouv.fr/IMG/pdf/csw-trustnetworkcard.pdf

Joanna Rutkowska: theinvisiblethings.blogspot.com/2010/04/remotely-attacking-network-cards-or-why.html

Ken Thompson, "Reflections on trusting trust": cm.bell-labs.com/who/ken/trust.html

Naroči se na redna tedenska ali mesečna obvestila o novih prispevkih na naši spletni strani!

Komentirajo lahko le prijavljeni uporabniki

 
  • Polja označena z * je potrebno obvezno izpolniti
  • Pošlji