neprihlásený Piatok, 22. novembra 2024, dnes má meniny Cecília
V iOS a OS X fatálna chyba eliminujúca bezpečnosť SSL

Značky: bezpečnosťiOSOS X / macOSplanétyApple

DSL.sk, 24.2.2014


V implementácii bezpečnostného protokolu SSL v operačných systémoch iOS a OS X spoločnosti Apple sa nachádzala respektíve stále nachádza fatálna bezpečnostná chyba, ktorá eliminuje základnú funkčnosť SSL, overenie identity servera.

Zistil to známy expert Adam Langley pracujúci aktuálne pre Google analýzou zdrojových kódov Apple potom ako spoločnosť v piatok vydala bezpečnostnú aktualizáciu iOS 7.0.6.

Fatálna chyba sa nachádza vo funkcii SSLVerifySignedServerKeyExchange, ktorá kontroluje správnosť kryptografického podpisu v správe ServerKeyExchange zasielanej serverom pri pripájaní sa cez SSL. Tento podpis pri využívaní šifrovacích algoritmov DHE a ECDHE potvrdzuje, že druhá strana je skutočne držiteľom privátneho kľúča certifikátu zaslaného serverom a teda ide o autentický server.

Vo funkcii ServerKeyExchange sa ale nachádza zdvojený a chybne pridaný bezpodmienečný skok goto na koniec funkcie, ktorý vždy preskakuje vlastnú kontrolu podpisu a funkcia tak vždy overí ľubovoľný chybný podpis.

Aplikácie využívajúce túto implementáciu SSL tak pri pripojení na server útočníka napríklad po podvrhnutí chybných DNS dát alebo pri man-in-the-middle útoku nerozpoznajú a užívateľa neupozornia, že server nemá k dispozícii privátny kľúč k certifikátu.

Hoci problém sa nachádza len pri šifrovacích algoritmoch DHE a ECDHE a nevyskytuje sa pri využívaní TLS 1.2, voľba šifrovacieho algoritmu aj verzie SSL / TLS je aj na serveri. Útočník sa tak môže vydávať za ľubovoľný server napríklad pre zabezpečené HTTPS stránky, vrátane samozrejme stránok bánk a podobne.


Predmetná chyba v implementácii SSL (kód: Adam Langley)



V iOS sa chyba nachádza minimálne od verzie iOS 6 a v OS X podľa zistení Langleyho zrejme až od OS X 10.9. Pre iOS Apple v piatok vydala aktualizácie iOS 7.0.6 a 6.1.6, odporúčaná je ich okamžitá inštalácia.

Pre OS X zatiaľ aktualizácia nie je k dispozícii, spoločnosť avizuje jej vydanie v blízkej budúcnosti. Riešením na OS X je využívanie prehliadačov Chrome a Firefox, ktoré využívajú implementáciu SSL NSS, vystavené riziku môžu byť ale ďalšie aplikácie okrem prehliadačov. K dispozícii je prípadne tiež neoficiálny binárny patch, jeho inštalovanie je ale vhodné skôr len pre pokročilých užívateľov s nevyhnutnou potrebou odstrániť zraniteľnosť, väčšina užívateľov by zrejme mala počkať na oficiálnu aktualizáciu.


      Zdieľaj na Twitteri



Najnovšie články:

Nový trailer filmu Minecraft
Linux v ďalšej verzii vyradí súborový systém Reiser
Odštartovaná výroba flash pamäte s 321 vrstvami
Apple má prvýkrát použiť vlastný 5G modem v iPhone v marci
Linux dostáva podporu veľkokapacitných pamäťových SDUC kariet
USA požadujú, aby Google predal Chrome a potenciálne aj Android
ISS zvýšila orbitu, aby sa vyhla troskám zo satelitu
Vzniknú fyzické zábavné tematické Minecraft parky
Qualcomm chystá Snapdragon CPU pre lacnejšie PC, majú začínať na 600 dolárov
SpaceX nezachytávala prvý stupeň Starship kvôli problému na štartovacej veži


