นาย Hector Marco พบช่องโหว่ที่จะทำให้สามารถ bypass การ login ของ console (รวมถึงการ reboot แล้วเข้า shell prompt) โดยช่องโหว่ดังกล่าวเกิดจากการที่ script ที่ชื่อว่า /scripts/local-top/cryptroot ใช้สำหรับการถอดรหัส system partition ไม่สามารถถอดรหัส ได้ เมื่อ user กรอก password ผิดไปตามที่กำหนด (Default คือ 3 ครั้ง) เครื่องจะ boot ปกติต่อไปนั่นเอง
เมื่อมาถึงส่วนที่มีการเรียกใช้งาน /script/local ซึ่งเป็นตัวจัดการ error ที่เกิดขึ้น จะพยายามที่จะ recover/remount device ที่ไม่สามารถใช้งานได้ ประมาณ 30 ครั้ง(หากเป็น powerpc จะ 150 ครั้ง) โดยในช่วงต้นๆของ /script/local จะมีการพยายาม mount encrypted partition นั่นหมายความว่าหากเป็นเครื่อง x86 จะมีการพยายามเดา password ประมาณ ((30×3) + 3) = 93 ครั้งด้วยกัน
ซึ่งเมื่อการพยายาม mount ด้วยรหัสผ่านผิดถึงจำนวนที่กำหนด ในส่วน local_device_setup() มีการกำหนดไว้ว่าให้มีการใช้งาน function panic เพื่แก้ไข module, driver ทำให้เปิด (Busybox) shell ขึ้นมาครับ
วิธีการ PoC
วิธีการ PoC ก็ง่ายๆคือตอนที่มีการถาม password สำหรับการถอดรหัส system partition เราก็แค่กด enter ไปเรื่อยๆ จนถึงประมาณ 70 วินาทีก็จะได้มาเป็น (Busybox) Shell ครับ
วิธีการแก้ไข
เข้าไปแก้ไขไฟล์ /scripts/local-top/cryptroot โดยการป้องกันการ boot ต่อหาก password ผิดครบตามที่กำหนดครับ
หรือเข้าไปแก้ไขเงื่อนไขการ boot เพื่อเป็นการกำหนดว่าหากมีการใช้งาน kernel panic ให้ทำการ reboot แทน โดยกระทำที่ /scripts/functions
จากนั้นแก้ไข grub ครับ
# sed -i ‘s/GRUB_CMDLINE_LINUX_DEFAULT=”/GRUB_CMDLINE_LINUX_DEFAULT=”panic=5 /’ /etc/default/grub
# grub-install
Source:: Hmarco.org