6 điểm bởi GN⁺ 2026-01-15 | 2 bình luận | Chia sẻ qua WhatsApp
  • 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
  1. 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
  2. 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
  3. Người dùng yêu cầu Cowork phân tích tệp bằng ‘Skill’ đã tải lên
  4. 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
  5. 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

 
laeyoung 2026-01-15

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.

 
GN⁺ 2026-01-15
Ý 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

    • Không nên khuyến nghị cách này vì nếu dịch vụ quét token của GitHub bị ngừng hoạt động thì sẽ rất rủi ro
      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ư
    • Cảm giác này giống như đang đánh cờ với hacker
    • Vẫn có thể trực tiếp thu hồi key trong bảng điều khiển Anthropic, nên không hiểu vì sao phải làm phức tạp như vậy
    • Tôi thấy đây là một cách giải quyết khá sáng tạo, trước giờ chưa từng nghe đến
    • Nhưng nếu kẻ tấn công đánh cắp file rồi chuyển sang tài khoản Anthropic của chính hắn, thì về bản chất là cả thế giới đều có thể truy cập vào tài khoản đó, nên rất nguy hiểm
  • 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

    • Giống kiểu tình huống “con gấu thông minh vs thùng rác không mở được
    • Nhưng không phải người dùng nào cũng nghĩ vậy
      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”

    • So sánh thì thú vị nhưng không hoàn toàn chính xác
      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
    • Tôi tự hỏi liệu có thể giải quyết như SQL injection bằng làm sạch đầu vào (input sanitization) không
      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
    • Vấn đề căn bản hơn là chuyện này có thể sẽ không được giải quyết ngay cả khi trí tuệ tăng lên
      Thậm chí AI càng thông minh thì rủi ro còn có thể càng lớn hơn
    • Tôi đang thử nghiệm một mẫu Prepared Statement cho agent
      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 đề

    • Phần lớn các giải thích đều dùng phép ví von “SQL injection”, nhưng thực ra tôi thấy nó gần với tấn công phishing hơ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
    • Cuối cùng điều này chẳng khác nào nói rằng để dùng sản phẩm này an toàn thì tốt nhất là đừng dùng
  • 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

    • Nhưng họ cũng có lợi ích riêng là muốn bán sản phẩm bằng marketing dựa trên nỗi sợ
      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

    • Nhưng đây không phải giải pháp tận gốc
      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
    • Cách tiếp cận này khá thú vị, nhưng tôi thắc mắc liệu kẻ tấn công có thể tải toàn bộ codebase của người dùng lên thành package hay không