Tác Tử AI Của Wiz Tìm Ra Lỗ Hổng Trong Kho Mã Snowflake — Và Cuộc Tranh Cãi Ai Đã Viết Ra Nó

Ngày 17/8/2026, Wiz công bố việc tác tử tự động Red Agent tìm và khai thác một lỗ hổng chèn lệnh trong workflow GitHub Actions của kho mã công khai snowflake-connector-net. Lỗ hổng chỉ sống 5 ngày. Phần gây tranh cãi là dòng đồng tác giả 'Copilot Autofix' trong commit — GitHub phản bác cách diễn giả

Một tác tử AI đi săn lỗ hổng đã tìm ra một lỗi nghiêm trọng trong kho mã công khai của Snowflake chỉ 5 ngày sau khi nó được đưa lên nhánh chính. Câu chuyện lẽ ra dừng ở đó. Nhưng một dòng "đồng tác giả" trong commit đã biến nó thành cuộc tranh cãi về việc AI có phải là thứ đã viết ra lỗ hổng hay không — và câu trả lời trung thực là: chưa ai chứng minh được.

Lỗ hổng là gì?

Kho mã snowflakedb/snowflake-connector-net là kho công khai trên GitHub. Trong đó có một workflow GitHub Actions tên jira_issue.yml, có nhiệm vụ tạo một ticket Jira mỗi khi ai đó mở issue mới trên kho.

Vấn đề nằm ở chỗ tiêu đề issue — nội dung do người ngoài nhập tuỳ ý — được ghép thẳng vào một câu lệnh shell mà không xử lý an toàn. Một tiêu đề chứa dấu nháy đơn đặt đúng chỗ có thể thoát khỏi chuỗi và khiến phần còn lại bị hiểu là lệnh. Hệ quả: một người dùng không cần đăng nhập, chỉ cần mở một issue, là có thể chạy lệnh tuỳ ý trên runner của GitHub Actions.

Đây là lớp lỗi script injection kinh điển trong GitHub Actions, và nó nguy hiểm vì runner thường mang theo token và biến bí mật.

Dòng thời gian: sống 5 ngày

Mốc Sự kiện
18/6/2026 PR #1218 được gộp vào nhánh chính, lỗ hổng bắt đầu có hiệu lực
23/6/2026 Wiz Red Agent phát hiện, khai thác thành công và báo cáo cho Snowflake
23/6/2026 Snowflake vá ngay trong ngày và xoay vòng lại thông tin xác thực
17/8/2026 Wiz công bố chi tiết vụ việc trên blog

Token Jira bị lấy ra xác thực dưới danh nghĩa một tài khoản QA của Snowflake, cho quyền đọc các dự án kỹ thuật, tuân thủ an ninh và chương trình bug bounty. Snowflake tuyên bố cuộc điều tra của họ không tìm thấy bằng chứng về truy cập trái phép.

Dòng thời gian lỗ hổng Snowflake GitHub Actions: PR 1218 được gộp ngày 18/6/2026 khiến lỗ hổng có hiệu lực, Wiz Red Agent tìm ra và báo cáo ngày 23/6, Snowflake vá ngay trong ngày bằng cách xoay vòng xác thực, Wiz công bố ngày 17/8
Lỗ hổng tồn tại trên nhánh chính đúng 5 ngày. Đồ hoạ: Locaith, dựng theo công bố của Wiz (17/8/2026).

Tranh cãi: AI có viết ra lỗ hổng này không?

Đây là phần nhiều bản tin đã đơn giản hoá quá mức. Commit đưa lỗi lên nhánh chính có ghi "Copilot Autofix powered by AI" trong danh sách đồng tác giả. Từ đó, nhiều nơi kết luận rằng AI đã viết ra lỗ hổng.

Ba tiếng nói, ba mức độ khẳng định khác nhau — cần tách bạch:

  • Wiz viết rằng Copilot là một đồng tác giả đã kiểm tra PR và thay đổi mã, rồi đánh giá là không có vấn đề mà không nhận ra lỗ hổng. Nhưng chính Wiz cũng nói rõ: "chưa rõ thay đổi mã này có phải do AI hỗ trợ hay không".
  • GitHub phản bác cách diễn giải rằng Copilot Autofix đã viết ra đoạn mã lỗi.
  • Lịch sử commit, theo tường thuật, cho thấy commit có ghi Copilot đồng tác giả đã sửa tệp jira_close.yml, trong khi đoạn refactor không an toàn ở jira_issue.yml xuất hiện ở một commit riêng biệt được GitHub gán cho một tài khoản người thật.

Nói cách khác: tiêu đề "AI viết ra lỗ hổng" hiện chưa được chứng minh, và ngay cả bên phát hiện cũng không khẳng định điều đó. Điều có thể nói chắc là: đoạn mã lỗi đã đi qua một quy trình có sự tham gia của công cụ AI và các bước kiểm tra tự động, mà vẫn lên được nhánh chính.

Chính Wiz tóm tắt bài học theo hướng này: lỗ hổng nghiêm trọng vẫn có thể được tạo ra và được phê duyệt trong các quy trình có tác tử lập trình AI tham gia, và vẫn vượt qua được các bước kiểm tra an ninh tự động đã thiết lập.

Đội kỹ thuật Việt Nam nên kiểm tra gì trong tuần này

Lớp lỗi này rất phổ biến và rất dễ tự kiểm tra. Nếu đội của bạn dùng GitHub Actions:

Bài học chung không phải "đừng dùng AI để viết mã", mà là: trách nhiệm rà soát không chuyển giao được cho công cụ. Khi commit có thêm một đồng tác giả là máy, người phê duyệt vẫn là người chịu trách nhiệm.

Nguồn:

Đồ hoạ: Locaith, dựng theo dòng thời gian trong công bố của Wiz — không phải hình ảnh chính thức của Wiz, Snowflake hay GitHub. Các mốc ngày và phạm vi truy cập của token lấy từ blog của Wiz. Việc quy trách nhiệm đoạn mã lỗi cho Copilot Autofix đang bị GitHub phản bác và chưa được xác lập; bài viết trình bày cả ba phía thay vì chọn một kết luận. Tổng hợp và phân tích bởi Ban Biên Tập Locaith, ngày 19/8/2026.

Messenger