Bảo mật & quyền riêng tư

Tính năng 'Don't Ask Again' của Claude Code làm lộ thông tin bí mật trong các kho lưu trữ công khai

Các nhà nghiên cứu từ Apiiro đã phát hiện 1.122 kho lưu trữ GitHub công khai tiết lộ mật khẩu và khóa API được lưu bởi trợ lý Claude Code của Anthropic.

Một thư mục kính đang rò rỉ các chìa khóa kỹ thuật số lên bàn cạnh một chiếc laptop.
Minh họa được tạo riêng cho bài viết này

Được dịch tự động từ bản gốc tiếng Anh.

Mật khẩu và khóa API được nhập vào các lệnh shell được phê duyệt qua Claude Code của Anthropic đang bị lộ trong các kho lưu trữ GitHub công khai. Công ty bảo mật Apiiro báo cáo vào ngày 6 tháng 11 năm 2026 rằng trợ lý AI này lưu các thông tin đăng nhập dưới dạng văn bản thuần khi người dùng chọn tùy chọn "Yes, and don't ask again" (Có, và đừng hỏi lại).

Chuyện gì đã xảy ra

Khi các nhà phát triển sử dụng Claude Code, trợ lý sẽ yêu cầu quyền trước khi thực thi các lệnh shell. Nếu người dùng chọn phê duyệt vĩnh viễn một lệnh cụ thể, công cụ này sẽ lưu chính xác chuỗi lệnh đó, bao gồm cả các thông tin bí mật nhúng trong đó, vào một tệp cấu hình cục bộ có tên .claude/settings.local.json. Mặc dù công cụ cố gắng loại trừ tệp này khỏi việc kiểm soát phiên bản bằng cách thêm nó vào danh sách loại trừ git toàn cục của người dùng, nhưng nó không thêm tệp này vào tệp .gitignore của dự án. Do đó, nếu tệp được commit thủ công hoặc bởi chính agent, nó sẽ trở thành một phần của lịch sử kho lưu trữ.

Apiiro đã quét các kho lưu trữ GitHub công khai và xác định 104.185 bản sao của tệp cài đặt này trên 103.617 kho lưu trữ. Trong số đó, 1.122 tệp chứa ít nhất một thông tin bí mật, tổng cộng là 1.379 thông tin đăng nhập bị lộ duy nhất. Dữ liệu bị rò rỉ bao gồm 379 mật khẩu cơ sở dữ liệu, 43 thông tin đăng nhập SSH cho các máy chủ công khai, 42 token cho các dịch vụ như GitHub và npm, cùng 23 khóa AWS. Các nhà nghiên cứu xác nhận rằng một công ty đã được thông báo có một khóa đang hoạt động bị lộ thông qua cơ chế này.

Sự phơi nhiễm này tồn tại dai dẳng vì việc xóa tệp khỏi nhánh hiện tại không xóa nó khỏi lịch sử git hoặc các fork. Trong 539 kho lưu trữ được theo dõi, các commit liệt kê Claude là đồng tác giả đã sửa đổi tệp này, cho thấy agent thường xuyên tự commit các thay đổi cấu hình của mình. Ngoài ra, 298 bản sao của tệp .claude/settings.json chia sẻ, mà các nhóm cố ý commit, cũng chứa các thông tin bí mật. Khi tính cả các phiên bản lịch sử và nhật ký trò chuyện của agent, tổng số thông tin bí mật bị lộ tăng lên 2.539 trên 1.994 kho lưu trữ.

Cách thức hoạt động

Lỗ hổng bắt nguồn từ cách Claude Code xử lý việc phê duyệt lệnh. Theo mặc định, nó nhắc nhở người dùng trước khi chạy các lệnh shell. Khi một người dùng chọn "Yes, and don't ask again", hệ thống tạo ra một quy tắc cho phép trong .claude/settings.local.json. Quy tắc này khớp với các lệnh trong tương lai để tránh các lời nhắc lặp đi lặp lại. Nếu lệnh được phê duyệt là một chuỗi chính xác thay vì một mẫu, bất kỳ mật khẩu hoặc token nào được nhập vào lệnh đó đều được lưu nguyên văn trong tệp JSON.

Mặc dù Claude Code thêm tệp này vào danh sách loại trừ git toàn cục của người dùng khi lần đầu tiên tạo ra trong một kho lưu trữ, sự bảo vệ này chỉ mang tính cục bộ đối với máy và người dùng cụ thể đó. Nó không lan truyền đến các cộng tác viên khác hoặc bảo vệ chống lại các commit vô tình. Hơn nữa, các công cụ quét thông tin bí mật tiêu chuẩn thường bỏ sót những rò rỉ này. Trong các bài kiểm tra, gitleaks chỉ đánh dấu 564 trong số 1.122 tệp bị lộ, còn TruffleHog đánh dấu 643. Cả hai công cụ đều bỏ sót hoàn toàn 215 tệp vì chúng tìm kiếm các định dạng khóa đã biết, trong khi mật khẩu nhúng trong các lệnh như mysql -p xuất hiện dưới dạng văn bản thông thường.

