พบช่องโหว่ใน Sherd Hosting ทำให้สามารถออกใบรับรองให้กับเว็บอื่นที่อยู่บนไอพีเดียวกันได้

เมื่อประมาณวันที่ 9 มกราคม 2018 เวลาประมาณ 5 โมงเย็น Frans Rosén แจ้งถึงช่องโหว่เว็บโฮสติ้งไปยัง Let’s Encrypt ซึ่งช่องโหว่นี้ทำให้ Hacker สามารถขอใบรับรองเว็บอื่นๆ ที่อยู่บนไอพีเดียวกันได้

ช่องโหว่นี้เกิดจาก TLS-SNI-01 ของ server ACME (CA) ที่มีหน้าที่ทำการตรวจสอบชื่อโดเมนโดยการสุ่ม Token จากนั้นส่งต่อไปยังเครื่อง Client ของ ACME แล้ว เครื่อง Client ก็จะใช้ Token นั้นทำการใบรับรองขึ้นมาเอง ยกตัวอย่างเช่น 773c7d.13445a.acme.invalid จากนั้นจะทำการกำหนดชื่อโดเมนบน Web Server ให้เป็นเหมือนว่าได้รับการตรวจสอบใบรับรองแล้ว Server ของ Let’s Encrypt จะเชื่อมต่อกับ TLS ทำการค้นหาที่อยู่ IP ของชื่อโดเมนปลอม และส่งชื่อ Host .acme.invalid ไปยัง SNI extension ถ้าพบว่ามีการรองรับด้วยตนในเองใน host นั้นๆ แล้ว Client ของ ACME จะถือว่า host นั้นมีชื่อโดมนปลอมอยู่ และจะสามารถออกใบอนุญาติได้ ปัญหาช่องโหว่นี้เกิดขึ้นเฉพาะกับโดเมนที่ใช้อุปกรณ์เหล่านี้ร่วมกัน ซึ่งก็ต้องขึ้นอยู่กับผู้ให้บริการ hosting ว่าจะใช้ เครื่อง Client ของ ACME กับ TLS-SNI-01 หรือไม่

ยกตัวอย่างเช่น DNS ของโดเมน example.com126 ถูกชี้ไปที่ IP เดียวกันกับ Shared Hosting ซึ่ง Hacker เป็นผู้ควบคุมเว็บนี้ Hacker จะสั่งให้เครื่อง Client ของ ACME ร้องขอให้ TLS-SNI-01 ออกใบรับรอง จากนั้นทำการติดตั้ง .acme.invalid certificate ที่มีอยู่จากผู้ให้บริการ hosting เมื่อ server ACME ทำการค้นหา example.com126 พบแล้ว จะทำการเชื่อมต่อไปยัง IP ของผู้ให้บริการ hosting และใช้ SNI เพื่อร้องขอชื่อโฮสต์ .acme.invalid ผู้ให้บริการ hosting จะออกใบรับรอง certificate ให้กับ hacker ซึ่งทาง server ACME จะเช็คดูว่า เครื่อง Client ของ ACME ของ Hacker มีสิทธิ์ที่จะได้รับอนุญาตให้ออกใบรับรอง จากนั้นก็ดำเนินการออกใบรับรองให้กับเว็บ example.com126

เมื่อทาง Let’s Encrypt ทราบถึงปัญหาช่องโหว่นี้แล้ว ได้ทำการปิด TLS-SNI-01 แล้ว และถึงแม้ว่าปัญหานี้ไม่ได้เป็นความผิดของผู้ออกใบรับรอง แต่ทาง Let’s Encrypt ก็ยังจะทำการติดตาม รวมไปถึงทำรายงานรายชื่อ Shared Hosting ที่มีช่องโหว่ พร้อม IP ที่เกี่ยวข้อง เมื่อเปิดให้ใช้ TLS-SNI-01 เมื่อไหร่ จะทำการบล็อด IP ผู้ให้บริการ Shared Hosting เหล่านั้นทันที

ที่มา : Let’s Encrypt