Зарыг хаах

Хэдхэн хоногийн өмнө 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
.