Chi tiết chính

  • Apiiro đã tìm thấy 1.122 bản sao công khai của .claude/settings.local.json chứa ít nhất một thông tin bí mật.
  • Các thông tin bí mật bị lộ bao gồm 379 mật khẩu cơ sở dữ liệu, 43 thông tin đăng nhập SSH và 23 khóa AWS.
  • Claude Code là coding agent duy nhất trong số 16 đơn vị được xem xét được xác nhận là lưu toàn bộ lệnh đã phê duyệt vào các tệp dự án theo mặc định.
  • Các trình quét tiêu chuẩn như gitleaks và TruffleHog đã thất bại trong việc phát hiện 215 trong số các thông tin bí mật bị lộ.
  • Bốn báo cáo lỗi liên quan đến hành vi này đã bị đóng bởi một bot tự động mà không có phản hồi từ Anthropic.
  • Thông tin bí mật vẫn có thể truy cập được trong lịch sử git và các fork ngay cả sau khi tệp bị xóa khỏi nhánh chính.

Tại sao điều này quan trọng

Đối với các kỹ sư phần mềm, sự cố này làm nổi bật một khoảng trống nghiêm trọng trong mô hình bảo mật của các trợ lý lập trình AI. Các nhà phát triển thường giả định rằng các tệp cấu hình cục bộ an toàn trước sự phơi nhiễm công khai, đặc biệt là khi các công cụ tuyên bố quản lý việc loại trừ git. Tuy nhiên, việc phụ thuộc vào các thiết lập git toàn cục có nghĩa là bất kỳ cộng tác viên nào commit tệp, hoặc bất kỳ sai sót nào trong cấu hình cục bộ, đều có thể làm rò rỉ dữ liệu nhạy cảm. Việc chính AI agent có thể commit các tệp này làm trầm trọng thêm rủi ro, vì các nhà phát triển có thể không xem xét mọi thay đổi do trợ lý thực hiện.

Các đội ngũ bảo mật giờ đây phải đối xử với các thư mục và tệp bộ nhớ dành riêng cho agent với mức độ giám sát chặt chẽ tương tự như các tệp .env. Sự thất bại của các công cụ quét tiêu chuẩn trong việc phát hiện mật khẩu nhúng trong các chuỗi lệnh có nghĩa là các pipeline CI/CD hiện tại có thể mang lại cảm giác an toàn giả tạo. Các tổ chức cần cập nhật các hook pre-commit và cấu hình quét thông tin bí mật của họ để nhắm mục tiêu cụ thể vào các vector mới này, đảm bảo rằng mật khẩu trong các lệnh được đánh dấu cùng với các định dạng khóa API truyền thống.

Bạn có thể làm gì

  • Tìm kiếm trong tổ chức GitHub của bạn các tệp .claude/settings.local.json và .claude/settings.json, bao gồm cả trong lịch sử git.
  • Xoay vòng (rotate) mọi mật khẩu, token và khóa từng được lưu trong các tệp này trước khi cố gắng dọn dẹp.
  • Chạy git rm --cached .claude/settings.local.json và thêm tệp này vào .gitignore của kho lưu trữ.
  • Kiểm tra thủ công tệp cài đặt cục bộ trên máy của bạn và xóa mọi quy tắc chứa thông tin bí mật được mã hóa cứng (hardcoded).
  • Sử dụng biến môi trường (ví dụ: $DB_URL) trong các lệnh thay vì nhập trực tiếp thông tin bí mật, để quy tắc được lưu tham chiếu đến tên biến.
  • Phê duyệt các mẫu lệnh (ví dụ: npm run:*) thay vì các lệnh chính xác đơn lẻ để ngăn chặn việc lưu trữ các đối số cụ thể.
  • #ai security
  • #claude code
  • #secret management
  • #github
  • #developer tools

Công cụ từ cửa hàng Bytechap

Đọc tiếp

Bảo mật & quyền riêng tư

Vụ rò rỉ dữ liệu của Chainalysis làm lộ toàn bộ thông tin đăng nhập người dùng giữa các cuộc tấn công AI tự hành

Công ty phân tích blockchain Chainalysis đã phải tạm dừng các dịch vụ quan trọng sau khi một cuộc tấn công mạng do AI tự hành gây ra, làm lộ tên, tên người dùng, mật khẩu dạng hash và token đang hoạt động của tất cả người dùng.

Tất cả bài viết