การใช้ AI เพื่อค้นหาบั๊กด้านการตรวจสอบสิทธิ์ (Authorization Bugs)

โปรแกรม Bug bounty กำลังปิดตัวลง Nextcloud หยุดให้รางวัลเป็นเงินเนื่องจากรายงานจาก AI ที่ไม่มีคุณภาพ Mattermost ยุติโปรแกรมของตน ส่วน Internet Bug Bounty ได้ลดการจ่ายเงินรางวัลลงถึง 80 เปอร์เซ็นต์

ปัญหาไม่ใช่ว่า AI หาบั๊กไม่เจอ แต่ปัญหาคือ AI สร้างรายงานจำนวนมากที่ดูเหมือนจริงแต่กลับผิดพลาด ทีม Triage กำลังจมกองข้อมูลขยะ (noise) เหล่านี้

ในปี 2026 ทักษะที่คุณต้องการไม่ใช่การหาบั๊ก โมเดลจะให้ไอเดียคุณถึง 50 อย่างก่อนมื้อเที่ยง ทักษะที่แท้จริงคือการพิสูจน์ว่าทำไม 49 อย่างในนั้นถึงไม่ใช่เรื่องจริง คุณต้องการวิธีการที่สามารถระบุสิ่งที่ "ไม่ใช่บั๊ก" ได้อย่างถูกต้อง (correct negatives)

ใช้ระเบียบวิธีแบบสองขั้นตอนสำหรับซอร์สโค้ดที่เปิดเผย (source-available code):

  1. Fan-out (ใช้โมเดลราคาถูก) แบ่งขอบเขตการตรวจสอบสิทธิ์ (authorization surface) ออกเป็นส่วนย่อยๆ อ่านแต่ละส่วนแบบขนาน มองหากฎที่ถูกละเมิด มองหาจุดที่วัตถุถูกโหลดโดยไม่มีการตรวจสอบเจ้าของ มองหาเส้นทางที่ข้ามผ่านด่านความปลอดภัย มุ่งเน้นไปที่การหาเบาะแสที่เป็นไปได้ทั้งหมด และเตรียมใจรับมือกับผลบวกปลอม (false positives) จำนวนมาก

  2. Adversarial Verification (ใช้โมเดลราคาแพง) นำทุกเบาะแสมาพยายามหักล้าง เริ่มต้นด้วยสมมติฐานว่าเบาะแสนั้นไม่เป็นความจริง เบาะแสจะยังคงอยู่ก็ต่อเมื่อคุณสามารถแสดงบรรทัดโค้ดที่ชัดเจนเพื่อพิสูจน์ว่าไม่มีตัวป้องกันความปลอดภัยอยู่ตรงนั้น คุณต้องพิสูจน์ให้ได้ว่าเส้นทางนั้นสามารถเข้าถึงได้จริงและไม่มีสิ่งอื่นใดมาขัดขวางการโจมตีได้

ผลลัพธ์ที่สำคัญที่สุดคือรายการการหักล้าง (refutations) รายการเหตุผลที่ระบุว่าทำไมบางสิ่งถึง "ไม่ใช่" บั๊ก จะช่วยสร้างความเชื่อมั่นให้กับทีม triager

ผมได้ทดสอบ Ory Kratos ซึ่งเป็น identity server ระบบนี้จัดการการดำเนินการที่ละเอียดอ่อน เช่น การเปลี่ยนรหัสผ่านหรืออีเมล ซึ่งเป็นพื้นที่ที่มีความเสี่ยงสูง

ขั้นตอนแรกพบเบาะแสหนึ่ง ซึ่งดูเหมือนจะเป็นข้อบกพร่องร้ายแรงในวิธีที่ระบบจัดการ OIDC flows เครื่องมือตรวจจับรูปแบบ (pattern-matching tool) จะเรียกสิ่งนี้ว่าเป็นบั๊กที่มีความรุนแรงสูง

ผมใช้ขั้นตอนที่สองเพื่อตรวจสอบ และพบว่าการตรวจสอบที่ขาดหายไปนั้นไม่ได้นำไปสู่การโจมตี (exploit) ได้ ระบบใช้ live session cookies และมีการตรวจสอบสิทธิ์ซ้ำอีกครั้งในขั้นตอนสุดท้าย ข้อบกพร่องนั้นจึงไม่ใช่จุดสำคัญที่ส่งผลกระทบต่อความปลอดภัย (not load-bearing)

หากผมรายงานเรื่องนั้นไป ผมจะเสียความน่าเชื่อถือ คุณค่าที่แท้จริงคือความมั่นใจที่จะนิ่งเฉย

วิธีการเดียวกันนี้พบกับบั๊กจริงในเป้าหมายอื่น จุดเข้าใช้งานรอง (secondary entry point) ลืมทำสำเนาการตรวจสอบสิทธิ์ (mirror an authorization check) ทำให้ผู้ใช้สามารถเข้าผ่านทางประตูข้างได้ แม้ว่าสิทธิ์การเข้าถึงจะถูกเพิกถอนไปแล้วก็ตาม

ผู้ชนะในการล่าบั๊กจะมุ่งเน้นไปที่สัญญาณ (signal) ไม่ใช่ปริมาณ (volume) จงใช้ AI เพื่ออ่านโค้ดให้ได้มากกว่าที่มนุษย์จะทำได้ จากนั้นใช้ AI เพื่อพิสูจน์ว่าตัวเองคิดผิด ก่อนที่คุณจะส่งรายงาน

Source: https://dev.to/fdjedkdlsspec/using-ai-to-find-authorization-bugs-and-to-prove-the-ones-that-arent-real-3m7d

Optional learning community: https://t.me/GyaanSetuAi