• 3 สิงหาคม 2025 DrawAFish! เกิด เหตุการณ์ความปลอดภัยขนาดใหญ่ บนเว็บไซต์เป็นเวลาประมาณ 6 ชั่วโมง
  • การรั่วไหลของรหัสผ่านผู้ดูแล, API ที่ขาดการยืนยันตัวตน, ช่องโหว่ JWT เป็นต้นช่องโหว่ด้านความปลอดภัยสำคัญถูกเปิดให้การโจมตีได้พร้อมกัน
  • ส่งผลให้ ชื่อผู้ใช้ทั้งหมดถูกเปลี่ยนเป็นคำหยาบคาย และภาพที่ไม่เหมาะสมได้รับการอนุมัติในขณะเดียวกันกับภาพที่ปลอดภัยเดิมถูกลบออกไป
  • ดำเนินการแก้ไขผ่าน การกู้คืนแบบแฮนด์เมน, การแก้ไขตรรกะการยืนยันตัวตน, และการตรวจสอบการสำรองข้อมูล
  • บทเรียนหลักคือ การพัฒนาอย่างรวดเร็ว (“vibe-coding”) และการขาดการทดสอบ/รีวิวโค้ด อาจก่อให้เกิดผลร้ายแรงด้านความปลอดภัย

ภาพรวม DrawAFish.com และสรุปเหตุการณ์เมื่อ 3 สิงหาคม 2025

  • DrawAFish.com เป็นเว็บไซต์ที่ให้ผู้ใช้วาดปลาเองและปล่อยให้ว่ายน้ำในกระชังร่วมกับผู้ใช้อื่น
  • เมื่อ 1 สิงหาคม 2025 DrawAFish.com ขึ้นอันดับ 1 ใน Hacker News และได้รับความสนใจสูงมาก ผู้พัฒนานำแนวทาง “vibe-coding” มาใช้ด้วยการใช้เครื่องมืออย่าง Copilot ในการสร้างฟีเจอร์อย่างรวดเร็ว
  • อย่างไรก็ตาม เช้าตรู่วันที่ 3 สิงหาคม 2025 เกิดเหตุการณ์ความปลอดภัยที่รุนแรงขึ้น
  • เกิดสถานการณ์นานประมาณ 6 ชั่วโมงที่ชื่อผู้ใช้ทั้งหมดถูกเปลี่ยนเป็นคำหยาบคาย และภาพไม่เหมาะสมได้รับการอนุมัติในขณะเดียวกันเกิดความยุ่งเหยิง
  • สุดท้ายผู้ดูแลระบบจึงต้องทำการกู้คืนด้วยตนเอง

รายละเอียดช่องโหว่

1. รหัสผ่านผู้ดูแล 6 หลักที่รั่วไหลไปก่อนหน้านี้

  • ผู้พัฒนาใช้ชื่อผู้ใช้และรหัสผ่านของตัวเองตั้งแต่สมัยเด็ก (6 หลัก) สำหรับบัญชีผู้ดูแลตั้งแต่ต้น
  • รหัสผ่านนี้ถูกเผยแพร่สู่สาธารณะแล้วผ่านการรั่วไหลข้อมูลของเว็บไซต์อื่นๆ เช่น Neopets
  • ผู้พัฒนามีการใช้ Google Auth หลังจากนั้น แต่ยังไม่ลบรหัสผ่านเดิม ทำให้ผู้โจมตียังคงใช้ช่องโหว่นี้ได้
  • ผู้โจมตีใช้ข้อมูลที่รั่วไหลไปเพื่อยืนยันตัวตนผู้ดูแลสำเร็จ และดำเนินการอนุมัติภาพหมิ่นประมาทและลบภาพปกติด้วยการกระทำที่เป็นอันตราย

2. API เปลี่ยนชื่อผู้ใช้ที่ไม่มีการยืนยันตัวตน

  • ระหว่างพัฒนาส่วน backend ของโปรไฟล์ ผู้พัฒนาตั้งใจพัฒนาเร็วโดยสร้าง API เปลี่ยนชื่อผู้ใช้โดยไม่มีขั้นตอนตรวจสอบการยืนยันตัวตน
  • ในทางปฏิบัติทุกคนสามารถเปลี่ยนชื่อผู้ใช้ได้ตามใจชอบ

