ใช้รหัสซ้ำระวังโดนถูกนำมาทดลองล็อกอินซ้ำแบบอัตโนมัติด้วย Credential Stuffing
By Puttharak Morrat,
Penetration Tester Team, Datafarm Company Limited
สวัสดีผู้ที่เข้ามาอ่านบทความทุกคนครับ วันนี้ขอชวนคุยเรื่อง Credential Stuffing ว่ามันคืออะไร มันเกิดขึ้นได้ยังไง และทำไมถึงเป็นหนึ่งในสาเหตุหลักของ Account Takeover ในระบบออนไลน์ยุคนี้
Credential Stuffing: เมื่อ “รหัสที่หลุด” ถูกนำมาทดลองล็อกอินซ้ำแบบอัตโนมัติ
Credential Stuffing เป็นรูปแบบการโจมตีที่แฮคเกอร์เค้าใช้ชุดข้อมูลล็อกอินที่เคยรั่วไหลมาก่อน เช่นพวก Email และ Password แล้วนำไปทดลองล็อกอินของบริการอื่น ๆ เป็นจำนวนมากครับ โดยจะเป็ยการทำแบบ Automation เป็นหลัก เพราะว่าแนวคิดของการโจมตีนี้ไม่ใช่การเดารหัสผ่าน แต่เป็นการใช้ “ข้อมูลที่น่าจะถูกต้องอยู่แล้ว” จากเหตุการณ์ข้อมูลรั่วไหลในอดีตมาใช้ครับ
สิ่งที่ทำให้ Credential Stuffing มีประสิทธิภาพคือพฤติกรรมที่สามารถพบได้ทั่วไปของผู้ใช้งานจำนวนมาก ก็คือการใช้รหัสผ่านซ้ำ หรือใช้รหัสผ่านที่มีรูปแบบคล้ายกันในหลาย ๆ บริการครับ เมื่อชุดข้อมูลจากการรั่วไหลถูกนำมาทดลองกับบริการยอดนิยม โอกาสที่จะเจอบัญชีที่สามารถล็อกอินเข้าใช้งานได้สำเร็จเลยมีอยู่เสมอ แม้อัตราความสำเร็จจะไม่ได้สูงมากก็ตามครับ
Credential Stuffing ต่างจาก Brute Force อย่างไร
ให้เห็นภาพกันชัดๆ เลย Credential Stuffing มักจะถูกเข้าใจผิดว่าเป็น Brute Force แต่จริงๆ แล้วต่างกัน
- Brute Force คือการพยายามเดารหัสผ่านด้วยการลองหลายๆ ค่า
- Credential Stuffing คือการนำ “คู่ข้อมูลล็อกอินที่มีอยู่แล้ว” ไปทดลองกับระบบอื่น
ในเชิงการป้องกัน ความต่างนี้สำคัญมาก เพราะ Credential Stuffing มักไม่สร้าง “ความผิดพลาดต่อบัญชีเดียว” จำนวนมากแบบ Brute Force แต่กระจายความพยายามไปหลายบัญชีและหลาย Endpoint ทำให้การตรวจจับต้องอาศัยเชิงพฤติกรรมและภาพรวมมากขึ้นครับ

Attack Flow: ภาพรวมการโจมตีแบบเป็นขั้นตอน
- Credentials ถูกนำมาจากเหตุการณ์ข้อมูลรั่วไหล
สาเหตุมักเป็นการที่ข้อมูลรั่วไหลจากบริการใดบริการหนึ่งในอดีต ผู้ใช้จำนวนมากอาจไม่ได้ใช้งานบริการนั้นแล้ว แต่ “รหัสผ่านชุดเดิม” อาจจะถูกนำไปใช้ซ้ำในบริการอื่น
- แฮคเกอร์ทำ Automation เพื่อทดลองล็อกอินเป็นจำนวนมาก
การทดลองไม่ได้ทำแบบ Manual แต่ใช้ Automation เพื่อเพิ่มจำนวนความพยายามต่อเวลา และลดต้นทุนต่อการลองลงให้ต่ำที่สุด หลายกรณีมีการใช้ Proxy Infrastructure เพื่อกระจายทราฟฟิกและเลี่ยงการจำกัดความถี่แบบง่ายๆ
- เมื่อพบบัญชีที่ล็อกอินสำเร็จ จะเกิด Account Takeover
หลังจากที่สามารถล็อกอินสำเร็จ เป้าหมายมักเปลี่ยนจาก “ทดสอบความสำเร็จ” เป็น “ทำให้บัญชีอยู่ในครอบครองต่อเนื่อง” เช่น การเปลี่ยนรหัสผ่าน เปลี่ยนอีเมลหรือเบอร์กู้คืน เพิ่มอุปกรณ์ที่เชื่อถือได้ หรือดึงข้อมูลที่ช่วยขยายผลไปยังบริการอื่น
- ผลกระทบมักขยายไปยังบริการอื่นแบบโดมิโน
ถ้าบัญชีที่ถูกยึดเชื่อมกับอีเมลหลัก หรือเป็นบัญชีที่ใช้เป็นศูนย์กลางในการกู้คืนบัญชีอื่น ผลกระทบจะขยายเร็วมาก เพราะแฮคเกอร์สามารถใช้กระบวนการ Reset Password ของบริการอื่นต่อได้