Diskusia:
                               
 

goto? O_o
Odpovedať Známka: 4.5 Hodnotiť:
 

Keby len goto, za celý kód by som programátorovi nedal výplatu, ale bitku. Jeden z dôvodov, prečo je sprostosť používať if bez strapatých zátvoriek.
Odpovedať Známka: 0.9 Hodnotiť:
 

a ešte priradenie premennej v ife... to je hnus, velebnosti!
Odpovedať Známka: -3.8 Hodnotiť:
 

https://git.kernel.org/ cgit/linux/kernel/git/torvalds/linux.git/ tree/kernel/cpuset.c?id=refs/tags/v3.14-rc4#n227

Fuuuuj, najpouzivanejsi program na svete, 9/10 superpocitacov pouziva priradenie premennej v ife!!! Skandal na predne stranky noveho casu!!!

Tato nova (de)generacia pseudo IT odbornikov vychovavana na vysokych skolach s pochybnou kvalitou. Kam som sa do dozil...
Odpovedať Známka: 5.1 Hodnotiť:
 

A čo teraz? To, že je to súčasťou zdrojákov Linuxového jadra znamená, že je to správny programovací návyk?
Nie, priradenie v ife a nepoužívanie kučeravých zátvoriek je pach a vieš prečo? Presne kvôli chybám ako je tá, o ktorej je tento článok.
Odpovedať Známka: 4.6 Hodnotiť:
 

Nepouzivanie kuceravych zatvoriek ok. Ale priradenie v IF-e? Nevidim problem.
if (!(f=fopen('subor.txt')) {
echo 'subor sa nepodarilo otvorit';
}
Nechapem co na takomto kode nieje na prvy moment okamzite jasne (samozrejme dane priradenie musi byt kratke/jasne a okamzite pochopitelne)...
Odpovedať Známka: 4.5 Hodnotiť:
 

Pouzivat blok tam kde blok nie je je blbost.

if ()
a;

je uplne normalne.
Odpovedať Známka: -0.9 Hodnotiť:
 

Neni to blbost, ma to realne opodstatnenie kvoli nedbalosti/chybickam z nepozornosti/zaciatocnikom.
Riesi to 2 chyby:
a, budem pouzivat bodky miesto medzier -
if (podmienka)
....[prikaz v podmienke]
....[neskvor chybne pridany prikaz mimo podmienky]
b,
while(podmienka);
[toto sa nevykonava vo while, bodkociarka navyse]

Priradenie v podmienke tymto netrpy AK sa kazde priradenie uzatvorkuje navyse a ide o primitivnu podmienku. Napr.
if ((result=getErrorCode())) {
Je OK
}
if (result=getErrrorCode()) {
Je zamenitelny s porovnanim cez ==
}
Odpovedať Známka: 2.5 Hodnotiť:
 

tie zatvorky boli z medi, morgosi ich uz davno odovzdali ;)
Odpovedať Známka: 3.3 Hodnotiť:
 

No napriklad using() v C# deklaruje prave v () - ono to by vzhladom na to, co ten vyraz robi ani neslo inak. Priradenie v If aj goto sa daju vpohode prezut aj v "modernejsich" jazykoch a praktikach za podmienky, ZE TO NEROBI DREVORUBAC NA KOLENE ALE ZE MAJU RIADNY PROCES CODE REVIEW a minimalne STATICKU ANALYZU KODU.

Uninitialized variable / unreachable code / statement always true - ved to su uplne zakladne kontroly.

Na to netreba ani drahy software Eclipse aj free Visualko Express vas posle do prdele s unreachable code (detto plati aj pre ine IDE ale tieto mam akurat otvorene).

Niekto (apple devs) riesi zakladne sluzby moderneho OS a prejde im tam takyto hovnokod? Pokusil by sa niekto na projekte spravit takyto commit s code unreachable koli "goto" zaraz by mu build server strucne odpisal "gtfo".
Odpovedať Známka: 5.6 Hodnotiť:
 

