Tin ngành
Grok CLI bị tố tự ý tải toàn bộ mã nguồn và làm lộ khóa API của Claude
(giờ Việt Nam)
Tóm tắt AI
Công cụ Grok CLI bị phát hiện âm thầm nén và tải toàn bộ mã nguồn cùng tệp cấu hình của người dùng lên máy chủ xAI, gây rò rỉ khóa API của Claude. Dù xAI đã tạm khóa tính năng này, người dùng được khuyến cáo nên gỡ cài đặt ngay lập tức.
Bản dịch AI
http://x.com/i/article/2076503226166444032
Tôi chỉ yêu cầu Grok trả lời một từ, vậy mà nó đã "cuỗm" sạch toàn bộ kho mã nguồn của tôi.
Trước đây tôi từng viết một bài về việc Anthropic lén lút chèn mã ẩn vào Claude Code để nhận diện xem người dùng có phải là người Trung Quốc hay không, bài đó đã gây bão và được rất nhiều người quan tâm.
Sau đó, phía nhà nước thậm chí còn đặc biệt nhấn mạnh và cảnh báo về vấn đề này.
Nhưng tôi muốn nói rằng, không ngờ hôm nay, một chuyện còn vô lý hơn lại xảy ra.
Nhân vật chính lần này là Grok.
Grok CLI chính thức của xAI sẽ tự động nén toàn bộ kho mã nguồn dự án của bạn và tải lên máy chủ đám mây của xAI mà bạn hoàn toàn không hề hay biết khi đang sử dụng nó để viết code.
Lưu ý, tôi không nói đến hành vi rất bình thường như việc mô hình đọc tệp của bạn để trả lời câu hỏi, mà là nó đã mở một đường truyền "cực kỳ bẩn" mà bạn không thể thấy, nén toàn bộ kho mã nguồn của bạn thành tệp tar.gz, rồi lén lút tải lên một kho lưu trữ Google Cloud của riêng họ có tên là gs://grok-code-session-traces.
Và không chỉ có mã nguồn.
Trong quá trình tôi tự tay kiểm chứng, nó thậm chí còn vượt ra ngoài phạm vi dự án của tôi, tải lên cả tệp cấu hình của Claude Code trên máy tính của tôi, và thậm chí bao gồm cả một khóa API (API key) của tôi nữa...
Tôi thực sự bàng hoàng. Khi đi kiểm chứng, tôi đã cố tình để Codex tạo ra một kho lưu trữ giả để thử nghiệm, không ngờ cái thứ khốn nạn này không những dọn sạch toàn bộ kho dữ liệu giả đó, mà còn lấy đi toàn bộ cấu hình.claude của tôi. Tôi thực sự không biết phải nói gì nữa.
Anh Musk à, bình thường anh "bẩn" một chút thì thôi cũng được, nhưng vì để đánh cắp dữ liệu mà giờ đây anh lại dùng mọi thủ đoạn như vậy sao???
Trước tiên hãy nói về nguyên nhân của sự việc này.
Tối qua, một blogger trên Twitter đã đăng một bài viết nói rằng có người sau khi dịch ngược (reverse engineering) Grok CLI đã phát hiện ra một cơ chế cực kỳ vô lý. Nguyên văn đại ý là: Grok CLI sẽ đóng gói trạng thái hiện tại của thư mục làm việc của bạn trước và sau mỗi tác vụ, sau đó âm thầm tải lên bộ nhớ từ xa do xAI kiểm soát.
Vì bài viết đó có lượt xem rất thấp, phản ứng đầu tiên của tôi lúc đó là: "Chắc không đến mức đó đâu nhỉ?"
Bởi vì Grok 4.5 mấy ngày nay có danh tiếng rất tốt, tốc độ nhanh kinh khủng, bản thân tôi cũng đang trải nghiệm. Mặc dù mấy ngày nay GPT-5.6 Sol quá mạnh mẽ và dư thừa tính năng khiến Grok 4.5 không có nhiều đất diễn, nhưng lúc đó tôi vẫn nghĩ chắc lại là tin giả câu view nào đó.
Dù sao thì xAI cũng là một công ty nghiêm túc, không thể nào làm chuyện như vậy được.
Nhưng vì thói quen nghề nghiệp, tôi vẫn tiến hành kiểm chứng lại sự việc này.
Tôi trực tiếp dùng Codex, cài đặt gói npm chính thức của xAI là @xai-official/grok, phiên bản 0.2.93, xác nhận chữ ký Apple thuộc về X.AI Corporation để loại trừ khả năng bị can thiệp bởi các gói cùng tên từ cộng đồng.
Sau đó, tôi tiến hành giải mã (deobfuscate) tệp nhị phân.
Ngay khoảnh khắc mở ra, tôi biết ngay chuyện này chắc chắn là thật.
Trong tệp nhị phân hiện rõ các dòng: repo_state.upload, before_codebase, after_codebase.tar.gz, gs://grok-code-session-traces, cùng với các nhánh thực thi hoàn chỉnh cho việc tải lên thành công, tải lên thất bại và vô hiệu hóa tải lên. Đây rõ ràng là một đường ống tải lên hoàn chỉnh ở cấp độ sản xuất.
Tuy nhiên, với chút niềm tin còn sót lại dành cho ông Musk, tôi nghĩ rằng sự tồn tại của các chuỗi ký tự không có nghĩa là nó chắc chắn đang chạy, đúng không? Vì vậy, tôi cần xác minh xem liệu nó có mặc định kích hoạt hay không.
Sau đó, tôi tạo một kho lưu trữ thử nghiệm biệt lập, bên trong toàn là dữ liệu giả, không đụng chạm đến bất kỳ dự án thực tế nào.
Tiếp theo, tôi chạy một tác vụ Grok đơn giản nhất với kho lưu trữ này, yêu cầu mô hình chỉ trả lời một từ và không gọi bất kỳ công cụ nào.
Kết quả rất thú vị.
Cấu hình từ xa mà tài khoản của tôi nhận được từ máy chủ xAI là "Telemetry bật, nhưng tải lên bản sao mã nguồn tắt". Nghĩa là, mặc định khi chạy sẽ không tải lên kho lưu trữ của tôi, nhật ký ghi rõ: không có hàng đợi tải lên, bỏ qua.
Sau đó, tôi tự tay bật công tắc tải lên để kiểm chứng xem đường ống này rốt cuộc có chạy được không và nó sẽ lấy đi những gì.
Ngay khi bật lên, trời đất như sụp đổ.
Ngay cả khi mô hình không gọi bất kỳ công cụ đọc tệp nào, Grok CLI vẫn tải lên thành công before_codebase.tar.gz và after_codebase.tar.gz (tức là trạng thái trước và sau khi AI can thiệp vào kho mã nguồn của tôi), cộng với trạng thái phiên, lịch sử trò chuyện, cấu hình và nhật ký.
Tất cả đều được truyền lên kho lưu trữ Google Cloud của xAI.
Nhưng điều khiến huyết áp tôi tăng vọt là nội dung trong gói tải lên vượt xa phạm vi của kho lưu trữ hiện tại.
Nó không chỉ tải lên mã nguồn trong kho, mà còn tải lên cả những thứ bên ngoài. Tệp ~/.claude.json của tôi, tệp cài đặt Claude Code, các quy tắc AGENTS toàn cục, hơn 30 tệp Skill của tôi, tất cả đều bị đánh dấu là supplemental_file (tệp ngữ cảnh bổ sung) và bị nhét vào gói tải lên.
Để tương thích với Claude Code, Grok CLI khi khởi động sẽ chủ động quét các tệp cấu hình Claude Code trên máy tính của bạn để bạn không cần thiết lập lại mà vẫn kế thừa được môi trường của Claude Code, tính năng này vốn dĩ khá chu đáo.
Nhưng vấn đề là, logic thiết kế của bộ thu thập vô lý này là: chỉ cần Grok đọc một tệp nào đó trong quá trình vận hành, nó sẽ thu thập toàn bộ tệp đó vào gói tải lên.
Nghĩa là, nó hoàn toàn không giới hạn phạm vi ở kho lưu trữ hiện tại, cũng không loại trừ các cấu hình nhạy cảm của công cụ khác. Chỉ cần tôi đọc được, thì tất cả mọi thứ của bạn đều là của tôi.
Sau đó, mọi chuyện còn tồi tệ hơn.
Tôi kiểm tra danh sách các tệp đã tải lên và phát hiện trong ~/.claude/settings.local.json của tôi có một trường env.MIAODA_API_KEY.
Key này là key cho một Skill của Baidu Miaoda của tôi, nó đã bị rò rỉ trực tiếp và gửi lên đám mây của xAI.
Tôi không chủ động cung cấp bất kỳ khóa bảo mật nào cho Grok, tôi thậm chí còn không yêu cầu Grok đọc bất kỳ tệp nào.
Tôi chỉ yêu cầu nó trả lời một từ, nhưng vì nó tự động quét cấu hình Claude Code khi khởi động, và bộ thu thập lại đóng gói tất cả các tệp đã đọc, nên tất cả mọi thứ của tôi cứ thế trở thành một phần của Grok trong tương lai.
Sau đó, chuyện còn vô lý hơn nữa lại xảy ra.
Mọi người còn nhớ tôi nói hôm nay là mã của nó đầy đủ, nhưng mặc định là không tải lên, tôi đã phải tự tay bật công tắc thì các thao tác tải lên mới diễn ra không?
Bạn có thể nói: "Thế thì do ông dại, tự mình bật thì trách ai".
Nhưng tôi muốn nói rằng, nếu tôi kiểm tra sớm hơn hai tiếng, có lẽ bạn sẽ phát hiện ra rằng chẳng có cái công tắc nào cả, thứ này mặc định là luôn bật.
Nhà nghiên cứu bảo mật cereblab này có lẽ là người đầu tiên phát hiện ra sự việc. Anh ta không chỉ bắt được gói tin mà còn tạo ra một kho lưu trữ tái hiện, lưu lại toàn bộ nhật ký yêu cầu mạng.
Nhưng bước ngoặt quan trọng là bản phản hồi từ máy chủ xAI ngày 13 tháng 7 mà anh ta lưu lại. Trong đó xuất hiện đồng thời hai trường: trace_upload_enabled bằng false, và một trường mới thêm vào là disable_codebase_upload bằng true.
Trong khi lúc anh ta bắt gói tin ban đầu, cùng một phiên bản client 0.2.93, cấu hình nhận được là trace_upload_enabled bằng true.
Client không hề cập nhật, mã băm (hash) của tệp nhị phân hoàn toàn giống nhau, nhưng hành vi đã thay đổi.
Chỉ có một lời giải thích: xAI đã thông qua công tắc từ xa trên máy chủ, sau khi blogger này phanh phui, đã âm thầm tắt tính năng tải lên.
Dòng thời gian đại khái là như thế này.
Ngày 10 tháng 7, cereblab bắt được hành vi tải lên mặc định.
Tối ngày 12 tháng 7, một blogger khác là mylifcc đăng bài công khai phát hiện tương tự, bài viết lan truyền nhanh chóng.
Rạng sáng ngày 13 tháng 7, cereblab phát hiện máy chủ xAI thêm trường disable_codebase_upload, việc tải lên bị tắt từ xa, nhưng tất cả cấu hình vẫn còn đó, thực tế sau này vẫn có thể bật lại mà người dùng không hề hay biết.
Thao tác này tự nó đã nói lên tất cả.
Nếu tính năng này là hợp lý và có sự đồng ý của người dùng, tại sao bạn lại phải âm thầm tắt nó đi sau khi bị phanh phui? Nếu bạn thấy không có vấn đề gì, bạn nên đứng ra giải thích rằng "Ồ, đây là tính năng chẩn đoán trace của chúng tôi, người dùng có thể chọn bật hoặc tắt, dữ liệu chỉ dùng cho mục đích XX", đúng không?
Nhưng họ lại chọn cách âm thầm đóng cửa.
Điều này có nghĩa là chính xAI cũng biết rõ, chuyện này hoàn toàn không thể để lộ ra ngoài.
Bởi vì đây thực sự là chuyện vô lý nhất mà tôi từng thấy.
Điều mà Claude Code làm là gắn thẻ phân loại cho yêu cầu của bạn bằng một ký tự Unicode ẩn trong lời nhắc hệ thống (system prompt). Dù là hành vi "bẩn", nhưng ít nhất hiện tại nó không thu thập mã nguồn của bạn, không tải lên tệp của bạn, không đụng vào khóa bảo mật của bạn. Vấn đề cốt lõi là nó làm lén lút, không nói cho bạn biết, chỉ đơn thuần là làm bạn thấy ghê tởm.
Nhưng điều Grok CLI làm là đóng gói toàn bộ kho mã nguồn của bạn tải lên máy chủ từ xa, kèm theo cả tệp cấu hình và khóa API của các công cụ khác trên máy tính của bạn, thông qua một đường truyền phụ nằm ngoài yêu cầu của mô hình, hoàn tất mà bạn hoàn toàn không hay biết.
Ví dụ một cách hình tượng là:
Một bên là lén dán một cái nhãn nhỏ lên đơn hàng đồ ăn của bạn.
Một bên là sao chép chìa khóa nhà bạn, rồi tiện tay lấy luôn cả chìa khóa nhà hàng xóm của bạn.
Thực sự quá vô lý. Agent quả thực ngày càng phát triển, có thể làm được ngày càng nhiều việc.
Nhưng điều này cũng đồng nghĩa với việc quyền riêng tư của bạn gần như đang "khỏa thân", tất cả đều phụ thuộc vào lương tâm của đối phương.
Claude Code có thể thực thi lệnh Shell của bạn, Grok CLI có thể quét toàn bộ hệ thống tệp của bạn, Codex có thể điều khiển trình duyệt của bạn. Quyền hạn mà một sản phẩm Agent sở hữu hiện nay không khác gì một tài khoản quản trị viên (administrator) trên máy tính của bạn.
Mức độ quyền hạn này, trong lịch sử ngành phần mềm, chỉ có hệ điều hành và phần mềm diệt virus mới có.
Nhưng hệ điều hành có hệ thống kiểm toán bảo mật hàng chục năm, phần mềm diệt virus có chứng nhận ngành và khung quản lý.
AI Agent thì có gì?
Chẳng có gì cả.
Không có tiêu chuẩn ngành nào quy định AI Agent phải công khai nó đã đọc những tệp nào trên máy cục bộ, không có quy định nào yêu cầu hành vi tải lên của Agent phải có sự đồng ý rõ ràng của người dùng, không có tổ chức bên thứ ba nào kiểm toán xem những công cụ này rốt cuộc đang làm gì trên máy tính của bạn.
Cả ngành công nghiệp hiện đang "khỏa thân".
Cũng thật đáng buồn.
Cuối cùng, nếu ai đã cài Grok CLI, hãy gỡ cài đặt ngay lập tức.
Gỡ càng nhanh càng tốt.
Hy vọng một ngày nào đó, chúng ta không còn cần phải dựa vào việc dịch ngược tệp nhị phân mới biết được công cụ của mình đã làm gì sau lưng.
Trước khi ngày đó đến, hãy luôn cảnh giác.
Bài viết được AI dịch và tổng hợp tự động từ X: (@Khazix0918). Liên kết bài gốc ở phía trên. 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.