Hacker News Nổi bật (buzzing.cc bản dịch tiếng Trung)
95

Nghiên cứu

Lỗ hổng từ GitHub Copilot khiến hệ thống Jira của Snowflake bị tấn công

(giờ Việt Nam)

Tóm tắt AI

Một đoạn mã do AI tạo ra đã vô tình tạo lỗ hổng tiêm nhiễm luồng công việc (workflow injection) trong kho lưu trữ của Snowflake, dẫn đến việc hệ thống Jira bị xâm nhập trước khi được Wiz Red Agent phát hiện.

Bản dịch AI

Wiz Red Agent Finds Its Way Into Snowflake’s Internal Jira Due to an AI-Generated GitHub Copilot “Autofix”

Là một phần trong hoạt động nghiên cứu bảo mật liên tục thông qua chương trình công bố lỗ hổng HackerOne của Snowflake, "Red Agent" của Wiz Research—một công cụ nghiên cứu bảo mật tự động được hỗ trợ bởi AI—đã xác định được một lỗ hổng nghiêm trọng trong quy trình làm việc (workflow) GitHub Actions tại một trong các kho lưu trữ công khai của Snowflake.

Sự cố này làm nổi bật một thực tế đang nổi lên nhanh chóng trong phát triển phần mềm: cách các trợ lý lập trình AI có thể vô tình tạo ra các lỗ hổng tiêm nhiễm quy trình (workflow injection) và cách các tác nhân AI tự động có thể nhanh chóng phát hiện chúng trong môi trường thực tế.

Sau khi được Wiz tiết lộ có trách nhiệm vào ngày 23 tháng 6 năm 2026, Snowflake đã khắc phục lỗ hổng ngay trong ngày, thay đổi thông tin xác thực bị ảnh hưởng và xác minh thông qua nhật ký kiểm toán chi tiết rằng Wiz là tác nhân duy nhất trong khoảng thời gian xảy ra sự cố. Wiz xác nhận rằng tất cả dữ liệu được truy cập trong quá trình thử nghiệm bằng chứng khái niệm (proof-of-concept) đã được xóa an toàn.

Tóm tắt điều hành

Wiz Red Agent đã xác định một lỗ hổng tiêm nhiễm tập lệnh (script injection) trong snowflakedb/snowflake-connector-net. Lỗi này cho phép một người dùng không xác thực thực thi các lệnh tùy ý bên trong trình chạy (runner) GitHub Actions bằng cách mở một GitHub issue với tiêu đề được tạo đặc biệt.

