สงสัยว่า ghrc.io เป็นเว็บไซต์อันตราย
(bmitch.net)- ความสับสนระหว่าง 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-authenticateheader - มี 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
- จำเป็นต้องมีนโยบายที่เข้มงวดยิ่งขึ้นในการจัดการ ข้อมูลความปลอดภัย เช่น ข้อมูลรับรอง โทเค็น และรหัสผ่าน
ยังไม่มีความคิดเห็น