ทำไม Credential Stuffing ถึงยังเป็นปัญหาใหญ่
- Password Reuse ยังเกิดขึ้นจริงและเกิดขึ้นมาก
Credential Stuffing อาศัยความจริงข้อเดียวก็คือ “บางคนยังใช้รหัสซ้ำ” และในระบบขนาดใหญ่ แค่บางส่วนก็เพียงพอที่จะสร้างความเสียหายที่คุ้มค่าต่อแฮคเกอร์ได้
- ต้นทุนการโจมตีต่ำ แต่ผลลัพธ์มีมูลค่าสูง
การทดลองล็อกอินเป็น Action ที่ต้นทุนต่ำเมื่อเทียบกับผลตอบแทนที่เป็นไปได้ เช่น การยึดบัญชีที่มีแต้มสะสม ข้อมูลส่วนตัว ประวัติการสั่งซื้อ หรือสิทธิ์เข้าถึงระบบงาน
- การป้องกันแบบพื้นฐานไม่เพียงพอเสมอไป
หลายระบบมีกลไกป้องกันแบบ Rate Limit ต่อ IP หรือ Lock Account แบบตรงไปตรงมา แต่แฮคเกอร์ก็สามารถกระจายทราฟฟิก หรือเลือก Pattern ที่ลดโอกาสถูกล็อกได้ ทำให้ต้องพึ่งการตรวจจับเชิงพฤติกรรม
สัญญาณที่ควรสังเกตุ (มุมผู้ใช้งานและมุมผู้ดูแลบริการ)
ในมุมผู้ใช้ สัญญาณที่มักพบได้คือการมีการแจ้งเตือนล็อกอินจากอุปกรณ์ใหม่ การได้รับอีเมล Reset Password โดยไม่ได้ร้องขอ หรือการถูกบังคับให้ออกจากระบบโดยไม่ทราบสาเหตุ
ในมุมผู้ดูแลบริการ สัญญาณที่พบได้บ่อยคือ
- ปริมาณการพยายามล็อกอินเพิ่มขึ้นผิดปกติในช่วงเวลาสั้น
- อัตรา Login Failure สูง แต่กระจายไปหลายบัญชี
- พฤติกรรมซ้ำๆ ที่คล้าย Automation เช่น User-Agent รูปแบบเดิม การเปลี่ยนบัญชีเร็วผิดปกติ หรือรูปแบบ Request ที่มีความสม่ำเสมอเกินมนุษย์
แนวทางการลดความเสี่ยง
สำหรับผู้ใช้
แนวทางที่ตรงที่สุดในการลดความเสี่ยงจาก Credential Stuffing คือทำให้ “ข้อมูลที่หลุดจากที่หนึ่ง” ไม่สามารถนำไปใช้กับอีกที่หนึ่งได้ครับ มันก็คือการใช้รหัสผ่านที่ไม่ซ้ำกันระหว่างบริการ และใช้ตัวช่วยอย่าง Password Manager เพื่อให้การสร้างและจัดการรหัสผ่านทำได้จริงในชีวิตประจำวัน
ในการเปิดใช้การยืนยันตัวตนหลายปัจจัย (MFA) ก็ยังช่วยลดโอกาสที่จะถูก Account Takeover ในกรณีที่รหัสผ่านหลุดได้อย่างมีนัยสำคัญ แม้ไม่ได้ปิดช่องทางทั้งหมดก็ตามครับ
สำหรับองค์กรหรือผู้ให้บริการ
ในส่วนของฝั่งระบบนั้น OWASP ได้มีการแนะนำแนวคิดสำคัญ เช่น การจำกัดความถี่แบบเหมาะสม การทำ Bot Mitigation การทำ Monitoring และการออกแบบขั้นตอนกู้คืนบัญชีให้ปลอดภัยมากพอ
อีกประเด็นที่ถูกพูดถึงมากในมาตรฐานสมัยใหม่คือการตรวจรหัสผ่านที่ถูก Compromise หรือรหัสผ่านที่มีความเสี่ยง โดย NIST ระบุแนวคิดให้ระบบตรวจสอบรหัสผ่านกับรายการรหัสที่เคยถูกเปิดเผยหรือพบได้ทั่วไป เพื่อลดโอกาสที่ผู้ใช้จะตั้งรหัสที่มีความเสี่ยงตั้งแต่ต้นทาง
สรุป
Credential Stuffing จะเป็นการโจมตีที่เน้นไปที่ “การใช้ข้อมูลเดิมซ้ำ” มากกว่าการเดารหัส และทำงานได้ดีเมื่อผู้ใช้ยังมีพฤติกรรม Reuse Password อยู่ครับ ความเสี่ยงหลักคือการนำไปสู่การโดน Account Takeover และผลกระทบแบบโดมิโน โดยเฉพาะเมื่อบัญชีอีเมลหลักถูกยึดได้
ในเชิงการป้องกัน แนวทางที่มีประสิทธิภาพที่สุดคือการทำให้รหัสผ่านไม่สามารถ Reuse ข้ามบริการได้ในทางปฏิบัติ และเสริมด้วยมาตรการยืนยันตัวตนเพิ่มเติม ในฝั่งระบบต้องพึ่งพาการป้องกันเชิงพฤติกรรม การตรวจจับ Automation และการออกแบบกระบวนการกู้คืนบัญชีที่รัดกุม
References
- https://owasp.org/www-community/attacks/Credential_stuffing
- https://cheatsheetseries.owasp.org/cheatsheets/Credential_Stuffing_Prevention_Cheat_Sheet.html
- https://www.cloudflare.com/learning/bots/what-is-credential-stuffing/
- https://blog.cloudflare.com/account-compromise-security-overview/
- https://www.ic3.gov/CSA/2022/220818.pdf