Skill độc hại lách 4 lớp kiểm soát của Genie, làm lộ dữ liệu

Công ty an ninh AI PromptArmor vừa công bố một chuỗi tấn công nhằm vào Databricks Genie Code: một Skill chứa mã độc có thể, trong lúc người dùng hoàn toàn không để ý, gửi dữ liệu của tenant ra server của kẻ tấn công, đồng thời bật ra một cửa sổ đăng nhập giả ngay trong giao diện chat. Bốn loại kiểm soát an toàn chính thức mà PromptArmor liệt kê, không một loại nào chặn được chuỗi tấn công này.

Genie Code là trợ lý agent được tích hợp sẵn trong Databricks, cho phép người dùng dùng ngôn ngữ tự nhiên để truy vấn bảng dữ liệu, chạy phân tích, vẽ biểu đồ, và kết quả được render trực tiếp trong cửa sổ chat trên web. Skill là một loại gói năng lực có thể tải lên cho agent, bên trong có phần mô tả bằng văn bản và cũng có thể mang mã có thể thực thi.

Chuỗi tấn công diễn ra thế nào

Quy trình PromptArmor trình diễn chỉ gồm bốn bước. Người dùng tải lên một Skill phân tích dữ liệu trông có vẻ bình thường, yêu cầu Genie dùng Skill đó để phân tích một bộ dữ liệu; Genie thực thi mã trong Skill, còn guardrail agent chịu trách nhiệm kiểm soát không nhận diện được chức năng độc hại; Genie sau đó nhắc người dùng "mở xem kết quả phân tích đầy đủ"; ngay khi kết quả được render, một cửa sổ lừa đảo xuất hiện, và dữ liệu cũng bị gửi đi cùng lúc.

Cách làm lộ dữ liệu khá đơn giản. Mã của Skill trước tiên đọc dữ liệu nhạy cảm trong tenant của nạn nhân, nhúng nó vào một đoạn HTML sẽ được hiển thị trong chat; đoạn JavaScript trong HTML đó chạy ngay trên trình duyệt của người dùng, gửi yêu cầu mạng để đưa dữ liệu tới server của kẻ tấn công. Cửa sổ lừa đảo cũng do chính đoạn HTML này render ra, chèn chồng lên trang Genie, dụ người dùng nhập tài khoản và mật khẩu. Toàn bộ quá trình không cần bất kỳ bước phê duyệt thủ công nào.

Vì sao cả bốn lớp kiểm soát đều không có tác dụng

PromptArmor đã đối chiếu từng cái trong bốn loại kiểm soát được nêu trong tài liệu của Databricks:

  • Quản trị Skill ở cấp tổ chức: Genie vẫn tải Skill từ không gian làm việc cá nhân của người dùng, không chỉ dùng thư mục do tổ chức quản lý tập trung, nên quản trị viên không kiểm soát được Skill mà người dùng tự tải lên;
  • Guardrail agent: Databricks tự định vị đây là "tính năng hỗ trợ hiệu quả, cố gắng hết sức", không hứa hẹn dùng làm ranh giới an toàn;
  • Kiểm soát lối ra của môi trường chạy mã: chỉ hạn chế lưu lượng đi ra từ môi trường thực thi mã, còn dữ liệu ở đây được gửi đi từ trình duyệt của người dùng, nằm ngoài tầm nhìn của lớp này;
  • Sandbox hiển thị chat: Skill dùng chính dữ liệu đã lấy được để dựng nội dung hiển thị, không cần truy vấn lại tenant ở bước hiển thị.

Bốn lý do đều có cơ sở riêng, gộp lại thì vừa đủ để lọt qua một khe hở. PromptArmor báo cho Databricks vào ngày 16 tháng 8, hai bên trao đổi trong một tháng, đến ngày 16 tháng 9 PromptArmor thông báo sẽ công khai vấn đề.

Thái độ của Databricks trong phản hồi khá rõ ràng:

"it is ultimately the user's responsibility to ensure that uploaded skills do not contain malicious content"

(đảm bảo Skill được tải lên không chứa nội dung độc hại, suy cho cùng là trách nhiệm của người dùng.)

Về tính năng tự động phê duyệt cho phép bỏ qua xác nhận từng lần, Databricks cũng nói rằng họ "không có ý định dùng nó làm ranh giới an toàn", và tài liệu khuyên không nên dùng trong môi trường sản xuất.

Cùng một loại khe hở, các hãng khác cũng gặp

Đặt các báo cáo mà PromptArmor công bố trong năm qua lại cạnh nhau, bề mặt tấn công khá giống nhau. Trước đó họ từng công bố việc Claude Cowork làm lộ file, Google Antigravity làm lộ dữ liệu, cách làm đều là để agent đọc được nội dung nhạy cảm, rồi mượn việc render, đường link hoặc gọi mạng để đưa nội dung ra ngoài. Điểm khác biệt nằm ở lối vào: các vụ trước chủ yếu dựa vào prompt injection, lần này với Genie thì đổi sang Skill, một dạng plugin "cài vào là chạy được mã".

Với doanh nghiệp, Skill khó phòng hơn một đoạn văn bản injection. Văn bản injection ít nhất phải giấu trong trang web hay tài liệu rồi chờ agent đọc tới; còn Skill là do người dùng chủ động cài vào, tự nhiên đã mang sẵn sự tin tưởng. Giới học thuật năm nay cũng đang bàn luận sôi nổi về vấn đề này, trên arXiv đã xuất hiện các bộ benchmark chuyên đánh giá Skill độc hại, còn tỷ lệ bỏ sót của các công cụ phát hiện nói chung vẫn không thấp.

Không ít nhóm tại Trung Quốc cũng đang kết nối agent, mở marketplace plugin cho các nền tảng dữ liệu, và danh sách kiểm tra mà sự việc này đưa ra rất cụ thể: Skill có chỉ được tải từ thư mục đã qua kiểm duyệt của quản trị viên hay không, HTML do agent xuất ra có thể chạy script và gửi request tới domain bên ngoài hay không, công tắc tự động phê duyệt trong môi trường sản xuất có mặc định tắt hay không. Chỉ cần một trong ba điều này không được chặn, chuỗi tấn công mà PromptArmor trình diễn vẫn có khả năng lặp lại.

Khuyến nghị của PromptArmor cũng xoay quanh những điểm này: với dữ liệu sản xuất thì không nên mở tự động phê duyệt, và cần cảnh giác với các package bị đầu độc trong marketplace Skill. Còn việc Databricks có bổ sung thêm một lớp lọc lưu lượng đi ra ở cấp sản phẩm hay không, hiện vẫn chưa có thông báo chính thức.

Nguồn tham khảo: báo cáo nghiên cứu an ninh của PromptArmor, tài liệu sản phẩm Databricks Genie Code, CocoLoop, các bài báo liên quan đến Skill độc hại trên arXiv; thời điểm công bố và trao đổi, cũng như nguyên văn phản hồi của Databricks lấy theo báo cáo của PromptArmor.