ความปลอดภัยไซเบอร์

Copilot Autofix ทำให้เกิดการฉีดเชลล์ใน CI/CD Pipeline ของ Snowflake

mm
เพิ่ม Unite.AI ลงในแหล่งข้อมูลที่คุณต้องการบน Google

การแก้ไขด้านความปลอดภัยที่เขียนโดย Copilot Autofix ของ GitHub และถูกรวมเข้ากับรีโพซิทอรีของ Snowflake เมื่อวันที่ 18 มิถุนายน 2026 ได้ลบรูปแบบการทำให้ข้อมูลสะอาดออกและทำให้ CI/CD pipeline ของบริษัทเปิดให้มีการฉีดคำสั่ง, และห้าวันต่อมา, ตัวแทนวิจัย AI อิสระได้พบช่องโหว่นั้น, ใช้ประโยชน์จากมัน, และดึงข้อมูลรับรอง Jira ที่ทำงานได้ออกจาก GitHub Actions runner, Wiz Research เปิดเผยเมื่อ 17 สิงหาคม 2026.

ช่องโหว่นี้อยู่ใน jira_issue.yml, ซึ่งเป็น workflow ของ GitHub Actions ใน snowflakedb/snowflake-connector-net, รีโพซิทอรีสาธารณะสำหรับคอนเน็กเตอร์ .NET ของ Snowflake. Workflow นี้จะทำงานทุกครั้งที่มีผู้เปิด issue บน GitHub และนำชื่อเรื่องของ issue (ข้อความที่ผู้ยื่นเต็มที่ควบคุม) ไปแทรกโดยตรงในสคริปต์เชลล์. เนื่องจากทริกเกอร์คือ issues: opened, บัญชี GitHub ใด ๆ บนอินเทอร์เน็ตก็สามารถเรียกใช้ได้โดยไม่ต้องยืนยันตัวตน.

Red Agent ของ Wiz, เครื่องมือวิจัยความปลอดภัยอิสระที่ทำงานผ่านโปรแกรมบัญชีบัณฑิตของ Snowflake บน HackerOne, ได้ทำเครื่องหมาย workflow นี้, สร้าง exploit ที่ทำงานได้, และดึง token ของ Jira API ออกจากสภาพแวดล้อมของ runner. Snowflake แก้ไข workflow นั้นในวันเดียวกันที่ได้รับรายงาน, 23 มิถุนายน 2026, หมุนเวียนข้อมูลรับรองอีกหนึ่งวันหลังจากนั้น, และบอก Wiz ว่าบันทึกการตรวจสอบของบริษัทแสดงว่าไม่มีผู้ใช้คนอื่นเข้าถึงระบบที่เปิดเผยในช่วงห้าวันนั้น.

The “Autofix” Removed the Sanitizer

คอมมิตที่แนะนำรูปแบบที่สามารถฉีดได้ถูกนำเข้าผ่าน PR #1218, “SNOW-2069227: Update jira workflows”, รวมเมื่อ 18 มิถุนายน 2026. ประวัติของ pull request แสดงให้เห็นว่ามีผู้เขียนมนุษย์ทำงานกับการอัตโนมัติของ Jira ตั้งแต่สิงหาคม 2025 — และในระหว่างนั้น, มีคอมมิตที่ร่วมเขียนโดย Copilot Autofix powered by AI, บอท GitHub Advanced Security ที่สร้างข้อเสนอการแก้ไขสำหรับการแจ้งเตือนการสแกนโค้ด.

ข้อเสนอจาก AI เปลี่ยนวิธีที่ workflow จัดการกับชื่อเรื่องของ issue. โค้ดเดิมส่งชื่อเรื่องผ่านตัวแปร env: และสร้าง payload JSON ด้วย jq --arg, รูปแบบที่ทำให้ข้อความที่ไม่เชื่อถือไม่ถูกใส่ลงในเชลล์. การแทนที่ที่เสนอให้ละทิ้งวิธีนั้นและใช้การขยายสตริงโดยตรง:

run: | TITLE=$(echo '${{ github.event.issue.title }}' | sed 's/"/\"/g' | sed "s/'/\'/g")

การหนีอักขระด้วย sed ทำงานหลังจากที่เทมเพลตเอนจินของ GitHub แทนที่ชื่อเรื่องในสคริปต์แล้ว. เครื่องหมายอัญประกาศเดี่ยวในชื่อเรื่องจะทำให้การห่อ echo '...' พังออก, และทุกอย่างที่ตามมาจะถูกประมวลผลเป็นเชลล์. เอกสารของ GitHub สำหรับ Copilot Autofix อธิบายคุณลักษณะนี้ว่าเป็นการสร้าง “ข้อเสนอการแก้ไขเดียวสำหรับการแจ้งเตือน, ซึ่งคุณจะตรวจสอบและนำไปใช้ด้วยตนเอง” — ขั้นตอนการตรวจสอบคือจุดที่ข้อเสนอหนึ่งนี้ผ่านเข้าไปได้.

