Project Zero ของกูเกิลรายงานช่องโหว่ในส่วนการรับไฟล์รับรองการเข้ารหัสของ Chrome หากไฟล์ใบรับรองมีขนาดใหญ่มากเกิน 4GB จะเปิดช่องให้แฮกเกอร์สามารถส่งโค้ดมารันเบราว์เซอร์ได้
ความผิดพลาดนี้เกิดขึ้นเนื่องจากโค้ดส่วนที่อ่านค่าความยาวของไฟล์ใช้ตัวแปรชนิด size_t แต่เมื่อต้องนำข้อมูลไฟล์ใบรับรองมาต่อกันออปเจกต์ IOBuffer กลับรองรับความยาวเป็นตัวแปรชนิด int ทำให้ไฟล์ใบรับรองทะลุพื้นที่ของ heap ออกไปได้
ส่วนรองรับใบรับรองการเข้ารหัสนี้อยู่นอก sandbox ของ Chrome จึงมีความร้ายแรงแม้แฮกเกอร์จะต้องล่อให้เบราว์เซอร์โหลดไฟล์ x509 ขนาดใหญ่
โค้ดส่วนนี้เป็นการรองรับไฟล์ x509 ที่เซิร์ฟเวอร์ประกาศ MIME type เป็น application/x-x509-user-cert
และ MIME อื่นๆ ในกลุ่มเดียวกัน การส่งไฟล์ผ่าน HTTP ทำให้สามารถสร้างไฟล์ที่บีบอัดแบบ Gzip ไว้แล้วได้ ตัวไฟล์จริงจึงอาจจะมีขนาดเล็กเพียง 4MB เท่านั้น
กระบวนการแฮกด้วยช่องโหว่นี้ยังคงเป็นเรื่องยากแม้ขนาดข้อมูลที่ส่งจะมีขนาดเล็ก แต่เบราว์เซอร์จะต้องขยายไฟล์ซึ่งใช้เวลานานกว่า 30 วินาที และการใช้หน่วยความจำอย่างหนักอาจจะทำให้โปรเซสอื่นๆ มีปัญหาได้
ช่องโหว่นี้แก้ไขไปแล้วตั้งแต่เดือนพฤษภาคมที่ผ่านมา แต่เพิ่งเปิดเผยสู่สาธารณะเมื่อวานนี้
ที่มา - Project Zero, Project Zero Blog
Comments
ไม่เป็นปํญหาสำหรับ user ADSL ^ ^''
เป็นปัญหาครับ เพราะมันไม่ได้ทำงานเสร็จเมื่อโหลดครบ 4GB
แต่มันทำงานแค่ส่วนของการอ่านขนาดไฟล์
ตามข่าวนะครับ "โค้ดส่วนที่อ่านค่าความยาวของไฟล์"
ยังไม่ต้องโหลดไฟล์นะครับ แค่อ่านค่าความยาวของไฟล์ ก็จบสิ้นแล้วครับ
เจี๊ยกกกกก...
ปัญหานี้ไม่กระทบกับผู้ใช้งานในประเทศไทย
เพราะแฟลตไดรฟ์ยังเป็น FAT32 อินเทอร์เนตก็ยังไม่ใช่บรอดแบนด์ และ 3G FUP ที่ 2Gb
...
ถ้าส่งคำสั่งแค่ไม่กี่บรรทัดให้สร้างไฟล์ใบรับรองขนาดเกิน 4GB ได้ bandwidth จะไม่ใช่ปัญหาเลย