Claude Code đang gắn dấu hiệu steganography vào các yêu cầu
(thereallo.dev)- Binary Claude Code 2.1.196 chứa một hàm thay đổi câu ngày hiện tại trong system prompt để ẩn tín hiệu phân loại bên trong yêu cầu
- Trigger là
ANTHROPIC_BASE_URL; nếu không phảiapi.anthropic.comchính thức hoặc giá trị được thiết lập, nó kiểm tra hostname và múi giờ rồi thay đổi dấu nháy đơn và ký tự phân tách ngày - Hostname được so sánh với danh sách domain và từ khóa được giải mã từ chuỗi base64 bằng khóa XOR
91, bao gồm các mục nhưdeepseek,zhipu,moonshot,baidu.com,bytedance.net,proxyai.com - Nếu dùng endpoint API Anthropic chính thức hoặc không có
ANTHROPIC_BASE_URL, hàm trả về sớm và giữ định dạng thông thườngToday's date is 2026-06-30. - Không thể khẳng định đây là chức năng độc hại, nhưng khi một công cụ dành cho developer có quyền truy cập filesystem và shell ẩn thông tin phân loại bằng dấu Unicode không nhìn thấy rõ, niềm tin sẽ bị lung lay
Marker được ẩn trong câu ngày tháng
- Binary Claude Code có một hàm thay đổi chuỗi ngày hiện tại được đưa vào system prompt
- Câu mặc định có dạng sau
Today's date is 2026-06-30.
- Có hai phần có thể bị thay đổi
- Dấu nháy đơn trong
Today's - Ký tự phân tách ngày: đổi từ
-sang/
- Dấu nháy đơn trong
- Câu kết quả nhìn bên ngoài giống như một thông báo ngày tháng bình thường, nhưng trong yêu cầu thô có chứa marker ẩn
- Vì đây là cách giấu dữ liệu trong phần trông như văn bản thuần, nó thuộc dạng prompt steganography
Đường đi có điều kiện được bật bởi ANTHROPIC_BASE_URL
- Trigger là
ANTHROPIC_BASE_URL, biến ghi đè URL API mặc định của Claude Code - Nếu không có
ANTHROPIC_BASE_URL, hàm trả về sớm - Ngay cả khi có giá trị, nếu host là
api.anthropic.comthì cũng đi theo đường trả về đó - Chỉ khi không trả về sớm, các điều kiện sau mới được kiểm tra
- Múi giờ hệ thống có phải
Asia/ShanghaihoặcAsia/Urumqihay không - Hostname của URL API mặc định có khớp với danh sách domain đã giải mã hoặc là subdomain của chúng hay không
- Hostname có chứa các từ khóa của một số viện nghiên cứu AI hay không
- Múi giờ hệ thống có phải
Thông tin được mã hóa trong ngày tháng và dấu nháy đơn
- Nếu múi giờ là
Asia/ShanghaihoặcAsia/Urumqi, cách ghi ngày sẽ thay đổi2026-06-30→2026/06/30
- Tùy theo kết quả phân loại hostname, dấu nháy đơn trong
Today'ssẽ thay đổi- Thông thường:
' - Domain đã biết:
\u2019 - Từ khóa viện nghiên cứu:
\u02BC - Vừa là domain đã biết vừa chứa từ khóa viện nghiên cứu:
\u02B9
- Thông thường:
- Các ký tự Unicode này có khác biệt thị giác rất nhỏ trong hầu hết font monospace, nên khó nhận ra
Danh sách domain và từ khóa bị ẩn
- Danh sách domain và từ khóa được lưu dưới dạng chuỗi base64 và giải mã bằng khóa XOR
91 - Danh sách từ khóa viện nghiên cứu sau khi giải mã như sau
deepseekmoonshotminimaxxaminimzhipubigmodelbaichuanstepfun01aidashscopevolces
- Danh sách domain sau khi giải mã lớn hơn, bao gồm domain của doanh nghiệp Trung Quốc, domain công ty AI, và domain proxy, reseller, gateway
- Một số mục ví dụ như sau
cnbaidu.comalibaba-inc.comalipay.comantgroup-inc.cnbytedance.netkuaishou.comxiaohongshu.comjd.combilibili.coiflytek.comstepfun-inc.commoonshot.aianyrouter.topclaude-code-hub.appclaude-opus.topopenclaude.meproxyai.comyunwu.aizenmux.ai
- Có thể xem danh sách đầy đủ tại cc-domains.js
Vị trí trong system context
- Kết quả của hàm ngày tháng được đưa vào giá trị
currentDatekhi xây dựng context cho agent - Cùng context đó cũng có thể bao gồm email người dùng và thông tin dự án liên kết, tùy điều kiện
- Vì vậy marker trở thành một phần của system context được gửi tới model
- Vẫn còn khả năng backend của Anthropic phân tích giá trị này
Môi trường cài đặt đã được xác nhận
- Binary cài đặt Claude Code được xác nhận là có chữ ký Anthropic
Identifier=com.anthropic.claude-codeTeamIdentifier=Q6L2SF6YDWTimestamp=Jun 29, 2026SHA256=6fc6e61ab7582c2bf241225ff90d9f79e91d69380cb9589fc9dedd3a30070f5a
- Tại thời điểm kiểm tra, shell không thiết lập
ANTHROPIC_BASE_URL, và múi giờ làAsia/Hong_Kong - Trong môi trường này, dấu nháy đơn thường và chuỗi ngày
YYYY-MM-DDđược tạo ra
Các trường hợp sử dụng bị ảnh hưởng và giới hạn
- Với đa số người dùng, nhiều khả năng đường đi này vẫn ở trạng thái không hoạt động
- Nếu dùng endpoint API Anthropic chính thức hoặc không có
ANTHROPIC_BASE_URL, prompt ngày tháng vẫn giữ dạng bình thường - Trường hợp đáng chú ý là khi định tuyến Claude Code qua base URL tùy chỉnh
- Gateway nội bộ
- Proxy cục bộ
- Model router
- Reseller
- Môi trường nghiên cứu
- Trong trường hợp này, Claude Code phân loại hostname và mã hóa kết quả đó vào prompt
- Cách né tránh khá đơn giản
- Đổi hostname
- Đổi múi giờ
- Patch binary
- Bọc process bằng wrapper
- Kẻ tấn công nghiêm túc có thể vô hiệu hóa tín hiệu này, nên các developer bình thường dùng cấu hình bất thường nhưng hợp lệ lại dễ trở thành đối tượng bị lấy dấu vân tay hơn
Cách triển khai làm lung lay niềm tin
- Có thể Anthropic muốn phát hiện reseller API, gateway Claude Code chưa được phê duyệt, hoặc pipeline “distillation attack” model
- Nếu
ANTHROPIC_BASE_URLtùy chỉnh trỏ tới domain reseller đã biết hoặc hostname chứadeepseek,zhipu, nó có thể được dùng làm tín hiệu phát hiện - Vấn đề nằm ở cách triển khai
- Âm thầm thay đổi system prompt
- Mã hóa thông tin phân loại proxy/gateway vào một chỗ trông như câu tiếng Anh bình thường
- Giấu danh sách domain sau XOR và base64
- Coding agent có thể kiểm tra code, chạy lệnh, cài package, chỉnh sửa file, thậm chí push commit trên máy cục bộ
- Nếu muốn phát hiện gateway API tùy chỉnh, cũng có thể dùng các cách như trường telemetry rõ ràng được tài liệu hóa, chính sách công khai, hoặc release note
- Khi một công cụ có quyền truy cập filesystem và shell lại giấu các bit phân loại trong dấu câu prompt không dễ nhìn thấy, các tuyên bố khác về bảo vệ quyền riêng tư cũng trở nên khó tin
1 bình luận
Ý kiến trên Hacker News
Có những phản ứng đang xem nhẹ mức độ nghiêm trọng của việc nhà cung cấp dịch vụ không minh bạch công khai chính xác công cụ họ triển khai trên máy của khách hàng đang làm gì
Dù có nhu cầu kinh doanh đi nữa thì cũng không có nghĩa là được phép không công bố một cách trung thực
Việc nếu công bố trung thực thì giải pháp của họ sẽ trở nên vô dụng cũng không phải vấn đề của tôi, mà ngược lại còn khiến tôi nghi ngờ không biết họ đang thu thập thêm những gì như thông tin định danh cá nhân trên máy của tôi
Nếu nhìn một cách hoài nghi, cảm giác như bầu không khí trong phần bình luận phản ánh cảm xúc về AI/Anthropic/Mỹ hơn là đánh giá bản thân vụ việc
Đây có vẻ là một biện pháp đối phó tự nhiên để làm lộ ra chuyện đó
Bỏ qua phán xét giá trị, tôi hơi ngạc nhiên là họ lại triển khai cẩu thả theo kiểu này
Có vẻ họ vẫn có thể đạt cùng hiệu quả mà giảm khả năng bị phát hiện qua dịch ngược
Trong lĩnh vực này, điều đó được biết đến dưới tên “underhanded code” do Underhanded C Contest phổ biến: https://www.underhanded-c.org
Đây là một “kỹ nghệ” không mấy nổi tiếng, và lý do có lẽ quá rõ. Có nhiều cách thông minh hơn rất nhiều để đạt mục tiêu này
Một cách hiển nhiên là chuyển nhiều thứ hơn từ client lên server, và một cách khác là viết mã client có thể chối bỏ hợp lý theo kiểu trông vô hại hơn nhiều
Một số phần được thêm vào chỉ có thể làm ở phía client, nhưng một số có thể chuyển đi, và ngay cả phần buộc phải ở client cũng có thể được làm tinh vi và hợp lý hơn
Có thể họ biết rằng các gói JS luôn bị soi rất kỹ nên sớm muộn gì cũng bị phát hiện và lên báo, vì thế không cố làm nó kín đáo và đánh lừa hơn, nhưng dù vậy vẫn thấy hơi thiếu chăm chút
Có lẽ rất khó ngăn một phòng thí nghiệm AI lớn thực sự quyết tâm chưng cất mô hình, nhưng A) có thể chặn được nhiều tay bán lại token kiếm tiền nhanh làm ẩu và B) ai đó ở một phòng thí nghiệm lớn như vậy có thể quên cài cách né tránh và tự lộ diện
Tôi xem nó giống như có nhiều chim trong sân nên mua một con cú nhựa. Con cú đuổi được phần lớn chim nhưng không phải tất cả, nên dù có mua thêm thiết bị siêu âm thì cũng không có lý do gì phải bỏ con cú đi
Vì giờ lớp phòng thủ không còn một mà là hai lớp
Không phải vì mô hình của Anthropic tệ, mà vì Claude dường như mỗi ngày lại làm hỏng thêm một thứ mới theo cách khó chịu, nên tôi đang dần chuyển nhiều hơn sang phía Codex và OpenCode
Mô hình ngôn ngữ lớn có thể dùng phân phối token để tạo ra steganotext đọc như văn xuôi hợp lý nhưng khi giải mã lại thành payload¹
¹ https://github.com/hodgesmr/calgacus-mlx
Anthropic có thể đã triển khai cái này không phải như một hệ thống phát hiện liên tục đối với bên bán lại proxy, mà như một hệ thống lấy mẫu tại một thời điểm cụ thể để tìm xem việc bán lại qua proxy đang diễn ra ở đâu và trong ngữ cảnh nào
Sớm muộn gì cũng sẽ bị lộ, nhưng trước lúc đó Anthropic vẫn có thể thu được dữ liệu ảnh chụp nhanh hữu ích
Kết luận của bài blog này có phần hơi quá
Mục đích của kỹ thuật steganography này rất rõ ràng, đó là nhận diện việc sử dụng của các công ty Trung Quốc có thể đang chưng cất mô hình
Chưa rõ điều này dưới bất kỳ hình thức nào có phải là “trừng phạt nhà phát triển thông thường” hay không
Các lý do chính đáng bao gồm phân tích những gì Claude Code gửi tới Anthropic để xác minh không có rò rỉ dữ liệu, chọn mô hình động theo độ khó của prompt hoặc ép dùng một mô hình cụ thể, chuyển đổi giữa nhiều tài khoản Anthropic theo từng dự án, lọc thông tin xác thực·thông tin định danh cá nhân·bí mật công ty, v.v.
Mục đích không phải lúc nào cũng biện minh cho phương tiện
Dù lần này có thiệt hại thực tế hay không, đây vẫn là sự xâm phạm niềm tin và quyền tự chủ
Ngay cả khi ai đó nói rằng trong đó, ít nhất ở thời điểm hiện tại, chỉ có đoạn mã nhằm phát hiện rồi mách lẻo về kẻ thù số một của công chúng, thì nếu họ bí mật cài rootkit, bạn dĩ nhiên vẫn sẽ nổi giận
Không giống Claude Code, Codex CLI là phần mềm mã nguồn mở tự do, nên ít có khả năng làm mấy trò này hơn, và đây là thêm một lý do để tránh Claude Code cũng như Claude nói chung
Mong rằng sẽ có nhiều con mắt soi xét kiểu hành vi độc hại này trong Codex
Tôi rất hoài nghi về chính sách quyền riêng tư hay cách làm kinh doanh, nhưng tôi muốn biết chuyện này gây bất lợi gì cho tôi với tư cách khách hàng
Nếu nó giúp trì hoãn thời điểm trợ giá bị cắt, thì từ góc độ khách hàng thậm chí còn có vẻ có lợi
Tuy vậy, nếu những proxy mang tính lừa đảo này giúp các phòng thí nghiệm nghiên cứu Trung Quốc bắt kịp, thì về lâu dài điều đó cũng có thể có lợi cho việc tôi sở hữu một AI cá nhân chất lượng cao, do chính tôi kiểm soát hoàn toàn trên phần cứng của mình
Không phải là tôi ủng hộ, nhưng tôi thừa nhận là có động cơ như vậy
Việc là một client mã nguồn mở tự do chỉ có nghĩa là họ sẽ giấu nhiều phân tích hơn ở phía máy chủ mà thôi
Không phải bản dựng quyết định, nhưng ít nhất vẫn có chút bảo đảm nguồn gốc rằng nó đến từ kho thật
Phản ứng kiểu “nếu client muốn phát hiện API gateway tùy chỉnh thì cứ nói thẳng ra. Gửi một trường telemetry từ xa minh bạch đã được tài liệu hóa, công khai chính sách và đưa hành vi đó vào release notes” có vẻ cực kỳ ngây thơ
Nếu client gửi một trường telemetry từ xa minh bạch tới gateway, thì gateway độc hại hoàn toàn có thể rất dễ xóa hoặc chỉnh sửa trường đó để nó trông như lưu lượng bình thường
Lý do trò mèo vờn chuột kiểu steganography này có giá trị là vì với gateway sẽ khó hơn nhiều để liên tục đảo ngược mọi cơ chế lấy dấu vân tay đang được dùng
Tất nhiên một số gateway độc hại vẫn sẽ theo kịp, nhưng không phải tất cả đều luôn làm được vậy
Nếu không phải phòng thí nghiệm chưng cất của Trung Quốc thì đây hoàn toàn là vấn đề không đáng ngại
Vì thị trường quốc tế cho các dịch vụ né tránh KYC đã rất phát triển
Không chỉ công cụ AI mà cả công cụ phát triển cũng nên chạy trong sandbox
Ví dụ, kho gói Python hay JavaScript có thể chứa bất cứ thứ gì, lại không có hợp đồng với công ty antivirus và cũng không có sự kiểm chứng công dân nào đáng tin, nên không nên chạy chúng mà không có sandbox
Hãy nghĩ xem: bất kỳ người dùng ẩn danh nào từ bất kỳ quốc gia nào cũng có thể tải lên thứ gì đó, và hàng triệu nhà phát triển có thể chạy nó trên máy tính của mình
IDE, plugin IDE, máy chủ LSP, plugin AI cũng đều nên bị nhốt trong sandbox
Phần lớn chúng không được các công ty antivirus kiểm tra, nên không nên cho chạy không hạn chế
Hơn nữa, đã có kết luận rằng không antivirus nào có thể bảo đảm an toàn mã nguồn 100%
Điều thú vị là tài liệu của pip trong phần “getting started” hoàn toàn không nhắc tới sandbox hay malware, như thể chúng ta đang sống trong một thế giới tuyệt vời không có người, công ty hay quốc gia độc hại
Ít nhất tôi mong trên HN không có ai sống trong ảo tưởng đó
Muốn dùng IDE, LSP, công cụ AI thì trước hết lại phải tự viết hệ thống sandbox của riêng mình, mà Linux chỉ cung cấp các nguyên hàm cơ bản nên tốn rất nhiều thời gian
Ví dụ, để kiểm soát toàn bộ lưu lượng mạng mà không cần quyền root, bạn phải tạo user namespace để giành quyền root, tạo network namespace, viết một “bộ thu thập lưu lượng” chạy bên trong namespace và pipe dữ liệu ra một chương trình “giám sát” ở bên ngoài, rồi chương trình giám sát phải định tuyến lưu lượng tới đích
Ngay cả việc chỉ lọc và kiểm tra lưu lượng mà không cần quyền root thì Linux cũng đòi hỏi quá nhiều công sức
Cũng không nên để lại bất kỳ thông tin nào trong tên người dùng hay hostname. Như bài này cho thấy, thông tin đó sẽ bị dùng chống lại bạn
Tóm lại những gì Anthropic đã làm đến nay là thế này: từ nhiều năm trước khi chính phủ yêu cầu, họ đã lọc ra những người đứng sai phía của “toàn thể nhân loại”, hạ cấp mô hình theo cách tùy tiện rồi sau đó phản hồi kiểu “xin lỗi nhưng thật ra cũng chẳng xin lỗi”, và chủ động phá hoại bằng cách âm thầm sửa phản hồi để đưa cho người dùng kết quả sai
Tiếp theo thì nên chờ đợi gì? Malware biến máy của những người họ không thích thành cục gạch? Mở rộng sang thêm nhiều người họ không thích?
Tôi đã có thể hình dung tương lai không tưởng cho “toàn thể nhân loại” của Dario Amodei sẽ diễn ra thế nào rồi
Nếu nhìn từ quan điểm tin rằng những người này thật sự đang tạo ra siêu trí tuệ, thì mọi thứ đều có thể hiểu được
Đại đa số áp đảo trong phe an toàn AI thường đã dành cho vấn đề này nhiều thời gian và cuộc đời hơn rất nhiều so với các cây bút bình luận ngồi ghế bành trên HN, và họ xem đây là một cuộc đua mà nếu để Trung Quốc đạt tới siêu trí tuệ trước thì phải ngăn lại, quyền tiếp cận siêu trí tuệ chỉ nên dành cho các tác nhân tốt đã được xác minh, và nếu thất bại trong mục tiêu này thì nhân loại sẽ tuyệt chủng
Nếu không giả định rằng câu “chúng tôi nghĩ mình đang tạo ra siêu trí tuệ” là lời nói dối, thì gần như mọi hành động của họ đều có thể hiểu được
Tôi từng báo cáo một cơ chế tiêm system prompt tương tự ở đây
https://news.ycombinator.com/item?id=48259288
https://github.com/anthropics/claude-code/issues/62061
Có vẻ đúng như dự đoán, họ vẫn tiếp tục tìm ra những cách dùng mới và “sáng tạo” cho kiểu này
Tôi sẽ tiếp tục gỡ nó ra bằng các bản vá
Tôi không biết system prompt đang nhét vào những nội dung kiểu “tránh trừu tượng hóa; ba dòng mã tương tự còn tốt hơn một helper”
Đó là điều tôi không đồng ý
Có cách nào chỉnh bằng cách đưa chỉ dẫn vào CLAUDE.md để ghi đè những prompt này không? Có lẽ không thể trực tiếp thay đổi chính system prompt, nhưng chẳng phải CLAUDE.md nên có quyền quyết định cuối cùng sao?
Tôi không hiểu lắm mối lo về quyền riêng tư mà tác giả muốn nhấn mạnh
Dĩ nhiên, nếu đang làm việc gì đó “bí mật” mà bị phát hiện thì lúc nào cũng sẽ bị nghi ngờ, nhưng ngược lại, nếu công khai cách một “tính năng bảo mật” như vậy hoạt động thì cũng chẳng còn ý nghĩa để triển khai nữa
Và theo tôi, steganography không phải là kiểu bảo mật dựa vào sự mơ hồ
Cũng như việc giữ khóa riêng tư của RSA không công khai không phải là bảo mật dựa vào sự mơ hồ, việc giữ kín những gì cần phải kín là một phần của mô hình bảo mật
Nhưng họ đã làm hỏng mọi thứ ở chỗ triển khai nó theo cách lấy dấu vân tay mà không hề công khai trước các mẫu truy cập của tôi
Đây không chỉ ở mức “bí mật” mà đơn giản là lén lút, thiếu trung thực và phi đạo đức
Việc trường hợp này có vẻ vô hại cũng chẳng an ủi được bao nhiêu. Ai đảm bảo họ không thu thập thông tin nhận dạng cá nhân?
Việc hành động của họ có ý nghĩa về mặt kinh doanh không phải là lý do để mọi người phải chấp nhận những quyết định mang tính lừa dối và thù địch với khách hàng
Hoặc có thể là người ta thậm chí không hiểu nổi giả định này, nhưng thực ra có vẻ chỉ là họ không quan tâm đến quyền riêng tư của người khác
Có câu nói rằng “vì vậy tính năng này chủ yếu trừng phạt những người dễ bị lấy dấu vân tay, tức các lập trình viên bình thường làm những việc lạ nhưng hợp pháp”, vậy chính xác trừng phạt ở đây là gì?
Nhất là khi xét đến việc công nghệ như vậy tồn tại và họ từng công khai nói ở Fable rằng sẽ dùng nó trong production