Project Zero รายงานช่องโหว่ Chrome สามารถรันโค้ดได้หากใบรับรองใหญ่เกิน 4GB

by lew
8 July 2015 - 05:43

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

Blognone Jobs Premium