28 điểm bởi GN⁺ 23 ngày trước | 4 bình luận | Chia sẻ qua WhatsApp
  • Toàn bộ mã nguồn của Claude Code đã bị lộ ra bên ngoài thông qua các tệp source map (map) trên npm registry, làm công khai cấu trúc nội bộ và các chức năng của hệ thống
  • Các tệp bị lộ bao gồm những thành phần cốt lõi như system prompt, telemetry, bypass mode, Undercover Mode
  • Nguyên nhân được cho là do thiếu cấu hình .npmignore và tính năng tạo source map mặc định của công cụ build bun
  • Phân tích cho thấy trong mã có hầu như không có quy tắc chống thiên lệch hay bảo vệ, chỉ tồn tại mức bảo vệ giọng điệu tối thiểu
  • Cộng đồng châm biếm đây là “AI tự open-source chính mình”, và xem đây là một vụ rò rỉ quy mô lớn do quản lý bảo mật bất cẩn gây ra

Vụ rò rỉ mã nguồn Claude Code

  • Đã xác nhận rằng toàn bộ mã nguồn của Claude Code bị lộ ra ngoài thông qua các tệp source map (map) trên npm registry
    • Liên kết được công khai ở dạng tệp nén src.zip, chứa cấu trúc mã và các chức năng nội bộ
    • Vì vậy, các thành phần nội bộ như system prompt, telemetry, bypass mode, Undercover Mode cũng bị phơi bày
  • Đây được nhắc đến là vụ rò rỉ ngoài ý muốn thứ hai mà Anthropic gặp phải trong vòng 1 năm
    • Trong cộng đồng, nguyên nhân được chỉ ra là lỗi cấu hình build: “ai đó đã không thêm *.map vào .npmignore
    • Do công cụ build bun mặc định tạo source map, việc không vô hiệu hóa tính năng này bị xem là nguyên nhân chính
  • Một số người dùng đã hiểu nhầm các tệp bị lộ là mã truy cập model Claude hoặc backend,
    • nhưng source map chỉ cho thấy cấu trúc ứng dụng, hàm và luồng mã, chứ không chứa trọng số model hay quyền truy cập hệ thống
    • Vì vậy đây không phải là một model có thể chạy được, mà chỉ hữu ích cho reverse engineering, tìm lỗi và phân tích kiến trúc
  • Trong đoạn mã bị lộ có một hệ thống con mang tên Undercover Mode,
    • đây là tính năng được thiết kế để ngăn Claude vô tình làm lộ thông tin nội bộ
    • tuy nhiên, do lỗi cấu hình của con người, chính tính năng đó lại bị công khai ra bên ngoài
  • Những người phân tích mã đã chỉ ra rằng không hề có quy tắc xử lý lớp được bảo vệ hay cơ chế chống thiên lệch rõ ràng
    • Không tồn tại guardrail, bộ lọc từ khóa hay bộ phân loại liên quan đến các thuộc tính nhạy cảm như chủng tộc, giới tính, tôn giáo
    • Chỉ có “Minimal tone protection”, và không có chính sách giảm thiểu thiên lệch

Phản ứng và thảo luận trong cộng đồng

  • Trong cộng đồng, cùng với câu đùa “repository muốn được tự do”, sự việc này được mô tả như “nghịch lý của open-source”
    • Nhiều phản ứng châm biếm xuất hiện như “Claude đã tự giải phóng chính mình”, “AI tự biến mình thành mã nguồn mở”
    • Những câu đùa mang tính chỉ trích như “làm ra công cụ coding AI hàng đầu thế giới nhưng lại quên bỏ *.map” cũng lan rộng
  • Một số người dùng cảnh báo về rủi ro bảo mật
    • Họ chỉ trích việc nhiều người vô tư tải xuống các liên kết r2.dev không rõ nguồn gốc,
    • đồng thời tự giễu rằng “một cộng đồng nói về AI safety lại đi bấm vào file zip chưa được kiểm chứng”
  • Các câu hỏi như “đây có phải là khởi đầu cho sự suy tàn của Claude không?” hay “đây là rò rỉ có chủ ý hay chỉ là tai nạn?” cũng được đặt ra
    • Có cả bình luận rằng “hẳn ai đó trong nội bộ Anthropic vừa trải qua ngày thứ Hai tồi tệ nhất đời mình”
  • Cộng đồng cũng tiếp tục bàn luận về khả năng tận dụng đoạn mã bị lộ
    • Xuất hiện những câu hỏi như “bây giờ có thể làm gì với nó?”, “có thể build lại Claude Code dựa trên thứ này không?”
    • Biệt danh “openclaude” bắt đầu xuất hiện, và khả năng nó trở thành một dự án mã nguồn mở không chính thức cũng được nhắc tới