3. JWT ตรวจสอบไม่เข้ม

  • ในระบบยืนยันตัวตนบนพื้นฐาน token JWT ได้พัฒนาระบบที่ทำให้การกระทำของผู้ดูแลเป็นไปได้โดยไม่ต้องแมป token กับ userId/email
  • กล่าวคือ หากผู้โจมตีมี token ที่ออกจากข้อมูลยืนยันตัวตนผู้ดูแล ก็สามารถใช้สิทธิ์ผู้ดูแลกับคำขอใดๆ ได้
  • น่าสนใจว่า ผู้ใช้หนึ่งคนใน Hacker News ใช้ช่องโหว่นี้เพื่อลบไฟล์ไม่เหมาะสมก่อนผู้บุกรุก ทำให้การแก้ไขเหตุฉุกเฉินเร็วขึ้น

กระบวนการกู้คืน

  • ผู้พัฒนาเริ่มตอบสนองอย่างรวดเร็วตั้งแต่ประมาณ 7:45 น. ในเช้าวันเกิดเหตุ โดยเริ่มจากคอมพิวเตอร์เดสก์ท็อป
  • เนื่องจากไม่ได้ตั้งค่า backup ของ firebase ไว้ จึงไม่สามารถพึ่งพาสำรองข้อมูลได้ และแก้ไขโค้ดอย่างรวดเร็วเพื่อบังคับใช้การยืนยันตัวตน
  • ติดตามบันทึกโมเดอเรชันทั้งหมดและพัฒนาสคริปต์เพื่อยกเลิกการทำงานที่เป็นอันตรายของผู้โจมตี (สคริปต์นี้ก็เขียนด้วยแนวทาง vibe-coding ด้วย)
  • ในเวลาฉุกเฉินยังปิดการเข้าถึงของบุคคลที่สามที่ใช้สิทธิ์ผู้ดูแล (ผู้ใช้ Hacker News) แล้วติดต่อขอ feedback เรื่องรีแฟกเตอร์ความปลอดภัยใน codebase และดำเนินการ patch เพิ่มเติม

วัฒนธรรมการพัฒนาและบทเรียน

  • ผู้พัฒนาพบว่า “vibe-coding” ที่ให้ความสำคัญกับการต้นแบบอย่างรวดเร็วและการตรวจสอบขั้นต่ำ แม้จะให้ความสนุกและประสิทธิภาพสูง แต่ในทางปฏิบัติอาจนำไปสู่ช่องโหว่ด้านความปลอดภัยรุนแรง
  • LLM (Copilot) มีประโยชน์มากต่อการผลิตโค้ดที่เร็วมาก แต่ความรับผิดชอบด้านคุณภาพและความปลอดภัยของโค้ดยังคงอยู่ที่ผู้พัฒนาเอง
  • กรณีนี้เป็นหลักฐานว่าการละเว้นขั้นตอนความปลอดภัยพื้นฐานอย่างการทดสอบ, ตรรกะการยืนยันตัวตน, การ code review จะทำให้โครงการขนาดเล็กต้องเผชิญความเสี่ยงสูงต่อการโจมตีภายนอกได้อย่างมาก

สรุปและมุมมอง

  • กรณี DrawAFish.com แสดงให้เห็นถึงความสำคัญของ มาตรการรักษาความปลอดภัยพื้นฐาน ที่มักถูกมองข้ามในการดำเนินการจริง
  • แม้จะพึ่งพาเครื่องมือโอเพนซอร์สและเครื่องมือพัฒนาแบบเร็ว ต้องตรวจสอบประเด็นพื้นฐานเสมอ โดยเฉพาะ การทดสอบ, การยืนยันตัวตน, การ code review และการจัดการรหัสผ่าน
  • เมื่อได้รับการสนใจในระดับที่คาดไม่ถึง (เช่น อันดับสูงสุดบน Hacker News) พื้นที่เสี่ยงและพื้นที่โจมตีสามารถขยายตัวได้อย่างรวดเร็ว
  • การบันทึก postmortem อย่างโปร่งใสช่วยส่งต่อบทเรียนด้านความปลอดภัยที่จับต้องได้ให้กับสตาร์ทอัปหรือผู้พัฒนาส่วนบุคคลที่มีลักษณะคล้ายกันในอนาคต

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

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