Хэдхэн хоногийн өмнө 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-д бүх зүйл хэвийн байна.
ДАМРАГДАХ…. Би удаан хугацаанд ийм сайхан инээж байгаагүй!
Ямар ч байсан - Би хувьдаа үүнийг APPLE-ээс бүх хэрэглэгчдэд илгээсэн мессеж гэж ойлгож байна - энэ нь ямар нэг байдлаар байсан эсэх (мөн энэ алдаа гарах магадлал 2-оос илүү бодит биш гэж би бодож байна) хоёулаа APPLE-ийн энгийн эздийн элэг доог юм!
Бурханд баярлалаа, чиний зөв байсан.
Энэ бол жинхэнэ алдаа гэдэгт би итгэх болно. Хэрэв нэг салбар нь нэг мөр урт байсан бол хувилбарын системд хоёр салбарыг нэгтгэх үед үүссэн гэж би төсөөлж байна. Ямартай ч, энэ нь блок доторх бие нь утга учиртай бол програмистуудыг нэг мөрийг ч гэсэн хүчээр оруулахыг батлах өөр нэг тохиолдол юм.
Нарийвчилсан тайлбар өгсөнд баярлалаа!
Хэлэлцүүлгийн гадуур бичсэнд уучлаарай, гэхдээ одоо би idnes дээрээс том iPhone-г iPhablet гэж нэрлэх ёстой гэж уншлаа :-D Би үүнийг алдах шахсан.. :-D Бүх алимны дурлагчдад мэндчилгээ дэвшүүлье.
….. Хөөх, бүтээлч байдал аажмаар алга болоогүй байна ….. магадгүй энэ нь зүгээр л нугас юм!
Сайн байна уу, шинэчлэлт хийсний дараа танд батерейны ашиглалтын асуудал гарсан уу? Би iP5-ийн талаар олон гомдол гаргасны дараа шинэ зай авсан тул бараг хоёр өдөр үргэлжилсэн шинэ зайтай болсон. Шинэчлэгдсэний дараа миний утас 8 цагийн дотор унтарсан бөгөөд би үүнийг бараг ашигладаггүй.
Би хувьдаа гар чийдэнтэй холбоотой ямар ч асуудал бүртгэгдээгүй. Тийм ээ, гэхдээ өмнө нь iOS-ийг нөөцөлж, дахин суулгах нь үргэлж тусалдаг байсан. Энэ нь танд тусална гэж найдаж байна.
Би өнөөдөр үүнийг хийсэн ч харамсалтай нь өөрчлөгдөөгүй :-/