Жарнаманы жабу

Бірнеше күн бұрын 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) - қауіпсіз байланыс үшін қолданылатын протокол. Ол қатынасушы тараптарды шифрлау және аутентификациялау арқылы қауіпсіздікке қол жеткізеді. Аутентификация – ұсынылған сәйкестікті растау. Нақты өмірде, мысалы, сіз өзіңіздің атыңызды (жеке куәлігіңізді) айтасыз және басқа адам оны растай алатындай (түпнұсқасын растай аласыз) жеке куәлігіңізді көрсетесіз. Содан кейін аутентификация верификацияға бөлінеді, бұл тек ұлттық жеке куәліктің үлгісі немесе сәйкестендіру, ол кездегі адам сіздің жеке басыңызды сіз оған алдын ала ұсынбай-ақ анықтай алады.

Енді мен сервер сертификатына қысқаша келер едім. Нақты өмірде сіздің куәлігіңіз, мысалы, жеке куәлік болуы мүмкін. Барлығы асимметриялық криптографияға негізделген, мұнда әрбір субъект екі кілтке ие - жеке және жалпы. Бүкіл сұлулық хабарламаны ашық кілтпен шифрлауға және жеке кілтпен шифрды шешуге болатынында жатыр. Бұл тек жеке кілттің иесі хабарламаның шифрын шеше алатынын білдіреді. Сонымен қатар, құпия кілтті байланысатын екі тарапқа беру туралы алаңдаудың қажеті жоқ. Содан кейін сертификат субъектінің ақпаратымен толықтырылған және куәландырушы орталық қол қойған ашық кілті болып табылады. Чехияда сертификаттау органдарының бірі, мысалы, Č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 төменде екі пәрменді көре аласыз сәтсіздікке жету;. Ал бұл сүріндіретін бөгет. Содан кейін бұл код екінші пәрменді сертификатты тексеру керек кезеңде орындауға әкеледі сәтсіздікке жету;. Бұл үшінші шартты өткізіп жіберуге әкеледі if және серверді тексеру мүлде болмайды.

Мұның салдары осы осалдықты білетін кез келген адам сіздің iPhone-ға жалған сертификат ұсына алады. Сіз немесе iPhone телефоныңызда сіз және сервер арасында шабуылдаушы болған кезде шифрланған байланысып жатырсыз деп ойлайсыз. Мұндай шабуыл деп аталады ортадағы адам шабуылы, ол шамамен чех тіліне аударылады ортадағы адам шабуылы немесе арасында адам. OS X және iOS жүйелеріндегі осы нақты кемшілікті пайдаланатын шабуыл шабуылдаушы мен жәбірленуші бір желіде болған жағдайда ғана орындалуы мүмкін. Сондықтан iOS жүйесін жаңартпаған болсаңыз, жалпыға ортақ Wi-Fi желілерінен аулақ болғаныңыз жөн. Mac пайдаланушылары қай желілерге қосылатыны және сол желілерде қандай сайттарға кіретіні туралы әлі де сақ болуы керек.

Мұндай қауіпті қате оны OS X және iOS жүйелерінің соңғы нұсқаларына қалай енгізгеніне сену мүмкін емес. Бұл нашар жазылған кодтың сәйкес келмейтін сынағы болуы мүмкін. Бұл бағдарламашы да, тестерлер де қателеседі дегенді білдіреді. Бұл Apple үшін екіталай болып көрінуі мүмкін, сондықтан бұл қате шынымен бэкдор деп аталатын болжам бар. артқы есік. Ең жақсы бэкдорлар нәзік қателіктер сияқты көрінеді деп бекер айтпаған. Дегенмен, бұл тек расталмаған теориялар, сондықтан біреу жай ғана қателік жіберді деп есептейміз.

Жүйеңіздің немесе шолғышыңыздың бұл қатеге қарсы иммунитеті бар-жоғын білмесеңіз, бетке кіріңіз gotofail.com. Төмендегі суреттерден көріп отырғаныңыздай, OS X Mavericks 7.0.1 нұсқасындағы Safari 10.9.1 қатені қамтиды, ал iOS 7.0.6 нұсқасындағы Safari-де бәрі жақсы.

Ресурстар: iMore, Reuters
.