Na druhej strane ked si clovek spomina ako sa na predmete Operacne systemy programovalo cez terminal v poondiatom texteditore tam ma ide j*bnut. Asi aby sme vyzerali ako haxxori alebo to mala byt hodina IT dejepisu... A ked sa clovek dozvedel, ze to nie je vysada len jeho univerzity, tak ostal bez slova...
Odpovedať Známka: 1.4 Hodnotiť:
 

o goto bolo mnoho debat, ja som nazoru, ze samotna goto konstrukcia nie je zla, zli su len programatori, ktori ju pouzivaju ked je to nevhodne. V pripade tej funkcie je to podla mna priam vhodne pouzit, ale ta chyba je samozrejme trapna :D
Odpovedať Známka: 5.6 Hodnotiť:
 

Ved pomocou goto sa jednoducho a dobre da nasimulovat koncept vynimiek v jazykoch ako C, ktore vynimky nemaju. Na samotnom goto nie je nic zle, ak sa pouziva s rozumom.
http://meyerweb.com/eric/comment/chech.html
Odpovedať Známka: 4.7 Hodnotiť:
 

nie, vynimky simuluju goto. bezpecnejsie.
Odpovedať Známka: -1.4 Hodnotiť:
 

Ty si ale riadny debil....
Odpovedať Známka: 0.0 Hodnotiť:
 

10 Print "fail"
20 Goto 10
Odpovedať Známka: 7.4 Hodnotiť:
 

dik pohonil som
Odpovedať Známka: 6.0 Hodnotiť:
 

ta aspon prezrad ktory riadok ta viac rajcuje
Odpovedať Známka: 6.4 Hodnotiť:
 

30
Odpovedať Známka: 5.3 Hodnotiť:
 

Fatalny = osudny, osudovy

nema nic spolocne s programatorskou chybou. Ale osud toho programatora by som nechcel mat...
Odpovedať Známka: -6.2 Hodnotiť:
 

je to osudova chyba
Odpovedať Známka: 5.0 Hodnotiť:
 

Definuj v IT terminologii "osud".
Odpovedať Známka: 2.0 Hodnotiť:
 

"Ak zavolas milionkrat funkciu rand(1000000) a ani raz nevrati jednotku, tak je to osud!" :)
Odpovedať Známka: 4.4 Hodnotiť:
 

Navrhujem premenovat statistiku a kryptografiu na osudologiu...
Odpovedať Známka: 8.7 Hodnotiť:
 

ak zavolas funkciu rand(1000000) milion krat, tak mas cca 36,787925723164509428579812527037% (presnejsie ta win calc nepocita) pravdepodobnost, ze ti jednotku nevrati ani raz.

ak viac nez tretinovu pravdepodobnost povazujes za osud, kludne. ale nevnucuj tieto teologicke zvasty ostatnym :)
Odpovedať Známka: 4.4 Hodnotiť:
 

Prvým odstavcom si to vychytal,
druhým si to dojebal.
Odpovedať Známka: 5.0 Hodnotiť:
 

druhy odstavec nie je mysleny nijak vazne, skor ako joke. ale teraz ked to citam, tak nebyt toho smajla na konci, vyznieva to fakt dost vazne.
Odpovedať Známka: 5.0 Hodnotiť:
 

Definicia je v pre-alpha verzii.. este musime vychytat mensie detaily, ako v apple-i :)

Odpovedať Známka: 3.3 Hodnotiť:
 

ostudova chyba
Odpovedať Známka: 6.0 Hodnotiť:
 

34 if error return 23
23 return 34
Odpovedať Známka: -5.4 Hodnotiť:
 

Nerozumiem ako presne ten dany zdvojeny riadok moze sposobit, ze sa certifikat neoveri? Ved pri prvom goto fail sa spravi return a koniec funkcie, dalej by to uz nemalo ist? Alebo mi nieco uniklo?
Odpovedať Známka: 1.4 Hodnotiť:
 

