Red Agent của Wiz phát hiện lỗ hổng Snowflake chỉ 5 ngày sau khi xuất hiện
Thay đổi được hợp nhất ngày 18/6/2026 trong kho mã công khai snowflakedb/snowflake connector net đã đưa tiêu đề Issue do người dùng kiểm soát trực tiếp vào một lệnh shell. Lỗ hổng nằm ở quy trình tự động hóa GitHub Actions, không phải phiên bản .NET Connector phát hành cho khách hàng.
Thay đổi được hợp nhất ngày 18/6/2026 trong kho mã công khai snowflakedb/snowflake connector net đã đưa tiêu đề Issue do người dùng kiểm soát trực tiếp vào một lệnh shell.
Lỗ hổng nằm ở quy trình tự động hóa GitHub Actions, không phải phiên bản .NET Connector phát hành cho khách hàng.
Commit có ghi “Copilot Autofix powered by AI” với vai trò đồng tác giả, nhưng bằng chứng hiện có chưa xác định Copilot đã tạo thay đổi không an toàn hay chỉ xem xét mà không phát hiện lỗ hổng.
How did GitHub’s Copilot Autofix AI introduce a shell-injection vulnerability into Snowflake’s public .NET connector repository, how did WizAI-generated editorial illustration of automated code review and security testing.
Prompt AI
Create a landscape editorial hero image for this Studio Global article: How did GitHub’s Copilot Autofix AI introduce a shell-injection vulnerability into Snowflake’s public .NET connector repository, how did Wiz. Article summary: The incident was a GitHub Actions workflow injection in Snowflake’s public `snowflake-connector-net` repository, not a flaw in the .NET connector’s shipped runtime code. A June 18, 2026 change in PR #1218 made an issue t. Topic tags: general, general web, user generated. Style: premium digital editorial illustration, source-backed research mood, clean composition, high detail, modern web publication hero. Use reference image context only for broad subject, composition, and topical grounding; do not copy the exact image. Avoid: logos, brand marks, copyrighted characters, real person likenesses, fake screenshots, UI text, readable text, watermarks, charts with fa
openai.com
Sự cố tại Snowflake là một lỗ hổng chèn lệnh vào quy trình GitHub Actions của kho mã công khai snowflakedb/snowflake-connector-net, không phải lỗ hổng trong mã thời gian chạy của .NET Connector được phân phối cho khách hàng. Một thay đổi được hợp nhất ngày 18/6/2026 đã đưa tiêu đề GitHub Issue do kẻ tấn công kiểm soát vào lệnh shell. Năm ngày sau, Red Agent — tác nhân tự động của Wiz — phát hiện và khai thác điểm yếu này trong một cuộc kiểm thử được Snowflake cho phép thông qua chương trình HackerOne, qua đó truy xuất thông tin xác thực Jira nội bộ.
Thay đổi nào đã tạo ra lỗ hổng?
Mã dễ bị tấn công nằm trong .github/workflows/jira_issue.yml, một workflow được kích hoạt mỗi khi có Issue mới được mở. PR #1218, có tiêu đề “SNOW-2069227: Update Jira workflows”, đã thay thế cách xử lý an toàn hơn — đưa tiêu đề Issue vào biến môi trường rồi dùng jq để tạo JSON — bằng cách chèn trực tiếp
${{ github.event.issue.title }}
vào một khối lệnh run: của shell.
Studio Global AI
Tiếp tục nghiên cứu của bạn
Trang này bao gồm câu trả lời dựa trên nguồn mà bạn có thể tiếp tục bên trong Studio Global.
Câu trả lời ngắn gọn cho "Red Agent của Wiz phát hiện lỗ hổng Snowflake chỉ 5 ngày sau khi xuất hiện" là gì?
Thay đổi được hợp nhất ngày 18/6/2026 trong kho mã công khai snowflakedb/snowflake connector net đã đưa tiêu đề Issue do người dùng kiểm soát trực tiếp vào một lệnh shell.
Những điểm chính cần xác nhận đầu tiên là gì?
Thay đổi được hợp nhất ngày 18/6/2026 trong kho mã công khai snowflakedb/snowflake connector net đã đưa tiêu đề Issue do người dùng kiểm soát trực tiếp vào một lệnh shell. Lỗ hổng nằm ở quy trình tự động hóa GitHub Actions, không phải phiên bản .NET Connector phát hành cho khách hàng.
Tôi nên làm gì tiếp theo trong thực tế?
Commit có ghi “Copilot Autofix powered by AI” với vai trò đồng tác giả, nhưng bằng chứng hiện có chưa xác định Copilot đã tạo thay đổi không an toàn hay chỉ xem xét mà không phát hiện lỗ hổng.
Điểm khác biệt này có ý nghĩa quan trọng. GitHub mở rộng biểu thức trên trước khi shell thực thi lệnh. Vì vậy, một tiêu đề chứa dấu nháy đơn có thể đóng chuỗi được lập trình sẵn rồi nối thêm các lệnh shell do người tấn công lựa chọn. Việc dùng sed để làm sạch giá trị sau đó không thể đảo ngược quá trình phân tích cú pháp đã xảy ra trước đó.
Workflow sử dụng sự kiện
issues: opened
, nhưng điều đó không khiến tiêu đề Issue trở thành dữ liệu đáng tin cậy. Bất kỳ người dùng nào có thể mở Issue trong kho mã công khai đều có khả năng kiểm soát tiêu đề. Một điều kiện chỉ giới hạn workflow ở hoạt động của Issue cũng không ngăn được việc dữ liệu do người dùng cung cấp bị nội suy vào lệnh shell.
Commit liên quan ghi “Copilot Autofix powered by AI” là đồng tác giả, và quá trình xem xét có hỗ trợ AI đã không cảnh báo về vấn đề này. Tuy nhiên, bằng chứng hiện có không cho biết Copilot đã tạo ra thay đổi không an toàn hay chỉ tham gia xem xét một thay đổi do con người viết. Kết luận thận trọng hơn là Copilot có liên quan đến thay đổi và đã không phát hiện lỗi chèn lệnh — chưa thể khẳng định mô hình là tác giả của mã.
Red Agent đã tìm ra lỗ hổng ra sao?
Red Agent quét các kho GitHub công khai thuộc tổ chức Snowflake để tìm những mẫu triển khai CI/CD có rủi ro. Nó nhận diện workflow Jira đang đưa dữ liệu Issue không đáng tin cậy vào khối lệnh run:, sau đó suy luận rằng một tiêu đề Issue được chế tạo có thể dẫn tới thực thi lệnh tùy ý trên GitHub-hosted Actions runner.
Ngày 23/6 — chỉ năm ngày sau khi thay đổi dễ bị tấn công được hợp nhất — tác nhân này đã mở một Issue được chế tạo đặc biệt trong khuôn khổ chương trình công bố lỗ hổng HackerOne của Snowflake. Tiêu đề Issue thoát khỏi chuỗi shell và khiến workflow gửi thông tin xác thực Jira tới một điểm gọi ngoài băng do Wiz kiểm soát cho mục đích chứng minh khái niệm được ủy quyền.
Đây là một cuộc kiểm thử bảo mật được cho phép, không phải một vụ xâm nhập mất kiểm soát. Dù vậy, phát hiện kỹ thuật vẫn là có thật: chỉ bằng việc mở một Issue công khai, dữ liệu đầu vào của người dùng có thể đi tới bước workflow đang xử lý thông tin xác thực và biến thao tác thông thường thành khả năng thực thi lệnh.
Khai thác đã làm lộ quyền truy cập nào?
Workflow bị ảnh hưởng có quyền truy cập cấu hình Jira nội bộ của Snowflake, trong đó có URL Jira, email người dùng và API token. Token được thu hồi có liên kết với tài khoản qa@snowflake.net; Wiz dùng token này để xác thực vào cổng Jira nội bộ và đánh giá phạm vi phơi nhiễm.
Các bài tường thuật cho biết token cho phép đọc những dự án Jira liên quan đến kỹ thuật, tuân thủ bảo mật và hoạt động săn lỗi. Tuy nhiên, bằng chứng được cung cấp chưa xác định đầy đủ tập quyền của token hoặc lập danh sách chắc chắn mọi bản ghi có thể truy cập. Kết luận được hỗ trợ tốt nhất là token cho phép truy cập nội dung Jira nội bộ nhạy cảm, chứ chưa có cơ sở để nói nó đem lại quyền truy cập không giới hạn vào toàn bộ hệ thống Snowflake.
Tài sản dễ bị tổn thương là cơ chế tự động hóa CI/CD của kho mã. Chưa có phiên bản Snowflake Connector for .NET phát hành nào được báo cáo là bị ảnh hưởng, vì lỗi nằm trong workflow GitHub Actions chứ không nằm trong mã chạy của connector.
Snowflake đã phản ứng thế nào?
Wiz báo cáo lỗ hổng ngày 23/6. Snowflake khắc phục workflow ngay trong ngày và thay đổi thông tin xác thực Jira bị lộ vào ngày hôm sau.
Sau đó, Snowflake rà soát nhật ký kiểm toán và kết luận Wiz là tác nhân duy nhất trong khoảng thời gian phơi nhiễm. Wiz cũng cho biết đã xóa an toàn dữ liệu thu được trong quá trình chứng minh khái niệm.
Không có truy cập trái phép từ bên thứ ba được báo cáo, chưa có mã CVE nào được cấp và không có bản phát hành connector nào được xác định là bị ảnh hưởng. Những giới hạn này mô tả phạm vi tác động đã được xác nhận, nhưng không khiến thiết kế workflow ban đầu trở nên an toàn: tiêu đề Issue công khai không bao giờ nên được phép trở thành một phần của lệnh shell trong workflow đang xử lý thông tin xác thực nội bộ.
Bài học cho hệ thống CI/CD
Bài học thực tế không chỉ liên quan đến Snowflake hay Copilot. Tiêu đề Issue, tiêu đề pull request, tên nhánh và bình luận GitHub đều phải được xem là dữ liệu đầu vào có khả năng bị kiểm soát bởi kẻ tấn công khi chúng đi vào một lệnh shell.
Một số cách thiết kế workflow an toàn hơn gồm:
Truyền dữ liệu không đáng tin cậy qua biến môi trường thay vì nội suy trực tiếp vào script run:.
Dùng công cụ xử lý có cấu trúc như jq để tạo JSON, thay vì ghép chuỗi shell thủ công.
Thực hiện việc trích dẫn và kiểm tra hợp lệ dữ liệu tại ranh giới với shell.
Tránh để thông tin xác thực xuất hiện trong các bước xử lý dữ liệu do kẻ tấn công kiểm soát nếu có thể.
Kiểm tra các thay đổi do AI tạo ra với mức độ nghiêm ngặt tương đương mã do con người viết.
Sự việc cho thấy rõ một rủi ro bảo mật đang nổi lên: một hệ thống hỗ trợ lập trình bằng AI có thể bỏ sót thay đổi nguy hiểm trong CI/CD, còn một tác nhân tấn công tự động lại có thể tìm ra và xác thực lỗi đó chỉ trong vài ngày. Tự động hóa có thể đẩy nhanh cả quá trình khắc phục lẫn khai thác — nhưng không thể thay thế việc đánh giá độc lập.