ช่องโหว่ 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-