aha berem spat, chybaju zatvorecky
Odpovedať Známka: 6.2 Hodnotiť:
 

Ja zas nerozumiem tomu, ze to posiela vzdy do bloku FAIL a pritom to vzdy prejde... A pouzivanie goto, no to je pekna vizitka Apple, tymto sa pekne zosmiesnili :)
Odpovedať Známka: 1.4 Hodnotiť:
 

Pouzivanim goto sa ciastocne chranis nespravnej kompilacii a nevhodnej optimalizacii pesudojazyka do assembleru kedze v ASM je kazde if, while, for, foreach, repeat/until len GOTO (citaj JE, JNE, JZ, JNZ, JG, JGE, JA, JAE, JL, JLE, CALL, JMP, SHORT, atd.)
Odpovedať Známka: 6.9 Hodnotiť:
 

pretoze err zostane nastavene na 0 == ziadna chyba
Odpovedať Známka: 6.0 Hodnotiť:
 

jaaaaj, som ja ale krepy :D
dakujem za vysvetlenie ;)
Odpovedať Známka: 3.3 Hodnotiť:
 

podla tohto uryvku kodu to vyzera ze err ani nie je na nic nastavene, je len na zaciatku inicializovane
Odpovedať Známka: 2.0 Hodnotiť:
 

No ved to. A na konci, ked checkuju, ci ma err nejaku hodnotu (0 je ok), tak to prejde ;)
Odpovedať Známka: 0.0 Hodnotiť:
 

aha pardon tie priradenia v ifoch do err vzdy priradia vysledok checkovacej funkcie ktora asi vracia 0 ked ziaden problem nenastane
Odpovedať Známka: 2.0 Hodnotiť:
 

A ja ze preco nas na vysokej skole ucia nezabudat na zatvorky .... a hlavne vyhybat sa goto
Odpovedať Známka: 3.3 Hodnotiť:
 

Zo zátvorkami súhlasím, ale goto sa v C používa často. C nemá RAII (c++), try-finally (c#/java), scope(failure/exit) (D)... Takže na oddelenie error handlingu od zvyšku kódu ti ostáva goto.
http://dopice.sk/8Eo
Odpovedať Známka: 5.6 Hodnotiť:
 

Ako jasne, ze sa goto obcas nevyhnes, ale ked sa da, radsej pouzit nieco ine :)
Odpovedať Známka: 3.3 Hodnotiť:
 

skutočný programátor so všetkým sa ráta ako samozrejmým. :-)
Odpovedať Známka: 2.5 Hodnotiť:
 

Jasne, srat sa so zatvorkami, potom if je na tri riadky...
Odpovedať Známka: 4.5 Hodnotiť:
 

to ma ten jeden riadok naviac uplne znici
Odpovedať Známka: 2.0 Hodnotiť:
 

Your article was exnclleet and erudite.
Odpovedať Hodnotiť:
 

pekny hovnokod maju v Apple...

kod by mal byt v prvom rade citatelny pre cloveka a az potom pre nejaky pocitac...
Odpovedať Známka: 2.2 Hodnotiť:
 

Mas jedno. V ASM sa GOTO aj tak nevyhnes a to je jedine co procesor ovlada.
Odpovedať Známka: 1.4 Hodnotiť:
 

Nemáš jedno, pre človeka je goto ťažšie odhaliteľný vinník ako zátvorky
Odpovedať Známka: 4.7 Hodnotiť:
 

No nemas jedno. Pretoze Ccko vyuzivaju preto, aby to nemuseli pisat v ASM ako somari. Lenze oni to pisu aj v Ccku ako somari ;)
Odpovedať Známka: 4.4 Hodnotiť:
 

Pre tych, ktori maju jailbreak a nechce sa mi znova updatovat je dostupny patch cez Cydiu: http://dopice.sk/8Eh
Odpovedať Známka: 1.1 Hodnotiť:
 

To uz je len ironia, instalovat patch na kriticku zranitelnost z neoficialneho zdroja. Vitajte Trojania!
Odpovedať Známka: 0.0 Hodnotiť:
 