workflow ยังมีเงื่อนไขการป้องกันที่ดูเหมือนจะจำกัดผู้ที่สามารถเรียกใช้ได้:

if: (github.event_name == 'issues' && github.event.pull_request.user.login != 'whitesource-for-github-com[bot]')

บนเหตุการณ์ issue, github.event.pull_request จะเป็น null เสมอ, ดังนั้นการเปรียบเทียบจะให้ค่า true ตลอดเวลา. ผู้ใช้ GitHub ทุกคนจึงผ่านเกตได้.

An Agent on Each Side of the Exploit

การพยายามดึงข้อมูลของ Red Agent ครั้งแรกล้มเหลว. payload ของมันใช้ตัวอักษรคอมเมนต์ # เพื่อกลืนส่วนที่เหลือของบรรทัดที่ฉีด, แต่คอมเมนต์นั้นก็กินวงเล็บปิดของ TITLE=$(...) ไป, ทำให้ runner คืนข้อผิดพลาดไวยากรณ์ bash แทนที่จะทำงาน. ตามที่ Wiz รายงาน, ตัวแทนได้วิเคราะห์ข้อผิดพลาด, เขียน payload ใหม่ให้ปิดบล็อกเชลล์ด้วย ; echo ', แล้วลองอีกครั้ง.

payload ที่ทำงานได้, ส่งเป็นชื่อเรื่องของ issue, ได้ทำการเข้ารหัส base64 ตัวแปรสภาพแวดล้อม JIRA_API_TOKEN, JIRA_USER_EMAIL, และ JIRA_BASE_URL ของ runner แล้วส่งไปยัง listener ภายนอกผ่าน curl. การตอบกลับมาถึงจาก runner ของ GitHub Actions ที่โฮสต์บน Azure ภายในไม่กี่วินาที.

token ที่กู้คืนสามารถยืนยันตัวตนเป็น [email protected] ต่อ snowflakecomputing.atlassian.net, โดยมีสิทธิ์อ่านในโครงการวิศวกรรม, ความปลอดภัย, การปฏิบัติตามกฎระเบียบ, และการติดตามบัญชีบัณฑิตของ Snowflake ทั้งหมด.

การแก้ไขของ Snowflake, ที่ถูกรวมใน PR #1402 เมื่อ 23 มิถุนายน 2026, ได้คืนค่าตัวแปร env: ที่ปลอดภัยและรูปแบบการพาร์เซิง jq --arg อีกครั้ง. token ของ Jira ถูกเพิกถอนและหมุนเวียนใหม่เมื่อ 24 มิถุนายน 2026. Wiz กล่าวว่าได้ลบข้อมูลทั้งหมดที่เข้าถึงระหว่างการทดสอบ proof‑of‑concept อย่างปลอดภัย.

“Snowflake ขอบคุณ Wiz สำหรับการรายงานที่รับผิดชอบและความร่วมมือเกี่ยวกับการค้นพบเหล่านี้ผ่านโปรแกรมการเปิดเผยช่องโหว่และบัญชีบัณฑิตของเรา, HackerOne,” บริษัทกล่าวในแถลงการณ์ที่เผยแพร่พร้อมกับรายงานของ Wiz. “การเปิดเผยได้รับเมื่อ 23 มิถุนายน 2026, และได้รับการตรวจสอบและแก้ไขโดยทันที, การตรวจสอบของเราพบว่าไม่มีหลักฐานของการเข้าถึงโดยไม่ได้รับอนุญาต.”

What the Five-Day Window Shows

การเปิดเผยนี้อยู่ระหว่างรูปแบบที่ได้รับการบันทึกไว้: การเปลี่ยนแปลงที่ช่วยโดย AI ผ่านการตรวจสอบเร็วกว่าแนวคิดด้านความปลอดภัยที่ตั้งไว้. บันทึกการตรวจสอบของ Snowflake ทำให้เหตุการณ์นี้สามารถอ่านได้ชัดเจน: พวกเขาสามารถระบุได้ว่าไม่มีผู้เข้าถึงจากบุคคลที่สามในช่วงห้าวันนั้น, และ Wiz ยืนยันเช่นเดียวกัน.

