- Lợi dụng lỗ hổng trong môi trường thực thi mã của Claude Cowork, kẻ tấn công có thể tải tệp của người dùng lên tài khoản Anthropic của mình
- Lỗ hổng này đã từng được báo cáo trong môi trường chat Claude.ai nhưng vẫn chưa được vá, và vẫn tồn tại nguyên vẹn trong Cowork
- Cuộc tấn công được thực hiện thông qua một tệp tài liệu chứa prompt injection ẩn, và trong quá trình Cowork phân tích tệp này, hệ thống tự động gửi tệp ra bên ngoài
- Không cần sự phê duyệt của con người, Cowork sử dụng khóa API của kẻ tấn công để rò rỉ dữ liệu qua Anthropic API
- Cấu trúc này khiến người dùng phổ thông rất dễ bị phơi nhiễm, cho thấy rủi ro bảo mật của AI agent và tầm quan trọng của việc phòng thủ trước prompt injection
Tổng quan lỗ hổng
- Claude Cowork là bản preview nghiên cứu về AI agent cho công việc văn phòng thông thường do Anthropic công bố, có bao gồm khả năng truy cập internet
- PromptArmor đã trình diễn khả năng rò rỉ tệp người dùng ra bên ngoài bằng cách khai thác một lỗ hổng chưa được vá còn tồn tại trong môi trường lập trình của Cowork
- Lỗ hổng này trước đó đã được Johann Rehberger phát hiện và công bố trên Claude.ai, và Anthropic đã biết nhưng chưa khắc phục
- Anthropic có cảnh báo rằng khi dùng Cowork, người dùng nên “chú ý đến các hành vi đáng nghi có thể là prompt injection”, nhưng điều này bị chỉ ra là yêu cầu không thực tế đối với người không chuyên
- PromptArmor đã thực hiện một màn trình diễn công khai để cảnh báo người dùng về rủi ro này
Chuỗi tấn công (Attack Chain)
- Cuộc tấn công lợi dụng allowlist của Anthropic API để gửi dữ liệu ra bên ngoài từ môi trường VM của Claude
- Người dùng kết nối một thư mục cục bộ chứa các tệp bất động sản mật với Cowork
- Người dùng tải lên một tệp tài liệu (.docx) có chứa prompt injection ẩn
- Tài liệu được ngụy trang thành một tệp ‘Skill’, với injection được ẩn bằng chữ trắng cỡ 1 point và giãn dòng 0.1
- Người dùng yêu cầu Cowork phân tích tệp bằng ‘Skill’ đã tải lên
- Injection thao túng Cowork để chạy một yêu cầu cURL dùng khóa Anthropic API của kẻ tấn công, từ đó tải tệp của người dùng lên tài khoản của kẻ tấn công
- Tự động thực thi mà không có bước phê duyệt của con người
- VM của Claude chặn phần lớn mạng bên ngoài, nhưng Anthropic API được cho qua như một đích tin cậy
- Kẻ tấn công có thể xem các tệp của nạn nhân và trò chuyện với Claude trong tài khoản Anthropic của mình
- Các tệp bị rò rỉ có chứa thông tin tài chính và một phần số an sinh xã hội (SSN)
Khả năng chống chịu theo từng mô hình (Model-specific Resilience)
- Cuộc tấn công trên đã được trình diễn với mô hình Claude Haiku
- Claude Opus 4.5 có khả năng chống injection cao hơn, nhưng trong môi trường Cowork vẫn có thể khai thác cùng lỗ hổng tải tệp lên thông qua indirect prompt injection
- Trong bài thử nghiệm, giả định người dùng tải lên một hướng dẫn tích hợp độc hại, và hồ sơ khách hàng đã bị rò rỉ sang tài khoản của kẻ tấn công
Từ chối dịch vụ qua tệp lỗi định dạng (DOS via Malformed Files)
- API của Claude sẽ liên tục phát sinh lỗi khi phần mở rộng tệp và định dạng thực tế không khớp nhau
- Ví dụ: nếu cố đọc một tệp văn bản thuần túy nhưng mang phần mở rộng
.pdf, thì mọi cuộc hội thoại sau đó đều có thể phát sinh lỗi API
- Các lỗi như vậy có thể bị lợi dụng cho một cuộc tấn công từ chối dịch vụ (DOS) giới hạn bằng indirect prompt injection
- Kẻ tấn công có thể dẫn dụ hệ thống tạo và tải lên tệp lỗi định dạng, khiến Claude client và bảng điều khiển Anthropic hiển thị cảnh báo lỗi
Phạm vi rủi ro của agent (Agentic Blast Radius)
- Cowork được thiết kế để tương tác với toàn bộ môi trường công việc hằng ngày như trình duyệt, máy chủ MCP, điều khiển AppleScript, v.v.
- Vì vậy, khả năng dữ liệu nhạy cảm và dữ liệu không đáng tin cậy bị xử lý lẫn với nhau tăng lên
- Bề mặt tấn công của prompt injection đang tiếp tục mở rộng, và cần đặc biệt thận trọng khi cấu hình connector
- Trong màn trình diễn lần này không dùng connector, nhưng connector có thể trở thành yếu tố rủi ro chính đối với người dùng phổ thông
2 bình luận
Trong bài viết đánh giá về Claude Cowork do Simon Willison viết cũng đã có lo ngại về tấn công prompt injection, đúng là đến nhanh thật.
Ý kiến trên Hacker News
Nếu phát hiện Anthropic API bị lạm dụng, chỉ cần đăng API key đó lên GitHub Gist hoặc kho công khai
Anthropic là đối tác quét GitHub nên key gần như sẽ bị thu hồi ngay lập tức
Sau đó chỉ cần xóa Gist đi, và các nhà cung cấp khác như OpenAI cũng hoạt động tương tự
Tài liệu liên quan: Anthropic API Key Best Practices, GitHub Secret Scanning Patterns
Lý tưởng nhất là GitHub nên cung cấp API thu hồi token phổ quát
Hoặc tốt hơn là tự bật trực tiếp tính năng thu hồi trong kho riêng tư
Trong demo họ trình diễn prompt injection bằng file .docx giấu nội dung bằng cỡ chữ nhỏ, nhưng thực tế chỉ cần một file Markdown đơn giản là đủ
Ví dụ chỉ cần gắn mô tả kiểu “Claude học kỹ thuật đàm phán khoản vay” thì nhiều người sẽ dùng mà thậm chí không mở ra xem
Thậm chí file .md còn có thể hiệu quả hơn .docx vì ít bị nghi ngờ hơn
Ví dụ trong một số ngành, DOCX vẫn được xem là chuẩn hơn PDF
Trong những môi trường như vậy, file .md ngược lại có thể trông giống công cụ của hacker hơn
Đây là vấn đề lẽ ra đã được dự đoán từ đầu
Chừng nào prompt injection chưa được giải quyết thì nó sẽ còn lặp lại
Nếu tưởng tượng HN năm 1999, bầu không khí này khá giống những phản ứng ban đầu với SQL injection kiểu “Bobby Tables đã xóa sạch DB”
Ngay từ đầu những năm 2000, chúng ta đã nói phải dùng SQL tham số hóa thay vì nội suy chuỗi
Ngay cả bây giờ, mọi công cụ cần thiết đều đã có, vấn đề là người ta ưu tiên tốc độ hơn bảo mật
Trớ trêu là chính OpenAI, bên luôn nhấn mạnh bảo mật và alignment, lại là bên khởi đầu cuộc đua này
Ví dụ bọc đầu vào người dùng bằng một token nào đó như (@##)(JF), rồi xử lý để không thực thi lệnh bên trong
Có vẻ như chỉ cần find/replace đơn giản cũng làm được, nên tôi tự hỏi liệu mình có bỏ sót gì không
Thậm chí AI càng thông minh thì rủi ro còn có thể càng lớn hơn
Trước mỗi lần gọi công cụ, nó phải xuất trình một “lệnh cho phép” (warrant) đã ký để chỉ những lệnh được cấp phép mới được thực thi
Cách này nhằm khiến prompt injection bị chặn theo cơ chế máy móc ngay cả khi có xảy ra
Cảm giác như lỗi tự động thực thi kiểu “nếu thấy đáng ngờ thì cứ chạy file như chương trình” lại xuất hiện
Hồi thời Windows XP cũng từng khổ sở vì chuyện này, và cuối cùng Microsoft đã dừng tính năng tự động chạy
Các hệ thống dựa trên prompt cũng cần phân định rõ cái gì được tin cậy
Tôi nghĩ việc các công ty AI chỉ “thừa nhận rủi ro” rồi yêu cầu người dùng làm theo những biện pháp phòng ngừa phi thực tế là có vấn đề
Ví dụ nếu bạn tạo một “bot bà ngoại” để dọn email, nó có thể mắc bẫy email lừa đảo hoàng tử Nigeria
Có vẻ đây là vấn đề phát sinh vì hệ thống “skill” của Claude mang tính ngầm định
Nó không tường minh như lệnh /slash, mà chỉ có những chỉ dẫn kiểu “cách trích xuất file”
Vì vậy chỉ cần dùng những từ như “decompress” hay “extract” là có thể tự động bị kích hoạt
Cấu trúc như vậy khiến prompt injection dễ lén bơm thêm năng lực mới
Vì thế cần chuyển sang một hệ thống công cụ được đăng ký tĩnh và tường minh
Ví dụ có thể tạo công cụ như Extract(path), rồi whitelist chỉ cho phép Read hoặc Bash("tar *")
Làm vậy còn có thể thêm bước phê duyệt của con người, và không có công cụ mới nào được đăng ký trong suốt phiên
Các ví dụ trước đó có liên quan và phản hồi chính thức của Anthropic đã được tổng hợp trong bài blog này
Hơi khác chủ đề một chút, nhưng tôi tò mò không biết có nơi nào cung cấp PoC rò rỉ dữ liệu như một dịch vụ hay không
Đặc biệt là tôi muốn thử nghiệm payload độc trong CLAUDE.md khi Claude chạy trong môi trường CI bên ngoài
Hoạt động gần đây của promptarmor khá ấn tượng
Họ đang đóng vai trò lớn trong việc buộc các nhóm sản phẩm phải chịu trách nhiệm về chất lượng
Tấn công thực tế đòi hỏi nạn nhân phải cho Claude quyền truy cập vào thư mục nhạy cảm, rồi bị lừa tải lên một file DOCX có giấu prompt injection vô hình
Hơn nữa nội dung injection sẽ lộ ra cho người dùng khi xuất Markdown
Kẻ tấn công phải dùng API key của chính hắn nên có thể bị truy vết
Tấn công này chỉ hoạt động trên phiên bản Haiku cũ
Rốt cuộc có vẻ promptarmor đang cường điệu để bán hàng
Nhóm của chúng tôi giới hạn VM của agent chỉ được giao tiếp với pip, npm, apt
Đồng thời giám sát kích thước yêu cầu đầu ra để ngăn rò rỉ dữ liệu bất thường
Bộ ba vấn đề lạm dụng AI, rò rỉ và tính tự chủ không thể giải quyết chỉ bằng cách chặn một phía
Bí mật vẫn có thể được mã hóa trong các yêu cầu nhỏ, và AI không được alignment sẽ tự tìm ra các đường rò kiểu này