ช่องโหว่ CodeBreach นำไปสู่การเข้าควบคุมระบบ AWS Console


1 January 2569
16
ช่องโหว่ CodeBreach นำไปสู่การเข้าควบคุมระบบ AWS Console

ช่องโหว่นี้ทำให้ GitHub Repository หลักของ AWS ตกอยู่ในความเสี่ยงต่อการถูกควบคุมทั้งหมด โดยเฉพาะ AWS JavaScript SDK ซึ่งเป็น Library ที่ใช้งานบน AWS Console เองจากการวิเคราะห์พบว่า 66% ของสภาพแวดล้อม Cloud มีการใช้งาน JavaScript SDK หากเกิดการโจมตี Supply Chain สำเร็จ อาจส่งผลให้ AWS Console ของผู้ใช้ทุกคนถูกเจาะ เพื่อป้องกันเหตุการณ์ในอนาคต AWS ได้เปิดตัว Pull Request Comment Approval build gate รูปแบบใหม่ ซึ่งเป็นแนวทางที่ง่ายและปลอดภัยในการป้องกันไม่ให้ Build ที่ไม่น่าเชื่อถือถูกเข้าถึง

ความเสี่ยงและผลกระทบ

– ผู้ไม่ประสงค์ดีสามารถหลบเลี่ยงการตรวจสอบของ CI/CD Pipeline และเรียกใช้งาน Build ที่มีสิทธิ์สูงได้ จากการตั้งค่า Regular Expression ที่ไม่รัดกุม

– GitHub Repository สำคัญของ AWS มีความเสี่ยงต่อการถูกควบคุมทั้งหมด โดยเฉพาะ AWS JavaScript SDK ซึ่งเป็นองค์ประกอบหลักของ AWS Console

– ผู้ไม่ประสงค์ดีอาจฝังโค้ดอันตรายลงในซอฟต์แวร์ ส่งผลให้เกิดการโจมตีแบบ Supply Chain ในวงกว้าง เนื่องจากประมาณ 66% ของสภาพแวดล้อม Cloud ใช้ JavaScript SDK ช่องโหว่นี้อาจส่งผลกระทบต่อผู้ใช้งานจำนวนมาก

– หากการโจมตีประสบความสำเร็จ อาจนำไปสู่การเข้าควบคุม AWS Console และคุกคามความปลอดภัยของ AWS Account ทุกบัญชี

พฤติกรรมที่ควรเฝ้าระวัง

– การสร้างหรือใช้งาน GitHub Account ใหม่ที่มี User ID ใกล้เคียงหรือซ้อนทับกับ ID ของผู้ดูแลระบบ (Maintainer)

– Pull Request จากบัญชีที่ไม่คุ้นเคย แต่สามารถเรียกใช้งาน CI/CD Build ที่มีสิทธิ์สูงได้

– การทำงานของ CodeBuild หรือ Pipeline ที่ถูกรันทันทีหลังจากมี Pull Request โดยไม่มีการอนุมัติจากผู้ดูแล

– การเข้าถึงหรือดึงข้อมูลจาก Environment Variables และหน่วยความจำของ Build Environment โดยไม่จำเป็น

– การเปลี่ยนแปลงโค้ดใน Library หรือ Dependency สำคัญ เช่น SDK หรือ Package หลัก โดยไม่มีเหตุผลทางเทคนิคที่ชัดเจน

– การอัปเดตแพ็กเกจหรือการปล่อยเวอร์ชั่นใหม่บ่อยผิดปกติ โดยเฉพาะในโครงการที่มีผู้ใช้งานจำนวนมาก

– Log ของระบบ CI/CD แสดงพฤติกรรมผิดปกติ เช่น การเรียกคำสั่งที่เกี่ยวข้องกับ Credential, Token หรือ Secret

คำแนะนำ

– ตรวจสอบและแก้ไขการใช้งาน Regular Expression ในระบบ CI/CD ให้มีการกำหนด anchor ^ และ $ เพื่อบังคับการจับคู่แบบตรงตัว (Exact Match)

– หลีกเลี่ยงการใช้ Regular Expression ในการทำ Allow-list สำหรับตัวตนผู้ใช้งาน ควรใช้การตรวจสอบค่าแบบเท่ากันโดยตรง (Exact Comparison) แทน

-แยก Pipeline สำหรับ Pull Request จากผู้ที่ไม่เชื่อถือออกจาก Pipeline ที่มีสิทธิ์สูงอย่างชัดเจน

– กำหนดให้การรัน Build ที่มีสิทธิ์สูงต้องผ่านการอนุมัติจากผู้ดูแลระบบก่อนทุกครั้ง เช่น การใช้ Pull Request Comment Approval

– จำกัดการเข้าถึง Secret, Credential และ Token ภายใน Build Environment ให้เฉพาะงานที่จำเป็นเท่านั้น

– เปิดใช้งานการตรวจสอบและบันทึก Log ของระบบ CI/CD อย่างละเอียด พร้อมตั้งค่าแจ้งเตือนเมื่อพบพฤติกรรมผิดปกติ

– ทบทวนสิทธิ์ของ GitHub Repository, CI/CD Service Account และ Credential ต่าง ๆ อย่างสม่ำเสมอ

– ทดสอบความปลอดภัยของ Build Pipeline และ Supply Chain อย่างต่อเนื่อง เพื่อป้องกันช่องโหว่ที่อาจถูกมองข้าม

Reference: https://securityonline.info/codebreach-missing-regex-anchors-exposed-aws-