Objavljeno: 10.3.2014 06:00

Stavek goto povzročil ranljivost v SSL/TLS

V zadnjih tednih so odkrili dve ranljivosti pri implementaciji protokolov SSL/TLS, ki sta si presenetljivo podobni. Apple je svoja operacijska sistema iOS in Mac OS X zakrpal kmalu po odkritju, potem pa so dobra dve tedna pozneje sorodno ranljivost našli še v odprtokodni knjižnici GnuTLS, ki je tudi že zakrpana v verziji 3.2.12.

Obema je skupno tudi to, da je koda v prizadetem delu odprta in javnosti dostopna, pa to ni dolgo časa ni odkrilo napake. Napaka v Applovi kodi, o kateri smo že pisali, je posledica ponovljenega stavka goto v kodi. Ta se za pogojnim stavkom if ponovi dvakrat, kar je ena izmed bolj zahrbtnih napak. Ker zanki ne sledijo zaviti oklepaji, je prevajalnik v skladu s sintakso jezika C++ ne razume kot blok, ampak je vsebina zanke if le prvi stavek goto. Drugi je samostojen in se izvede vsakokrat. Zaradi tega rutina preskoči pomemben del preverjanja veljavnosti certifikata, kar v praksi pomeni, da mu lahko podtaknemo kakšnega, ki je podpisan s katerimkoli drugim veljavnim ključem, pa bo preverjanje pristnosti vseeno uspešno.

Zelo podobna napaka pri uporabi stavkov goto se je primerila tudi v knjižnici GnuTLS, ki jo uporablja cela vrsta odprtokodne programske opreme. Tu več pogojnih stavkov if kliče napačno interno funkcijo (cleanup namesto fail), kar ima sorodne posledice. Tudi GnuTLS je mogoče pretentati in mu podtakniti certifikat X.509, ki ga ni podpisala obiskana stran. Omenjena ranljivost je po nekaterih podatkih v GnuTLS obstajala vse od leta 2005 (!), pa je ni odkril nihče.

Eden izmed argumentov za uporabo odprtokodne programske opreme je prav možnost pregleda kode, ki bi v teoriji morala preprečiti tovrstne spodrsljaje. Toda to deluje le, če ljudje kodo dejansko ponovno preberejo, preverijo in prevedejo. Samo odprtje kode, ki leži v repozitorijih in je nihče ne kontrolira, seveda ne koristi nikomur. Prav GnuTLS je problematičen, saj so že v preteklih letih na internetu redno pojavljale kritike, da je napisan zelo pomanjkljivo in površno, kot da avtorji ne bi bili kos nalogi. Prav mogoče je, da je odkritje ranljivosti v Applovi opremi vzpodbudilo natančnejši pregled GnuTLS, ki je potem pokazal sorodno napako. Ni torej res, da odprtje kode avtomatično prepreči tovrstne napake.

Pedantni programerji so bržkone že zastrigli z ušesi ob omembi stavkov goto. Po Böhm-Jacopinijevem izreku je mogoče vsak program napisati brez uporabe stavka goto. Šola lepega programiranja uči, da je uporaba teh stavkov nezaželena, ker zmanjšuje preglednost kode in v primeru neprevidne rabe daje kodo (»špagetasta koda«), ki jo je težko popravljati in razhroščevati. Vseeno številni programski jeziki ukaz goto še podpirajo in v nekaterih primerih lahko z njegovo pametno uporabo dejansko poenostavimo in skrajšamo program.

Zato bi bilo krivično odkriti napaki pripisati stavku goto. Razlog sta nepazljivost in malomaren (ali neobstoječ) pregled kode.

Več novic

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

Komentirajo lahko le prijavljeni uporabniki

Najbolj brano

  • Google zapira zadnja vrata za blokiranje oglasov

    Google bo s prihajajočimi posodobitvami spletnega brskalnika Chrome dokončno onemogočil delovanje priljubljenih razširitev za blokiranje oglasov, kot je uBlock Origin.

    Objavljeno: 16.6.2026 10:00
  • Trumpov telefon je skoraj popolna kopija HTC-jevega

    Razstavljanje težko pričakovanega pametnega telefona Trump Mobile T1, ki so ga opravili strokovnjaki pri iFixit, je potrdilo prejšnje sume ocenjevalcev opreme, da je naprava skoraj popolna kopija obstoječega modela HTC U24 Pro.

    Objavljeno: 12.6.2026 09:00
  • Droni bodo po novem leteli brez GPS-a in zemljevidov

    Raziskovalci z nizozemske Tehnološke univerze v Delftu so po vzoru čebel razvili učinkovit navigacijski sistem za drone Bee-Nav.

    Objavljeno: 9.6.2026 10:00
  • Google nam bo zaklenil ekosistem Android

    Dolgo vrsto let je bila ena izmed glavnih prednosti ekosistema Android njegova odprtost, saj za razliko od konkurenčnega Applovega iOS-a ni imel omejitev za nameščanje aplikacij. Resda je Google preverjal aplikacije, ki jih je uvrstil na svojo tržnico Play Store, a vsakdo je lahko mimo te tržnice namestil karkoli, če je z interneta prenesel namestitveno datoteko. Postopek se imenuje sideloading in je na primer na iOS onemogočen. To se bo zdaj zgodilo tudi na Androidu.

    Objavljeno: 19.6.2026 05:00
  • Apple z najcenejšim MacBookom v zgodovini podrl vse rekorde

    Odziv kupcev na novi prenosnik MacBook Neo je popolnoma presegel vsa pričakovanja, kar je podjetje spodbudilo k drastičnemu povečanju proizvodnje.

    Objavljeno: 5.6.2026 10:00
  • Nova Philipsova svetilka je umetno sonce za sobe brez oken

    Podjetje Philips je predstavilo novo stropno svetilko Philips Skylight, ki s pomočjo napredne LED tehnologije in sistema NatureConnect uspešno posnema videz ter globino prave strešne linije in v prostore prinaša ritem naravne sončne svetlobe.

    Objavljeno: 11.6.2026 09:15
 
  • Polja označena z * je potrebno obvezno izpolniti
  • Pošlji