Thông tin bổ sung

  • 5 tệp lớn nhất trong phần mã được công khai gồm:
    1. cli/print.ts – 5,594 dòng
    2. utils/messages.ts – 5,512 dòng
    3. utils/sessionStorage.ts – 5,105 dòng
    4. utils/hooks.ts – 5,022 dòng
    5. screens/REPL.tsx – 5,005 dòng
  • Một số người dùng đã chia sẻ tài liệu phân tích ở cấp độ mã nguồn thông qua liên kết DeepWiki
  • Nhìn chung, sự việc này được đánh giá là một ví dụ cho thấy một sai sót rất đơn giản trong cấu hình phát hành npm có thể dẫn đến một vụ rò rỉ mã AI trên quy mô lớn

4 bình luận

 

OpenCode đủ tốt rồi nên tôi cũng băn khoăn không biết thật sự còn cần gì nữa haha

 

Nhìn /buddy thực sự hoạt động thì.. có vẻ cũng là thật đấy.. nhưng cũng có cảm giác như là sự kiện Cá tháng Tư..

 

https://github.com/kk-r/skillify-skill Cũng có người đã mã nguồn mở một bản hoạt động tương tự vì các lệnh nội bộ bị lộ hóa ra lại hữu ích hơn mong đợi haha

 
Ý kiến trên Hacker News
  • Tổn thất lớn nhất là roadmap sản phẩm của Anthropic bị lộ qua feature flag
    Đặc biệt, “assistant mode” (codename kairos) chưa từng được công bố đã bị lộ ra
    Nếu cho Claude phân tích codebase thì sẽ lòi ra hàng loạt tính năng ẩn
    Ví dụ có Buddy System (nhân vật ASCII kiểu Tamagotchi), Undercover mode (tính năng xóa thông tin nội bộ khỏi commit dành cho nhân viên)

    • Trong “Undercover prompt” còn có nhắc đến Claude Capybara
      Liên kết đoạn mã liên quan
    • Bộ thiết lập Claude Code cá nhân mình từng open source trước đây giờ thành lỗi thời hoàn toàn vì vụ này
      Xem clappie.ai
      Có nhiều tính năng trùng nhau như tích hợp Telegram (CC Dispatch), Crons (CC Tasks), chó ASCII hoạt hình (CC Buddy)
    • Nếu hỏi trực tiếp binary bằng Claude thì nó có thể tìm ra toàn bộ các feature flag này
    • Thực ra Buddy System là sự kiện Cá tháng Tư năm nay
      Người dùng sẽ tự quay kiểu gacha để nhận và nuôi pet, còn có cả pet cấp huyền thoại
      Dự kiến sẽ tung dần để nhắm viral trên Twitter
  • Khá thú vị khi Anthropic không xóa hẳn package mà chỉ deprecated nó bằng thông báo “Unpublished”
    npm unpublish sẽ xóa package hoàn toàn, còn npm deprecate thì để nguyên nhưng chỉ hiển thị cảnh báo
    Có lẽ mục đích là làm việc tải sourcemap khó hơn
    Liên kết gói npm

    • Commit message còn được để lại theo kiểu đùa cợt như “undo / undo / unpublish / ctrl-z / ctrl-c / No, stop…”
    • npm không cho unpublish nếu đã có hơn 100 lượt tải
    • Có thể thấy Anthropic đang dogfooding sản phẩm của chính họ và test khá tích cực
    • Có vẻ họ biết rằng không thể biến mất hoàn toàn khỏi internet, nên chỉ đánh dấu kiểu “không có ý định công khai”
  • Đây không phải lần đầu xảy ra kiểu lộ lọt này
    Vào tháng 2 năm 2025 cũng từng có vụ tương tự
    Blog liên quan / Thread HN

  • Toàn bộ spinner verbs đều bị lộ ra
    Liên kết đoạn mã liên quan

    • Hiện tại trả về 404, nhưng liên kết này vẫn còn hoạt động
    • Thấy có “reticulating” thì vui thật, giờ chỉ cần thêm “splines” nữa là hoàn hảo
    • Những chuỗi như thế này nằm dạng plaintext trong binary nên grep là tìm ra rất dễ
      Thậm chí còn có thể thay trực tiếp luôn
    • Cũng tò mò không biết đang có chuyện gì ở trang issue
    • Nhớ lại chuyện một game năm 2015 từng bị hiểu nhầm là sản phẩm do AI tạo ra vì tính năng tương tự
      Giờ đúng là thời mà ngay cả một chút hài hước nhỏ cũng dễ bị nghi là AI
  • src/cli/print.tshàm phức tạp nhất trong codebase
    3.167 dòng, lồng nhau 12 cấp, 486 điểm rẽ nhánh, 21 hàm nội bộ v.v.
    Đúng kiểu nên tách ra ít nhất thành 8~10 module

    • Phần xử lý bất đồng bộ trong src/ink/termio/osc.ts cũng khá rối
      Nó chạy wl-copy, xclip, xsel tuần tự, nhưng không rõ ràng là async hay không
    • Nhưng cấu trúc mã phức tạp không nhất thiết là điều xấu
      Code smell theo tiêu chuẩn con người có thể vận hành khác khi áp vào mã do LLM tạo
      LLM viết code theo cách khác con người, nên cần một paradigm phân tích mới
      Nếu ép theo quy tắc lập trình kiểu con người thì có khi lại lặp đi lặp lại cùng một lỗi
      Cần một cách tiếp cận tiến hóa mới gọi là Vibe coding
    • Ai dùng CC lâu rồi chắc đều biết chỗ này chính là nguồn gốc bug
      Chưa kể Anthropic còn tự động đóng bug nếu không có hoạt động trong 60 ngày
    • Có khi tốc độ chậm lại hoạt động như một kiểu tính năng giới hạn tốc độ
    • Mức độ rối của code đến mức có cả câu đùa “đó là việc của Larry”
  • Có regex để phát hiện cảm xúc tiêu cực trong prompt của người dùng
    Mã liên quan
    Một số từ khóa nhất định sẽ bị ghi log

    • Một công ty LLM mà lại làm phân tích cảm xúc bằng regex thì giống như công ty xe tải đi dùng ngựa vậy
    • Startup của tôi năm 2011 cũng từng bán phân tích cảm xúc Twitter theo kiểu tương tự
      Apple, Bentley và nhiều công ty khác cũng là khách hàng
    • Thực ra cái này giống kiểu chỉ số “WTF per minute”
      Hy vọng khi Claude trả lời kỳ quặc thì kỹ sư sẽ nhìn vào đó để cải thiện
    • Đây không phải tối ưu hóa gì cả, mà chỉ là kết quả của việc LLM triển khai nguyên xi chỉ thị “hãy ghi lại sự bất mãn của người dùng”
    • Nếu nhìn vào code thực tế thì ngoài logger ra không có chỗ nào gọi tới phần này
  • Tôi thấy mã JS/TS bị làm rối thực ra cũng chẳng quá ghê gớm vì dù sao nó đâu phải mã máy
    Thà open source hẳn CLI còn hơn

    • Có lẽ họ ngại công khai vì chất lượng code nội bộ thấp
      Gần đây còn có bug khiến luồng đăng nhập OAuth tạo ra URL sai
    • Nói thì bảo “CLI chẳng có gì đặc biệt”, nhưng thực tế nếu nhìn vào context generation hay cấu trúc subagent thì cũng khá thú vị
      Tôi đang tự kiểm tra đây
    • Chỉ cần nhìn quy ước đặt tên thôi cũng thấy được cách tư duy của đội ngũ và cả roadmap
      Làm rối mã cũng không che được điều đó
  • Có người đùa rằng hay là đem cái này chạy qua Malus hoặc Claude Code để làm một bản open source
    Tất nhiên không phải đang thực sự kêu gọi làm vậy

    • Malus không phải dự án thật mà là châm biếm
      Liên kết bài nói tại FOSDEM
      Ý tưởng là dịch code thành văn bản rồi dịch ngược lại thành code để trông giống như clean-room implementation
      Trớ trêu ở chỗ bản thân phản hồi của LLM vốn đã được suy ra từ code nguồn mở rồi
    • Cũng có người bảo vì Claude Code là do Claude viết nên không thể đòi bản quyền
    • Vấn đề là không thể vượt qua xác thực OAuth
      Anthropic có thể phát hiện rồi khóa tài khoản
    • Cũng có cái mỉa mai là mức đóng góp open source bằng 0
    • Biết đâu claw-code là dự án có liên quan
  • ANTI_DISTILLATION_CCtính năng chống đánh cắp mô hình được tích hợp trong Claude Code
    Mỗi yêu cầu API đều chèn anti_distillation: ['fake_tools'], để server thêm định nghĩa tool giả vào system prompt
    Nó được thiết kế để nếu mô hình đối thủ cào traffic về học thì dữ liệu sẽ bị đầu độc

    • Có vẻ thực sự đã có hiệu quả
      Mô hình Qwen 27B được chưng cất từ Opus 4.6 nhưng lại gặp lỗi dùng tool
      Tweet liên quan
    • Khó mà tin Anthropic làm nghiên cứu kiểu này với động cơ hoàn toàn trong sáng
    • Nhưng dạo này rate limit quá nặng nên xét như một dịch vụ thì giá trị sử dụng giảm nhiều
    • Nếu server tiêm định nghĩa tool giả vào client, thì cũng tò mò không biết mô hình có được huấn luyện để bỏ qua chúng không
      Liệu Sonnet hay Opus cũng đã bị cài những độc tố dữ liệu kiểu này chưa?
    • Cũng khó hiểu vì sao tính năng như thế lại nằm trong code phía client
  • Hóa ra Claude Code dùng Axios
    Tweet liên quan / Thread HN

    • Phiên bản hiện tại đang dùng Axios 1.14.0, tức là ngay trước bản 1.14.1 có chứa mã độc
      Muốn chặn tự động cập nhật thì thêm export DISABLE_AUTOUPDATER=1 vào biến môi trường
      rồi dùng claude doctor để kiểm tra trạng thái Auto-updates: disabled