~/ / Bài viết về AI / 2,117 bí mật hợp lệ trong các tệp cấu hình MCP công khai: GitGuardian đã tìm thấy gì và cách kiểm tra tệp của bạn
2,117 bí mật hợp lệ trong các tệp cấu hình MCP công khai: GitGuardian đã tìm thấy gì và cách kiểm tra tệp của bạn
Một tệp cấu hình cho ứng dụng AI biết cần chạy những máy chủ MCP nào thường cần có một khóa. Báo cáo State of Secrets Sprawl 2026 của GitGuardian đã đếm được 24,008 bí mật duy nhất trong các tệp cấu hình liên quan đến MCP trên GitHub công khai, và 2,117 trong số đó là thông tin xác thực còn hiệu lực. Bài viết này tóm tắt báo cáo, giải thích tài liệu của Claude Code nói gì về các tệp cấu hình của dự án, và giúp bạn kiểm tra tệp của chính mình.
Đăng: · Đã đối chiếu với các nguồn chính thức vào ngày 2026-10-24. Bài viết này chỉ tóm tắt và không thay thế các nguồn đó.
Báo cáo đã tìm thấy gì
- GitGuardian công bố báo cáo State of Secrets Sprawl 2026 vào ngày 17 tháng 3 năm 2026. Dữ liệu của báo cáo bao gồm năm 2025.
- Báo cáo đếm được 24,008 bí mật duy nhất bị lộ trong các tệp cấu hình liên quan đến MCP trên GitHub công khai, trong đó có 2,117 thông tin xác thực hợp lệ duy nhất.
- Chỉ riêng trong năm 2025, đã có 28.65 triệu bí mật mới được ghi cứng (hardcode) thêm vào các commit trên GitHub công khai, mức mà báo cáo gọi là tăng 34% so với năm trước.
- Bí mật của các dịch vụ AI đạt 1,275,105, tăng 81% so với năm trước.
- Báo cáo cho rằng vấn đề này thường do chính tài liệu hướng dẫn thúc đẩy, vì tài liệu khuyến khích những cách làm không an toàn: đặt khóa API trực tiếp vào tệp cấu hình, đối số dòng lệnh hoặc chuỗi kết nối nhúng sẵn.
Vì sao tệp MCP của dự án dễ bị lộ
Claude Code lưu các máy chủ MCP phạm vi dự án trong tệp .mcp.json ở thư mục gốc của dự án, và tài liệu của nó mô tả tệp này được chia sẻ qua hệ thống quản lý phiên bản. Một khóa gõ vào đó sẽ hiện ra với mọi người có quyền đọc kho mã.
| Phạm vi | Nơi lưu | Ai nhìn thấy |
|---|---|---|
| Local | ~/.claude.json, dưới đường dẫn của dự án | Dự án hiện tại, riêng tư với bạn |
| Project | .mcp.json ở thư mục gốc của dự án | Dự án hiện tại, được chia sẻ qua hệ thống quản lý phiên bản |
| User | ~/.claude.json | Tất cả các dự án của bạn |
Giữ khóa ngoài tệp
- Claude Code mở rộng ${VAR} và ${VAR:-default} trong command, args, env, url và headers, nên tệp có thể ghi tên một biến thay vì chứa giá trị. Ví dụ trong chính tài liệu viết một header là Authorization: Bearer ${API_KEY}.
- Nếu một biến chưa được đặt và không có giá trị mặc định, cấu hình vẫn được nạp. Claude Code hiển thị cảnh báo và dùng nguyên văn ${VAR} như đã viết.
- Trong url và headers của một máy chủ từ xa, một số biến chứa thông tin xác thực được đọc là rỗng ngay cả khi đã được đặt. Tài liệu nêu ANTHROPIC_API_KEY, ANTHROPIC_AUTH_TOKEN, AWS_BEARER_TOKEN_BEDROCK, HTTPS_PROXY và NPM_TOKEN làm ví dụ, và nói rằng một biến tên API_KEY được mở rộng như đã viết.
- Giá trị viết trong args hoặc url cũng được lưu trong tệp, nên cảnh báo của báo cáo về đối số dòng lệnh và chuỗi kết nối nhúng sẵn cũng áp dụng ở đó.
Kiểm tra tệp của bạn
Công cụ kiểm tra bên dưới đọc tệp .mcp.json hoặc claude_desktop_config.json ngay trong trình duyệt của bạn. Nó đánh dấu những giá trị trông giống bí mật được ghi vào args, env và headers, dùng cùng các bộ phát hiện với Prompt Redactor, cùng với các tham chiếu biến mà Claude Code đọc là rỗng. Việc phát hiện chỉ mang tính heuristic, nên có thể bỏ sót một bí mật hoặc đánh dấu nhầm một giá trị vô hại.
Dùng thử: MCP Config Checker
Các quy tắc được đối chiếu với tài liệu vào ngày 2026-10-23.
Tài liệu: Claude Code / Model Context Protocol / VS Code
Không được kiểm tra: một lệnh có tồn tại hay không, một gói có cài được hay không, một máy chủ từ xa có phản hồi hay không, và các thiết lập mà ứng dụng khác đọc theo cách khác.
Mọi thứ chạy trong trình duyệt của bạn. Cấu hình không được tải lên.
Trước khi dán cấu hình vào cuộc trò chuyện với AI
Người ta thường dán tệp cấu hình vào cuộc trò chuyện với AI để hỏi vì sao một máy chủ không khởi động. Prompt Redactor che khóa API, token, mật khẩu và dữ liệu cá nhân trong văn bản, và có thể khôi phục chúng trong câu trả lời, tất cả đều diễn ra trong trình duyệt của bạn.
Dùng thử: Prompt Redactor
Văn bản đã che
Văn bản đã che sẽ hiện ở đây.
Công cụ này tìm văn bản có dạng nhận ra được. Nó không tìm được thông tin bảo mật viết trong những câu bình thường, nên không tìm thấy gì không có nghĩa là an toàn.
Hãy đọc văn bản đã che trước khi gửi.
Các định dạng khóa được đối chiếu với tài liệu của nhà cung cấp và các RFC vào 2026-10-23.
Mọi thứ chạy trong trình duyệt của bạn. Cả văn bản lẫn bảng khôi phục đều không được tải lên.
Nếu một bí mật đã được commit
- Tài liệu của GitHub nói bước đầu tiên là thu hồi hoặc xoay vòng (rotate) bí mật, để nó không thể được dùng để truy cập nữa.
- Sau khi xoay vòng, việc viết lại lịch sử kho mã có thể là không cần thiết, vì thu hồi bí mật có thể đã đủ để giải quyết vấn đề.
- Nếu commit tồn tại trong các fork, nó vẫn truy cập được ở đó. GitHub không thể cung cấp cho bạn thông tin liên hệ của chủ sở hữu các fork.
- Commit có thể vẫn truy cập được qua mã băm SHA-1 trong các chế độ xem được lưu đệm trên GitHub. GitHub Support có thể gỡ các chế độ xem và tham chiếu được lưu đệm đối với dữ liệu nhạy cảm mà rủi ro không thể giảm bằng cách xoay vòng thông tin xác thực.