radsej tam budes mat tu chybu s oficialneho zdroja?


Odpovedať Známka: 6.0 Hodnotiť:
 

Kedze zranitelnost priamo umoznuje podvrhnut akykolvek kod na stranke, ktora sa moze tvarit ako doveryhodna bez akejkolvek moznosti obrany zo strany pouzivatela, otvara sa moznost zneuzit sirenie cervov a trojskych konov cez podvrhnute stranky bank, bezpecnostnych organizacii, oficialnych webov vyrobcov aj oblubenych obchodov aplikacii, hudby a obsahu.

Odporucam nenavstevovat stranky na tychto zariadeniach, nepouzivat ich na verejnych WiFi sietach a stiahnut a overit patch/fix na inom PC (ak je to mozne) pred instalaciou.
Odpovedať Známka: 2.5 Hodnotiť:
 

Tak to sirenie trojanov bys musel najskor odsuhlasit. Sice ti utocnik moze napriklad navstevou www.tb.sk podsunut nejakeho trojana, ale stale ho musis downloadnut a spustit. Na iOS to ma este mensi dopad a utocnik by mohol napadnut max. sandbox danej aplikacie a to jedine ak by poznal aj zranitelnost aplikacie.

Je to samozrejme diera ako vrata a v podstate sa par mesiacov dala nerusene odpocuvat SSL komunikacia prakticky celeho iOS, ale zase takyto FUD ako tu predvadzas, by som nesiril. Apple navyse u svojich sluzieb dodatocne overuje fingerprint certifikatov, takze MITM na appstore a niektore dalsie sluzby sa velmi neda pouzit.

Drviva vacsina iOS aplikacii spolieha prave na tuto systemovy SSL implementaciu, pricom TLS1.1 a vyssie je v serverovych backendoch pre mobily skor zriedkavostou (vdaka starym androidom). V pripade OSX je ten zaber mensi, pretoze to sice postihuje snad vsetky aplikacie od apple, ale nie zakonite aplikacie inych vyrobcov. Vid napriklad Chrome, Mozilla...
Odpovedať Známka: 0.0 Hodnotiť:
 

Toto je zatial prvy skutocne odborny prispevok k clanku. Dakujem.
Odpovedať Hodnotiť:
 

To nie je az tak pravda. Umiestnenim javaskriptu, flashu alebo java appletu, ktory bezne pouzivas pri svojej praci na tychto strankach spustis nieco o com si myslis ze pochadza z doveryhodneho zdroja. Takisto napr. slunecnice, filehippo alebo akykolvek iny zdroj open-source instalaciek. Vyber si.
Odpovedať Hodnotiť:
 

A zabudol si na Cydiu a ine nelegalne zdroje aplikacii. Rozhodne to nie je FUD. Je to opatrnost. Vynaliezavost utocnikov je nekonecna a naco im to ulahcovat?
Odpovedať Hodnotiť:
 

Tak programatori sa zasmiali. Ale co my ostatni?
Odpovedať Známka: 3.6 Hodnotiť:
 

Ostatni mate prilezitost citat sme, cas a ine zaujimavosti ;)
Odpovedať Známka: 6.5 Hodnotiť:
 

http://youtu.be/tIxDNo1jikE
Odpovedať Známka: 3.3 Hodnotiť:
 

Neboj, vy ostatní si aj tak nemožte dovoliť Apple produkty.
Odpovedať Známka: 0.0 Hodnotiť:
 

Co ak to apple urobil zamerne a chcel mat takyto krasny backdoor? Kod zvycajne prechadza rukami 2-3 ludi kym sa dostane do produkcie a neverim ze ani jeden clovek by si takuto viditelnu chybu nevsimol.
Odpovedať Známka: 6.4 Hodnotiť:
 

NSA!!!
Odpovedať Známka: 5.6 Hodnotiť:
 

Odkedy je iOS open source?
Odpovedať Známka: 5.7 Hodnotiť:

Pridať komentár