
ที่มาภาพ: InfoWorld
GitHub ปรับ actions/checkout เวอร์ชัน 7 เพื่อบล็อกการโจมตีแบบ pwn request
⚡ สรุป 30 วิ
GitHub ปรับปรุง actions/checkout เวอร์ชัน 7 ให้บล็อก workflow ที่ดึงโค้ดจากฟอร์กที่ยังไม่ได้ตรวจสอบเมื่อใช้ pull_request_target หรือ workflow_run…
GitHub ปรับปรุงความปลอดภัยของ actions/checkout เวอร์ชัน 7 เพื่อป้องกันการโจมตีแบบ “pwn request” ที่ใช้ pull_request_target รันโค้ดจากฟอร์กที่ยังไม่ได้ตรวจสอบ โดยอัตโนมัติทำให้ workflow ที่พยายามดึงโค้ดจากฟอร์กจะล้มเหลว และผู้พัฒนาต้องเปิดใช้งานการยกเว้นเท่านั้น เป็นสัญญาณของยุค “secure by default” ที่ระบบจะกำหนดมาตรการความปลอดภัยให้โดยอัตโนมัติ
Overview
GitHub ประกาศเมื่อ 18 มิถุนายน 2566 ว่า actions/checkout เวอร์ชัน 7 จะบล็อก workflow ที่ทำงานภายใต้เหตุการณ์ pull_request_target หรือ workflow_run เมื่อพยายามเช็คเอาต์โค้ดจากฟอร์กที่ยังไม่ผ่านการรีวิว การบล็อกนี้ทำให้โค้ดที่อาจเป็นอันตรายไม่สามารถรันด้วยสิทธิ์เต็มของ workflow ได้ ผู้ใช้ที่ต้องการยกเว้นสามารถเพิ่มพารามิเตอร์ allow-unsafe-pr-checkout เข้าไปในไฟล์ workflow ได้เท่านั้น
การเปลี่ยนแปลงนี้จะถูกนำกลับไปใช้กับเวอร์ชันหลักทั้งหมดของ actions/checkout ที่รองรับตั้งแต่ 16 กรกฎาคม 2566 ต่อไป โดย workflow ที่อ้างอิงเวอร์ชันหลักแบบ floating tag เช่น actions/checkout@v4 จะรับอัปเดตอัตโนมัติ ส่วน workflow ที่ล็อกไว้ที่ SHA, เวอร์ชันย่อยหรือแพตช์จะไม่ถูกอัปเดตโดยอัตโนมัติและต้องอัปเกรดผ่าน Dependabot หรือกระบวนการอัปเดตที่มีอยู่
Technical Change
เวอร์ชัน 7 ของ actions/checkout เพิ่มการตรวจสอบสถานะของเหตุการณ์ workflow ก่อนทำการเช็คเอาต์ หากเหตุการณ์เป็น pull_request_target หรือ workflow_run และแหล่งที่มาคือฟอร์กที่ไม่ได้รับการตรวจสอบ ระบบจะส่งข้อผิดพลาดและหยุดการดำเนินการทันที การตรวจสอบนี้ทำงานระดับระบบและไม่ขึ้นกับการตั้งค่าใน workflow ของผู้ใช้
- allow-unsafe-pr-checkout – พารามิเตอร์ที่ต้องเพิ่มเพื่อยกเว้นการบล็อกในกรณีพิเศษ
- floating major tag – ตัวอย่างเช่น actions/checkout@v4 จะรับการอัปเดตอัตโนมัติเมื่อมีการ backport
- specific SHA/minor/patch – ไม่ได้รับผลกระทบจากการ backport ต้องอัปเกรดด้วยตนเอง
การออกแบบนี้มุ่งให้ผู้ใช้ที่ต้องการความยืดหยุ่นยังคงสามารถทำได้โดยต้องรับความเสี่ยงอย่างชัดเจน ในขณะที่ส่วนใหญ่ของผู้ใช้จะได้รับการปกป้องโดยค่าเริ่มต้น
Security Context
จุดอ่อนที่ทำให้เกิดการโจมตีแบบ “pwn request” นั้นไม่ได้อยู่ที่ trigger pull_request_target โดยตรง แต่เกิดจากการใช้ actions/checkout ดึงโค้ดจากฟอร์กที่ยังไม่ผ่านการตรวจสอบ ซึ่งทำให้โค้ดของผู้โจมตีทำงานด้วยสิทธิ์เต็มของ workflow รวมถึงการเข้าถึง secret ต่าง ๆ เช่น API keys และ token เมื่อผู้พัฒนาตั้งค่า pull_request_target โดยไม่ระมัดระวัง ระบบจึงเปิดช่องทางให้ผู้โจมตีฝังโค้ดอันตรายในฟอร์กและรันผ่าน workflow
GitHub ยอมรับว่าปัญหานี้เป็น “blind spot” ที่ถูกค้นพบมานานหลายปี แต่การแก้ไขจริงจังเริ่มขึ้นเมื่อเกิดการระเบิดของการโจมตีในช่วงต้นปี โดยเฉพาะจากกลุ่ม TeamPCP ที่ใช้เทคนิค pwn request เพื่อเข้าควบคุม repository และทำลายความปลอดภัยของระบบ การบล็อกอัตโนมัติของเวอร์ชัน 7 จึงเป็นการตอบสนองที่สำคัญต่อช่องโหว่นี้
Recent Incidents
ในเดือนที่ผ่านมา กลุ่ม TeamPCP ได้โจมตีแพคเกจของ npm จำนวน 170 แพคเกจ รวมถึงระบบนิเวศของ TanStack Router โดยใช้การโจมตีแบบ pwn request ทำให้โค้ดอันตรายถูกแทรกเข้าไปในกระบวนการ build ของผู้ใช้ทั่วโลก เหตุการณ์นี้เป็นตัวอย่างที่ชัดเจนว่าแม้การตั้งค่า pull_request_target จะเป็นมาตรฐานที่ปลอดภัยเมื่อใช้อย่างถูกต้อง แต่การกำหนดค่าที่ไม่เหมาะสมก็สามารถกลายเป็นประตูหลังได้
นอกจากนี้ GitHub เองก็ประสบกับการละเมิดข้อมูลเมื่อเดือนก่อน โดยผู้โจมตีได้ดึงข้อมูลซอร์สโค้ดจาก repository ภายในของบริษัทจำนวน 3,800 แห่ง แม้ว่าการละเมิดนี้ไม่ได้เกี่ยวข้องกับ pwn request แต่แสดงให้เห็นว่าการรักษาความปลอดภัยในระบบ CI/CD ยังคงต้องการการตรวจสอบและอัปเดตอย่างต่อเนื่อง GitHub ยังได้ดำเนินการจำกัดการรันสคริปต์ติดตั้งอัตโนมัติใน npm ซึ่งเป็นมาตรการเสริมเพื่อยับยั้งวิธีการโจมตีแบบอื่น ๆ
Future Outlook
GitHub ระบุว่าการบล็อกในเวอร์ชัน 7 เป็นเพียงขั้นตอนแรกของโครงการ “secure by default” และอาจมีการขยายการ harden ไปยังเหตุการณ์อื่น ๆ ในเวอร์ชันถัดไป โดยเฉพาะเหตุการณ์ที่อาจถูกใช้ในการดึงโค้ดจากฟอร์กโดยไม่ได้ตรวจสอบ การอัปเดตต่อเนื่องนี้คาดว่าจะทำให้ผู้พัฒนาต้องพึ่งพาเครื่องมืออัตโนมัติเช่น Dependabot ในการตรวจสอบและอัปเดต dependencies อย่างสม่ำเสมอ
ในระยะยาว การเปลี่ยนแปลงนี้อาจกระตุ้นให้ผู้ให้บริการ CI/CD รายอื่น ๆ ปรับมาตรการความปลอดภัยเช่นเดียวกัน เพื่อป้องกันการใช้ trigger ที่อาจทำให้เกิดการรั่วไหลของ secret และส่งผลให้ชุมชนพัฒนาโอเพ่นซอร์สต้องคำนึงถึงการกำหนดค่า workflow อย่างระมัดระวังมากขึ้น
Impact
สำหรับผู้ใช้ GitHub Actions ที่อ้างอิง actions/checkout ด้วย tag หลัก เช่น actions/checkout@v4 การอัปเดตนี้จะทำงานโดยอัตโนมัติ ทำให้ส่วนใหญ่ของ repository จะได้รับการป้องกันจากการโจมตีแบบ pwn request โดยไม่ต้องทำการเปลี่ยนแปลงใด ๆ แต่ผู้ใช้ที่ล็อกเวอร์ชันลงระดับ SHA หรือเวอร์ชันย่อยจำเป็นต้องดำเนินการอัปเกรดด้วยตนเอง หากไม่ทำเช่นนั้น workflow ของพวกเขาอาจยังคงเสี่ยงต่อการรันโค้ดที่ไม่ได้รับการตรวจสอบ
องค์กรที่ใช้ GitHub เป็นส่วนสำคัญของกระบวนการพัฒนาจะต้องตรวจสอบนโยบายการใช้ pull_request_target และตรวจสอบว่ามีการเพิ่ม allow-unsafe-pr-checkout เฉพาะในกรณีที่จำเป็นจริง ๆ การตรวจสอบนี้อาจต้องรวมถึงการฝึกอบรมทีมพัฒนาให้เข้าใจความแตกต่างระหว่าง trigger ต่าง ๆ และผลกระทบต่อความปลอดภัยของระบบ CI/CD
Summary
GitHub ปรับปรุง actions/checkout ไปเป็นเวอร์ชัน 7 เพื่อบล็อกการดึงโค้ดจากฟอร์กที่ยังไม่ตรวจสอบในเหตุการณ์ pull_request_target และ workflow_run โดยอัตโนมัติ การเปลี่ยนแปลงนี้เป็นส่วนหนึ่งของแนวทาง “secure by default” ที่คาดว่าจะขยายการป้องกันต่อไปในอนาคต.
แชร์บทความนี้:
ชอบบทความแบบนี้?
สมัคร AI Automate Weekly Newsletter — รับเคล็ดลับ AI + how-to ใหม่
ทุกสัปดาห์ตรงถึง inbox ฟรี ไม่มีสแปม
แหล่งข่าวต้นฉบับ
- ชื่อต้นฉบับ
- GitHub Actions hardens checkout security to block ‘pwn request’ attacks
- ผู้เขียน
- Unknown
- แหล่ง
- InfoWorld
- วันที่เผยแพร่
- 23 มิถุนายน 2569 เวลา 06:43



