ปิดโฆษณา

เมื่อไม่กี่วันก่อน Apple เปิดตัวรุ่นที่ร้อย อัปเดต iOS 7.0.6เกี่ยวกับการเปิดเผยที่เราแจ้งให้คุณทราบ หลายคนอาจแปลกใจที่การอัปเดตนี้เผยแพร่สำหรับ iOS 6 รุ่นเก่า (เวอร์ชัน 6.1.6) และ Apple TV (เวอร์ชัน 6.0.2) ด้วย นี่คือแพตช์รักษาความปลอดภัย ดังนั้น Apple จึงไม่สามารถอัปเดตอุปกรณ์เพียงบางส่วนได้ ยิ่งไปกว่านั้น ปัญหานี้ยังส่งผลต่อ OS X อีกด้วย ตามที่โฆษกของ Apple Trudy Muller กล่าวไว้ การอัปเดต 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 สามารถทำได้หากผู้โจมตีและเหยื่ออยู่ในเครือข่ายเดียวกันเท่านั้น ดังนั้นจึงเป็นการดีกว่าที่จะหลีกเลี่ยงเครือข่าย Wi-Fi สาธารณะหากคุณไม่ได้อัปเดต iOS ผู้ใช้ Mac ควรระมัดระวังเกี่ยวกับเครือข่ายที่พวกเขาเชื่อมต่อและไซต์ที่พวกเขาเยี่ยมชมบนเครือข่ายเหล่านั้น

ไม่น่าเชื่อว่าข้อผิดพลาดร้ายแรงดังกล่าวสามารถทำให้เกิด OS X และ iOS เวอร์ชันสุดท้ายได้อย่างไร อาจเป็นการทดสอบโค้ดที่เขียนไม่ดีไม่สอดคล้องกัน นี่หมายความว่าทั้งโปรแกรมเมอร์และผู้ทดสอบจะทำผิดพลาด สิ่งนี้อาจดูไม่น่าเป็นไปได้สำหรับ Apple และมีการคาดเดากันว่าข้อผิดพลาดนี้จริงๆ แล้วเป็นแบ็คดอร์ หรือที่เรียกว่า ประตูหลัง- ไม่ใช่เพื่ออะไรที่พวกเขาบอกว่าประตูหลังที่ดีที่สุดดูเหมือนเป็นความผิดพลาดที่ละเอียดอ่อน อย่างไรก็ตาม นี่เป็นเพียงทฤษฎีที่ยังไม่ได้รับการยืนยัน ดังนั้นเราจะถือว่ามีใครบางคนทำผิดพลาด

หากคุณไม่แน่ใจว่าระบบหรือเบราว์เซอร์ของคุณปลอดภัยจากจุดบกพร่องนี้หรือไม่ โปรดไปที่หน้านี้ gotofail.com- ดังที่คุณเห็นในภาพด้านล่าง Safari 7.0.1 ใน OS X Mavericks 10.9.1 มีข้อบกพร่อง ในขณะที่ Safari ใน iOS 7.0.6 ทุกอย่างเรียบร้อยดี

แหล่งข้อมูล: iMore, รอยเตอร์ส
.