• ความสับสนระหว่าง ghcr.io กับ ghrc.io จากการพิมพ์ผิดเพียงเล็กน้อย ก่อให้เกิด ภัยคุกคามด้านความปลอดภัยร้ายแรง
  • ghrc.io ภายนอกดูเหมือนเซิร์ฟเวอร์ nginx ปกติ แต่ภายในตรวจพบว่า เลียนแบบ OCI API
  • เว็บไซต์นี้ใช้ www-authenticate header เพื่อชักจูงให้ไคลเอนต์คอนเทนเนอร์ส่ง ข้อมูลยืนยันตัวตนที่อ่อนไหว
  • หากเผลอกรอกข้อมูลยืนยันตัวตนด้วยคำสั่งอย่าง docker login หรือใช้งานรีจิสทรีผิดโดเมน อาจเกิด การรั่วไหลของข้อมูลรับรอง ได้
  • หากเคยล็อกอินกับเซิร์ฟเวอร์ผิด ควร เปลี่ยนรหัสผ่าน, เพิกถอน PAT และตรวจสอบกิจกรรมผิดปกติในบัญชี GitHub

ภาพรวม

กรณีนี้แสดงให้เห็นว่าความสับสนระหว่าง ghcr.io และ ghrc.io ที่เกิดขึ้นได้บ่อยจากการพิมพ์ผิดเพียงเล็กน้อย สามารถนำไปสู่ ปัญหาด้านความปลอดภัยที่อันตรายมาก ได้ โดยมีการตรวจพบ ความพยายามขโมยข้อมูลรับรอง บน ghrc.io ซึ่งเป็นโดเมนที่พิมพ์คล้ายกับ GitHub Container Registry (ghcr.io) ที่นักพัฒนาและทีมงานจำนวนมากใช้งาน

ghcr.io คืออะไร

  • ghcr.io คือ รีจิสทรีที่รองรับ OCI สำหรับ อิมเมจคอนเทนเนอร์และ OCI artifact
  • เป็นส่วนหนึ่งของ GitHub และถูกใช้งานเป็น รีจิสทรียอดนิยม ในโอเพนซอร์สจำนวนมาก

ghrc.io: สิ่งที่เห็นบนผิวหน้า

  • เมื่อเข้า ghrc.io จะเห็นเพียง หน้าเริ่มต้นของ nginx
  • การทำงานพื้นฐาน เช่น ข้อผิดพลาด 404 ทั่วไป เหมือนกับเซิร์ฟเวอร์ nginx ปกติ

พฤติกรรมอันตรายที่แท้จริง

  • ปัญหาหลักจะปรากฏเมื่อมี การเรียก OCI API ภายใต้พาธที่ขึ้นต้นด้วย /v2/
  • เมื่อเข้าถึงเส้นทางนี้ จะพบ พฤติกรรมที่คล้ายกับคอนเทนเนอร์รีจิสทรีทางการอย่างมาก ผ่านการตอบกลับ 401 และ www-authenticate header
  • มี header www-authenticate: Bearer realm="https://ghrc.io/token";
  • เนื่องจาก header นี้ ไคลเอนต์อย่าง Docker, containerd, podman, Kubernetes เป็นต้น จะพยายาม ส่งข้อมูลยืนยันตัวตนของผู้ใช้โดยอัตโนมัติ ไปยัง https://ghrc.io/token
  • ในการตั้งค่าปกติของ nginx จะไม่มี header นี้ จึงถือว่า ถูกตั้งค่าขึ้นโดยเจตนาอย่างชัดเจน

ความเสี่ยง: สถานการณ์การขโมยข้อมูลรับรอง

  • รูปแบบนี้ถูกมองว่าเป็น การโจมตีขโมยข้อมูลรับรองแบบ typo-squatting
  • ความเสี่ยงจะเกิดขึ้นเฉพาะเมื่อไคลเอนต์ของผู้ใช้ ป้อนหรือบันทึกข้อมูลรับรองไว้กับ ghrc.io
  • ตัวอย่างสถานการณ์ที่ข้อมูลรับรองจริงอาจถูกเปิดเผย
    • รัน docker login ghrc.io
    • ใช้ docker/login-action ใน GitHub Action แล้วกำหนดรีจิสทรีเป็น ghrc.io
    • บันทึกข้อมูลรับรองรีจิสทรีสำหรับ ghrc.io ไว้ใน Kubernetes secret แล้วพยายามดึงอิมเมจ
  • หากเพียงแค่ลอง push/pull อิมเมจไปที่ ghrc.io โดยไม่ได้ล็อกอิน ข้อมูลยืนยันตัวตนจะไม่รั่วไหล (จะลองใช้ anonymous token ก่อนแล้วจบด้วยข้อผิดพลาด)

วิธีรับมือ

  • หากเคย เผลอล็อกอินเข้า ghrc.io ควรเปลี่ยนรหัสผ่านทันที และเพิกถอน PAT (personal access token) ที่ใช้
  • ต้องตรวจสอบ การล็อกอินผิดปกติหรือกิจกรรมอันตราย ในบัญชี GitHub อย่างละเอียด
  • ผู้โจมตีอาจใช้สิ่งนี้เพื่อ เพิ่มอิมเมจอันตราย ไปยังรีโพซิทอรีบน ghcr.io หรือเข้าถึงบัญชีได้

บทสรุป

  • ควรระวัง เว็บไซต์ฟิชชิง ที่ใช้โดเมนคล้ายกับ ghcr.io
  • จำเป็นต้องมีนโยบายที่เข้มงวดยิ่งขึ้นในการจัดการ ข้อมูลความปลอดภัย เช่น ข้อมูลรับรอง โทเค็น และรหัสผ่าน

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น