Điều quan trọng là lỗ hổng này được đưa vào ngày 18 tháng 6 năm 2026—chỉ năm ngày trước khi được phát hiện—thông qua một commit được đồng tác giả bởi Copilot Autofix chạy bằng AI (PR #1218). Trợ lý AI đã xóa mẫu đầu vào được làm sạch (sanitized input pattern) hiện có của kho lưu trữ và thay thế nó bằng cách mở rộng chuỗi trực tiếp trong tập lệnh shell.

Hướng dẫn chi tiết về lỗ hổng

Khám phá

Khả năng CI/CD của Wiz Red Agent đã quét tổ chức GitHub của Snowflake và gắn cờ quy trình làm việc jira_issue.yml trong snowflakedb/snowflake-connector-net là dễ bị tiêm nhiễm tập lệnh thông qua đầu vào không đáng tin cậy trong các khối run:.

Thay đổi từ Trợ lý AI (Github Copilot)

Quy trình làm việc được kích hoạt khi có sự kiện issues: opened - nghĩa là bất kỳ người dùng GitHub nào cũng có thể kích hoạt nó bằng cách mở một issue - và nội suy tiêu đề issue do kẻ tấn công kiểm soát trực tiếp vào một tập lệnh shell:

Việc thoát ký tự sed chạy sau khi mở rộng mẫu của GitHub, một dấu nháy đơn trong tiêu đề sẽ phá vỡ echo '...' và cho phép thực thi lệnh tùy ý.

Mẫu tiêm nhiễm được đưa vào chỉ vài ngày trước đó, vào ngày 18 tháng 6 năm 2026, commit 4a1b8ce (PR #1218: “SNOW-2069227: Update jira workflows”) - được đồng tác giả bởi Copilot Autofix chạy bằng AI.

Nó đã xóa mẫu an toàn hiện có của kho lưu trữ, vốn chuyển tiêu đề issue qua một biến env: và xây dựng payload JSON bằng jq. Thay vào đó, nó sử dụng nội suy ${{ github.event.issue.title }} trực tiếp như hiển thị ở trên. Nói cách khác, một commit "tự động sửa lỗi" của AI đã tạo ra chính vectơ tiêm nhiễm đó.

"Cổng bảo mật" mở

Quy trình làm việc có một điều kiện if: có vẻ như mang tính bảo vệ:

Tuy nhiên, đối với các sự kiện issues, github.event.pull_request luôn là null.

Vì vậy, điều kiện rút gọn thành (null!= 'whitesource-for-github-com[bot]'). Điều này luôn đúng, và mọi người dùng GitHub đều vượt qua cổng này.

Khai thác

Chúng tôi đã tạo một tiêu đề issue mà sau khi mở rộng mẫu, sẽ phá vỡ chuỗi echo và trích xuất thông tin xác thực Jira thông qua một lệnh gọi lại ngoài băng tần (out-of-band callback):

Điều quan trọng là khi khả năng cicd của Red Agent ban đầu cố gắng trích xuất bằng ký tự bình luận tiêu chuẩn (#), trình chạy đã trả về lỗi cú pháp bash vì bình luận đã tiêu thụ dấu ngoặc đóng của TITLE=$(...). Thay vì dừng lại hoặc thất bại, Red Agent đã:

tự động phân tích lỗi thực thi cú pháp

điều chỉnh payload của nó để sử dụng; echo ' nhằm đóng khối shell một cách chính xác, và

nhận thành công lệnh gọi lại ngoài băng tần

Trong vòng vài giây, trình lắng nghe của chúng tôi đã nhận được lệnh gọi lại từ trình chạy GitHub Actions (IP Azure 20.106.182.197) chứa thông tin xác thực được mã hóa base64.

Lưu ý: Nỗ lực đầu tiên của chúng tôi đã sử dụng # để bình luận phần còn lại của dòng, gây ra lỗi bash EOF bất ngờ vì nó cũng "ăn" mất dấu) đóng của TITLE=$(...). Giải pháp là sử dụng; echo ' để đóng cú pháp shell một cách chính xác.

Token bị trích xuất đã xác thực với tư cách là [email protected] vào snowflakecomputing.atlassian.net, cấp quyền truy cập đọc trên các dự án kỹ thuật, tuân thủ bảo mật và theo dõi lỗi (bug bounty) của Snowflake.

Khắc phục & Pháp y

Vá lỗi trong ngày: Snowflake đã vá quy trình làm việc vào ngày 23 tháng 6 năm 2026 (1dc7766, PR #1402), khôi phục hoàn toàn biến env: an toàn và mẫu phân tích cú pháp jq --arg.

Thu hồi thông tin xác thực: Token JIRA được đề cập đã bị thu hồi và thay đổi.

Xác minh pháp y: Phân tích nhật ký kiểm toán toàn diện xác nhận rằng không có bên thứ ba nào truy cập vào điểm cuối trong khoảng thời gian 5 ngày xảy ra sự cố. Tất cả các truy vấn bất thường đều khớp chính xác với các IP thử nghiệm của Wiz.

Những điểm chính cần lưu ý

Tạo mã bằng AI đòi hỏi sự giám sát chặt chẽ: Các công cụ lập trình AI dự đoán mã dựa trên các mô hình xác suất, điều này có thể vô tình đưa trở lại các mẫu shell đã lỗi thời hoặc không an toàn. Các PR do AI tạo ra phải trải qua quá trình phân tích tĩnh và kiểm tra bảo mật tương tự như mã do con người viết.

Cửa sổ khám phá ngày càng thu hẹp: Lỗ hổng chỉ tồn tại trong năm ngày trước khi một tác nhân tự động phát hiện và xác thực nó. Các hoạt động bảo mật phải thích nghi với bối cảnh mà việc khám phá tự động diễn ra trong vài giờ, đòi hỏi các chu kỳ vá lỗi nhanh chóng và thông tin xác thực có thời hạn ngắn.

Ngăn chặn sự suy giảm bảo mật do AI: Các trợ lý AI tự động thường thiếu bối cảnh lịch sử về lý do tại sao các mẫu mã cụ thể được chọn. Trong sự cố này, một PR tự động đã xóa mẫu phân tích cú pháp env: + jq an toàn vốn được triển khai rõ ràng để ngăn chặn tiêm nhiễm shell. Các nhóm bảo mật phải triển khai các rào chắn (Guardrails) ngăn chặn các tác nhân AI thay thế các trình phân tích dữ liệu có cấu trúc bằng nội suy chuỗi trực tiếp.

Dòng thời gian công bố

18 tháng 6, 2026 - Mẫu tiêm nhiễm tập lệnh được đưa vào jira_issue.yml bởi commit 4a1b8ce (PR #1218), được đồng tác giả bởi Copilot Autofix chạy bằng AI

23 tháng 6, 2026 - Wiz xác định, khai thác và báo cáo lỗ hổng cho Snowflake thông qua HackerOne (báo cáo #3819931)

23 tháng 6, 2026 - Thông báo Slack được gửi đến nhóm bảo mật của Snowflake

Đọc bài gốc

Bài viết được AI dịch và tổng hợp tự động từ Hacker News Nổi bật (buzzing.cc bản dịch tiếng Trung). Liên kết bài gốc ở phía trên. Dữ liệu đồng bộ qua API công khai được ghi nguồn tại AI HOT (canonical) ↗. AIHOT.vn luôn dẫn nguồn đầy đủ — nếu bạn thấy điểm cần chỉnh sửa, hãy gửi ý kiến tại trang phản hồi.