Մի քանի օր առաջ Apple-ը թողարկեց հարյուրերորդը iOS 7.0.6 թարմացում, որի թողարկման մասին տեղեկացրել ենք։ Շատերը կարող են զարմացած լինել, որ թարմացումը թողարկվել է նաև ավելի հին iOS 6-ի (տարբերակ 6.1.6) և Apple TV-ի (տարբերակ 6.0.2) համար: Սա անվտանգության պատչ է, ուստի Apple-ը չէր կարող իրեն թույլ տալ թարմացնել իր սարքերի միայն մի մասը: Ավելին, այս խնդիրն ազդում է նաև OS X-ի վրա: Apple-ի խոսնակ Թրուդի Մյուլերի խոսքով՝ OS X-ի թարմացումը կթողարկվի որքան հնարավոր է շուտ:
Ինչո՞ւ է այս թարմացման շուրջ այդքան մեծ աղմուկ բարձրանում: Համակարգի կոդի թերությունը թույլ է տալիս շրջանցել սերվերի ստուգումը ISO/OSI հղման մոդելի հարաբերական շերտում անվտանգ փոխանցման ժամանակ: Մասնավորապես, սխալը վատ SSL իրականացումն է այն մասում, որտեղ տեղի է ունենում սերվերի վկայագրի ստուգում: Նախքան հետագա բացատրություններին անցնելը, ես նախընտրում եմ նկարագրել հիմնական հասկացությունները:
SSL-ը (Secure Socket Layer) անվտանգ հաղորդակցության համար օգտագործվող արձանագրություն է: Այն ապահովում է անվտանգություն հաղորդակցվող կողմերի գաղտնագրման և նույնականացման միջոցով: Նույնականացումը ներկայացված ինքնության ստուգումն է: Իրական կյանքում, օրինակ, դուք ասում եք ձեր անունը (ինքնությունը) և ցույց եք տալիս ձեր ID-ն, որպեսզի դիմացինը կարողանա ստուգել այն (հաստատել): Նույնականացումը այնուհետև բաժանվում է ստուգման, որը ընդամենը օրինակ է ազգային ինքնության քարտով կամ նույնականացման, երբ տվյալ անձը կարող է որոշել ձեր ինքնությունը՝ առանց նախապես նրան ներկայացնելու:
Հիմա ես համառոտ կհասնեմ սերվերի վկայականին: Իրական կյանքում ձեր վկայականը կարող է լինել, օրինակ, նույնականացման քարտ: Ամեն ինչ հիմնված է ասիմետրիկ ծածկագրության վրա, որտեղ յուրաքանչյուր առարկա ունի երկու բանալի՝ մասնավոր և հանրային: Ամբողջ գեղեցկությունը կայանում է նրանում, որ հաղորդագրությունը կարող է գաղտնագրվել հանրային բանալիով և վերծանել անձնական բանալիով: Սա նշանակում է, որ միայն անձնական բանալիի սեփականատերը կարող է վերծանել հաղորդագրությունը: Միևնույն ժամանակ, կարիք չկա անհանգստանալու գաղտնի բանալին երկու հաղորդակցվող կողմերին փոխանցելու համար: Այնուհետև վկայագիրը առարկայի հանրային բանալին է, որը լրացվում է իր տեղեկություններով և ստորագրվում սերտիֆիկացման մարմնի կողմից: Չեխիայի Հանրապետությունում սերտիֆիկացման մարմիններից մեկը, օրինակ, Česká Pošta-ն է: Հավաստագրի շնորհիվ iPhone-ը կարող է ստուգել, որ իսկապես շփվում է տվյալ սերվերի հետ։
SSL-ն օգտագործում է ասիմետրիկ գաղտնագրում կապ հաստատելիս, այսպես կոչված SSL ձեռքսեղմում. Այս փուլում ձեր iPhone-ը ստուգում է, որ շփվում է տվյալ սերվերի հետ, և միևնույն ժամանակ, ասիմետրիկ գաղտնագրման միջոցով հաստատվում է սիմետրիկ բանալի, որը կօգտագործվի հետագա բոլոր հաղորդակցության համար։ Սիմետրիկ գաղտնագրումն ավելի արագ է: Ինչպես արդեն գրված է, սխալն արդեն տեղի է ունենում սերվերի ստուգման ժամանակ: Եկեք նայենք այս համակարգի խոցելիության պատճառած կոդը:
static OSStatus
SSLVerifySignedServerKeyExchange(SSLContext *ctx, bool isRsa,
SSLBuffer signedParams, uint8_t *signature, UInt16 signatureLen)
{
OSStatus err;
…
if ((err = SSLHashSHA1.update(&hashCtx, &serverRandom)) != 0)
goto fail;
if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0)
goto fail;
goto fail;
if ((err = SSLHashSHA1.final(&hashCtx, &hashOut)) != 0)
goto fail;
…
fail:
SSLFreeBuffer(&signedHashes);
SSLFreeBuffer(&hashCtx);
return err;
}
Երկրորդ վիճակում if ստորև կարող եք տեսնել երկու հրաման Goto Fail;. Եվ դա է գայթակղության քարը: Այնուհետև այս կոդը հանգեցնում է երկրորդ հրամանի կատարմանը այն փուլում, երբ վկայագիրը պետք է ստուգվի Goto Fail;. Սա հանգեցնում է երրորդ պայմանի բացթողմանը if և ընդհանրապես սերվերի ստուգում չի լինի:
Հետևանքներն այն են, որ յուրաքանչյուր ոք, ով գիտի այս խոցելիության մասին, կարող է ձեր iPhone-ին կեղծ վկայական առաջարկել: Դուք կամ ձեր iPhone-ը, դուք կմտածեք, որ հաղորդակցվում եք կոդավորված, մինչդեռ ձեր և սերվերի միջև կա հարձակվող: Նման հարձակումը կոչվում է մարդ-միջին հարձակում, որը մոտավորապես չեխերեն թարգմանվում է որպես մարդ-միջին հարձակում կամ մարդ մեջ. OS X-ի և iOS-ի այս թերության օգտագործմամբ հարձակումը կարող է իրականացվել միայն այն դեպքում, եթե հարձակվողն ու զոհը գտնվում են նույն ցանցում: Հետեւաբար, ավելի լավ է խուսափել հանրային Wi-Fi ցանցերից, եթե չեք թարմացրել ձեր iOS-ը: Mac-ի օգտվողները դեռ պետք է զգույշ լինեն, թե որ ցանցերին են միանում և ինչ կայքեր են այցելում այդ ցանցերում:
Անհավատալի է, թե ինչպես կարող էր նման ճակատագրական սխալը հայտնվել OS X-ի և iOS-ի վերջնական տարբերակներում: Դա կարող էր լինել վատ գրված կոդի անհամապատասխան փորձարկում: Սա կնշանակի, որ և՛ ծրագրավորողը, և՛ փորձարկողները սխալներ կանեն։ Սա կարող է անհավանական թվալ Apple-ի համար, և, հետևաբար, ենթադրություններ են առաջանում, որ այս սխալն իրականում հետևի դուռ է, այսպես կոչված: Հետեւի դուռ. Իզուր չէ, որ ասում են, թե լավագույն ետնադռները նուրբ սխալների տեսք ունեն։ Այնուամենայնիվ, դրանք միայն չհաստատված տեսություններ են, ուստի մենք կենթադրենք, որ ինչ-որ մեկը պարզապես սխալ է թույլ տվել:
Եթե վստահ չեք, արդյոք ձեր համակարգը կամ բրաուզերը պաշտպանված են այս սխալից, այցելեք էջը gotofail.com. Ինչպես տեսնում եք ստորև ներկայացված նկարներում, OS X Mavericks 7.0.1-ում Safari 10.9.1-ը պարունակում է սխալ, մինչդեռ Safari-ում iOS 7.0.6-ում ամեն ինչ կարգին է:
Հարձակում ՄԻՋՈՑՈՎ…. Այսքան լավ, սրտանց ծիծաղել վաղուց չէի!
Ինչքան էլ որ լինի, ես անձամբ դա հասկանում եմ որպես APPLE-ի հաղորդագրություն բոլոր օգտատերերին, լինի դա այսպես թե այնպես (և չեմ կարծում, որ այս սխալի առաջացման նշված 2-ից ավելի հավանականությունը իրական է): երկուսն էլ պարզ ծաղր են APPLE-ի իրերի սովորական տերերին:
Փառք Աստծո, որ դու ճիշտ էիր:
Ես կհավատայի, որ սա իսկական սխալ է։ Ես կարող եմ պատկերացնել, որ այն ստեղծվել է տարբերակման համակարգում երկու ճյուղերի միացման ժամանակ, եթե մեկ ճյուղը մի տող ավելի երկար է: Ինչևէ, սա ևս մեկ դեպք է, որը հաստատում է, որ ծրագրավորողներին ստիպելը նույնիսկ մեկ տող փակցնել, եթե մարմինը բլոկում իմաստ ունի:
Շնորհակալություն մանրամասն նկարագրության համար:
Կներեք քննարկումից դուրս գրելու համար, բայց հիմա idnes-ում կարդացի, որ իբր ավելի մեծ iPhone-ը պետք է կոչվի iPhablet :-D քիչ էր մնում կորցնեի.. :-D Ողջույն բոլոր խնձորասերներին
….. Վա՜յ, ստեղծագործականությունը կամաց-կամաց չի անհետանում….. գուցե դա պարզապես բադ է:
Ողջույն, թարմացումից հետո մարտկոցի աշխատանքի հետ կապված խնդիրներ ունե՞ք: Ես նորը ստացա iP5-ի հետ կապված բազմաթիվ բողոքներից հետո, ուստի ես նոր մարտկոց ունեմ, որը գրեթե երկու օր տևեց: Թարմացումից հետո իմ հեռախոսը մահացավ 8 ժամվա ընթացքում, և ես շատ չեմ օգտագործում այն:
Անձամբ ես լապտերի հետ կապված որեւէ խնդիր չեմ գրանցել։ Նախկինում, այո, և iOS-ի կրկնօրինակը և մաքուր վերատեղադրումը միշտ օգնել է: Հուսով եմ, որ դա կօգնի ձեզ:
Ես դա արեցի այսօր և, ցավոք, ոչ մի փոփոխություն :-/