ไทม์ไลน์ยังบีบอัดลำดับเหตุการณ์ที่อุตสาหกรรมมักถือเป็นสมมติฐาน. ผู้ช่วยเขียนโค้ดได้ลบรูปแบบการป้องกันที่ถูกวางไว้เพื่อป้องกันการฉีดเชลล์, เนื่องจากผู้ช่วยไม่มีบันทึกว่าทำไมรูปแบบนั้นถึงมีอยู่. จากนั้นตัวแทนโจมตีได้ค้นพบและใช้ประโยชน์จากผลลัพธ์ในไม่กี่วัน, ปรับแก้ exploit ของตนเองตามผลลัพธ์ข้อผิดพลาดที่เกิดขึ้นแบบเรียลไทม์. ด้านการโจมตีทำงานโดยไม่มีมนุษย์อยู่ที่คีย์บอร์ด; ในด้านการเขียนโค้ด, AI สร้างการเปลี่ยนแปลงแต่คนมนุษย์เป็นผู้ตรวจสอบและรวมข้อเสนอ — ซึ่งเป็นขั้นตอนการตรวจสอบที่ล้มเหลว.

รายงานของ Wiz แนะนำให้ pull request ที่สร้างโดย AI ผ่านการวิเคราะห์สถิติเช่นเดียวกับโค้ดของมนุษย์, ให้ทีมย่ออายุของข้อมูลรับรองให้สอดคล้องกับความเร็วของการค้นพบอัตโนมัติ, และให้แนวป้องกันบล็อกตัวแทนจากการแทนที่พาร์เซอร์ที่มีโครงสร้างด้วยการแทรกสตริงโดยตรง. Check Point ได้ย้ายการตรวจสอบพรอมต์สำหรับการจราจร AI ไปยังไฟร์วอลล์ระดับองค์กรในช่วงต้นฤดูร้อนนี้, และ Unite.AI ได้ครอบคลุมการหลบหนี sandbox ของตัวแทนและ ระบบที่เป็นตัวแทนที่เข้าถึงเป้าหมายการผลิตจริง ขณะที่ด้านโจมตีพัฒนา. เหตุการณ์ของ Snowflake คือเรื่องเดียวกันที่เล่าจากภายใน CI pipeline: ช่องโหว่นั้นเปิดใช้งานเป็นเวลาห้าวัน, และเหตุผลเดียวที่มันถูกนำเสนอเป็นกรณีศึกษาแทนการแจ้งเตือนการละเมิดคือว่า ตัวแทนคนใดเข้าถึงก่อน.

ไมลส์ โอคาดะ เป็นนักวิเคราะห์ที่สร้างโดย AI ที่ Unite.AI โดยครอบคลุมเรื่องปัญญาประดิษฐ์และความปลอดภัยทางไซเบอร์ โดยมุ่งเน้นไปที่ภัยคุกคามที่เกิดขึ้นใหม่ สถาปัตยกรรมการป้องกัน และพลวัตที่เปลี่ยนแปลงระหว่างผู้โจมตีและระบบอัตโนมัติ ผลงานของเขาตรวจสอบว่า AI เปลี่ยนแปลงการดำเนินงานด้านความปลอดภัยอย่างไร ตั้งแต่การตรวจจับและตอบสนองต่อภัยคุกคามอัตโนมัติ ไปจนถึงการเพิ่มขึ้นของเทคนิค AI ที่เป็นปฏิปักษ์

ด้วยมุมมองทางเทคนิคและ調査 ไมลส์วิเคราะห์ผลการวิจัยด้านความปลอดภัย การเปิดเผยเหตุการณ์ และการนำไปใช้จริงเพื่อทำความเข้าใจว่า AI เสริมสร้างการป้องกันในจุดไหน และที่ไหนที่ AI นำความเสี่ยงใหม่ๆ มาให้ เขาให้ความสนใจเป็นพิเศษกับการใช้ประโยชน์จากแบบจำลอง การปนเปื้อนข้อมูล การอัตโนมัติของการโจมตี และความเป็นจริงในการปฏิบัติงานของระบบที่ได้รับการเสริมสร้างด้วย AI ในระดับใหญ่

บทความที่เขียนโดยไมลส์ โอคาดะถูกสร้างโดย AI และได้รับการตรวจสอบโดยทีมบรรณาธิการของ Unite.AI เพื่อให้แน่ใจถึงความถูกต้อง ความเข้มงวด และการรายงานที่มีความรับผิดชอบเกี่ยวกับภูมิทัศน์ด้านความปลอดภัยของ AI ที่เปลี่ยนแปลงอย่างรวดเร็ว