Kho mã của người khác có thể chiếm quyền Claude Code thế nào: 7 quy tắc bảo vệ
MarkdownBốn đường prompt injection gián tiếp có tài liệu qua kho mã, nội dung GitHub, sự kiện Sentry và metadata MCP; nghiên cứu gốc và giới hạn chứa chặn thực tế.
Đọc toàn bộ bài viết
Điểm chính
Nghiên cứu công bố minh họa bốn đường chèn gián tiếp: hướng dẫn setup, nội dung GitHub, telemetry và metadata công cụ MCP. Báo cáo có ngày, client và cấu hình quyền khác nhau. Dưới là nguồn gốc và biện pháp hạn chế thực tế; không tệp settings nào bảo đảm miễn nhiễm.
Tài liệu Ailoot: API, khóa và thiết lập.
Bốn đường có tài liệu từ văn bản không tin cậy tới hành động tác nhân
Điểm chính
Ví dụ thuộc giai đoạn nghiên cứu và client khác nhau, không bốn phát hiện trong một nửa tháng. Chúng minh họa tư liệu không tin cậy ảnh hưởng công cụ của tác nhân; lỗi triển khai, credential có sẵn và quyền thực thi quyết định kết quả.
Tên gọi chính thức của việc này là indirect prompt injection: chỉ dẫn độc hại không đến trực tiếp từ bạn mà thông qua dữ liệu agent xử lý khi thực hiện một tác vụ—README từ bên ngoài, thông báo lỗi, bình luận trên GitHub hoặc phản hồi từ một dịch vụ bên ngoài. Bạn có thể quên thuật ngữ này ngay sau đoạn văn; từ đây trở đi, tôi sẽ dùng ngôn ngữ đơn giản.
Bốn ví dụ nghiên cứu được bàn dưới:
- Một repository trông vô hại có thể biến thành reverse shell.
- Tiêu đề một Pull Request có thể chiếm quyền ba AI agent khác nhau cùng lúc.
- Agent có thể nhận báo cáo lỗi Sentry giả thay vì báo cáo thật.
- Metadata công cụ MCP có thể chứa chỉ dẫn ảnh hưởng hành vi tác nhân.
README của một repository trông vô hại biến thành reverse shell như thế nào?
Điểm chính
Bạn clone kho trông thường rồi yêu cầu Claude Code chạy; tác nhân theo setup, lỗi đầu đề nghị “sửa” truy vấn DNS kẻ tấn công và mở reverse shell. PoC 0DIN ngày 25 tháng 6 năm 2026 minh họa kỹ thuật; không xác lập tần suất dùng trong sự cố thật.
Cơ chế được thiết kế sao cho không lớp riêng lẻ nào trông đáng ngờ:
- Bạn clone một repository trông bình thường và yêu cầu Claude Code chạy nó.
- Repository cài một gói Python được thiết kế để lỗi trong lần sử dụng đầu tiên.
- Thông báo lỗi lịch sự đề xuất lệnh “sửa lỗi”:
python3 -m axiom init. - Lệnh
initchạysetup.sh. - Script truy vấn một bản ghi DNS TXT (thường dùng để ghi chú liên quan đến tên miền, nhưng trường này chấp nhận văn bản bất kỳ). Kẻ tấn công đặt vào đó một lệnh mã hóa base64 (cách chuyển dữ liệu thành văn bản thuần không có dấu cách hoặc ký tự đặc biệt), rồi chuyển thẳng lệnh đó vào bash.
- Giá trị của bản ghi DNS có thể được thay đổi bất cứ lúc nào—giúp kẻ tấn công có reverse shell tương tác với quyền người dùng của bạn và quyền truy cập vào mọi bí mật trên máy.
Payload minh họa được lấy từ DNS lúc chạy nên chỉ quét byte kho không thấy payload cuối. Không chứng minh mọi scanner hay runtime control bất lực: xem nội dung lấy về, theo tiến trình, hạn chế mạng có thể lộ hoặc ngắt chuỗi. Nguồn là PoC, không đo mức phổ biến sự cố thực.
Tiêu đề Pull Request đã chiếm quyền ba AI agent khác nhau như thế nào?
Điểm chính
Báo cáo Comment and Control, công bố ngày 15 tháng 4 năm 2026, cập nhật ngày 4 tháng 5, ghi các đường GitHub-text riêng trong Claude Code Security Review, Gemini CLI Action, Copilot Agent. Hạ mức nghiêm trọng không chứng minh cả lớp injection đã sửa; báo cáo mô tả phản hồi nhà cung cấp và giới hạn công cụ Claude cụ thể.
Nhà nghiên cứu mô tả đường và phản hồi này; đây là báo cáo lịch sử, không xác minh mọi phiên bản sản phẩm hiện tại:
| Agent | Cuộc tấn công xâm nhập bằng cách nào | Dữ liệu bị lộ | Trạng thái hiện nay |
|---|---|---|---|
| Claude Code Security Review | Tiêu đề PR được chèn thẳng vào system prompt mà không qua bước lọc | ANTHROPIC_API_KEY, GITHUB_TOKEN | Theo nhà nghiên cứu: hạn chế ps và đổi tài liệu; mức nghiêm trọng thành None ngày 20 tháng 4 năm 2026 |
| Gemini CLI Action | Phần “Trusted Content” giả trong bình luận vượt qua chỉ dẫn an toàn | GEMINI_API_KEY | Google thêm các guardrail prompt riêng vào system prompt |
| GitHub Copilot Agent | Payload được giấu trong HTML comment vô hình trong Markdown | GITHUB_COPILOT_API_TOKEN, COPILOT_JOB_NONCE | GitHub coi đây là giới hạn kiến trúc, không phải lỗi |
Gần năm tháng trôi qua giữa báo cáo đầu tiên và cuối cùng trong chu kỳ công bố này (báo cáo Claude Code đầu tiên vào ngày 17 tháng 10 năm 2025; bản sửa lỗi GitHub Copilot cuối cùng vào ngày 9 tháng 3 năm 2026). Đổi mức nghiêm trọng và giảm thiểu trong báo cáo chưa xác lập đóng hoàn toàn mọi payload. Kho PoC của nhà nghiên cứu ghi đường Claude minh họa; không chạy payload tấn công trên hệ thống thật. Giá trị dành cho bạn nằm ở mẫu tấn công: dữ liệu chưa được xác minh từ GitHub đi vào agent, agent chạy lệnh và bí mật rò rỉ qua chính GitHub đó—kẻ tấn công không cần máy chủ bên ngoài.
Chỉ cần hai phân tích là đủ để thấy mẫu hình này: không thể khắc phục từng phát hiện mới riêng lẻ; các lỗ hổng kiểu này xuất hiện hai tuần một lần. Viết rõ quy tắc bảo mật trong CLAUDE.md và settings.json thay vì giữ chúng trong đầu là một phần của context engineering: thiết lập một lần, chúng tự động có hiệu lực trong mỗi phiên Claude Code mới mà không cần nhắc lại.
Báo cáo lỗi Sentry giả có thể chiếm quyền agent của bạn không?
Điểm chính
Kẻ tấn công gửi lỗi giả tới Sentry; tác nhân lấy issue qua MCP, nhận dữ liệu độc lẫn dữ liệu hợp lệ và chạy lệnh nhúng như “sửa lỗi”. Báo cáo Agentjacking của Tenet, cập nhật ngày 17 tháng 6 năm 2026, báo 85% khai thác qua các đợt xác minh có kiểm soát và hơn 100 lần thực thi, gồm Claude Code, Cursor, Codex. Báo cáo nêu capture Claude Code 2-1-161 ngày 2 tháng 6, nhưng thiếu danh sách đầy đủ mỗi mô hình, harness tái hiện, mẫu số chính xác và phân tách client. 85% là quan sát tổng hợp của nhà nghiên cứu, không xác suất mọi bản cài hiện tại bị chiếm.
Cuộc tấn công chỉ cần một khóa DSN của Sentry—một mã định danh công khai mà nhiều dự án đưa thẳng vào mã phía máy khách:
Cơ chế rất đơn giản: nhà phát triển yêu cầu agent xem các lỗi Sentry đang mở; agent yêu cầu dữ liệu qua máy chủ MCP, nhận một sự kiện độc hại trộn lẫn với sự kiện thật và đọc lệnh được nhúng trong đó như chỉ dẫn đáng tin cậy để sửa lỗi—vì xét về hình thức, đó chính xác là việc agent được yêu cầu làm.
Tenet báo kiểm soát có sẵn không cảnh báo ở môi trường thử. Không xác lập thực thi vô dấu mọi deployment: log agent/công cụ, endpoint telemetry và bản ghi mạng có thể ghi hành động sau. Tấn công bắt đầu qua telemetry gửi ngoài, rồi tùy công cụ và quyền thực của agent.
Metadata công cụ MCP có thể ảnh hưởng mô hình thế nào?
Điểm chính
Metadata công cụ có thể mang chỉ dẫn ảnh hưởng mô hình nhưng không tự tương đương quyền system prompt. MCPTox, nộp đầu ngày 19 tháng 8 năm 2025, đánh giá đầu độc công cụ MCP thực tế, báo độ nhạy tùy mô hình và setup. Quan sát mô hình mạnh hơn có thể nhạy hơn là kết quả trong benchmark, không luật phổ quát.
Cách diễn đạt của Microsoft là chính xác nhất tôi tìm được về chủ đề này:
Kỹ thuật này được gọi là tool poisoning: một chỉ dẫn ẩn trong mô tả của công cụ vô hại khiến agent hành động theo chỉ dẫn đó.
Trong phép thử MCPTox được dẫn, Claude 3.7 Sonnet có sức chống chịu tốt nhất nhưng tỷ lệ từ chối chỉ dẫn đầu độc vẫn dưới 3%. Kết quả thuộc các mô hình và setup của benchmark; không chứng minh mọi mô hình theo chỉ dẫn tốt hơn đều kém phân biệt metadata độc. Phải xét quyền công cụ và môi trường định dùng.
Các đường tấn công có gì chung và phát hiện có thể bỏ gì?
Điểm chính
Cả bốn phát hiện đều khai thác cùng một điểm mù: agent không phân biệt “dữ liệu cần phân tích” với “chỉ dẫn cần làm theo”. Chỉ quét kho có thể bỏ payload tới sau qua công cụ hoặc mạng. Phát hiện vẫn hữu ích nhưng cần xét toàn đường thực thi. Kết hợp giới hạn tệp, credential, công cụ và mạng thay chỉ dựa tác nhân nhận ra chỉ dẫn.
Kết luận áp dụng cho cả bốn phát hiện: không thể dựa vào việc “mã trông bình thường”—từng bước riêng lẻ trong một cuộc tấn công quả thực đều vô hại. Giới hạn khả năng thực và xem hành động tác nhân đề xuất; phát hiện và chứa chặn xử lý phần khác nhau của tấn công.
Claude Code đã có những biện pháp bảo vệ nào—và vì sao chúng vẫn chưa đủ?
Điểm chính
Claude Code có các biện pháp bảo vệ tích hợp: phân tích toàn bộ prompt để tìm chỉ dẫn đáng ngờ, dùng context window riêng cho nội dung web, kiểm tra mức độ tin cậy ở lần khởi chạy đầu tiên trong thư mục mới và khi kết nối máy chủ MCP. Nhưng flag --dangerously-skip-permissions, được nhiều người dùng để tắt các câu hỏi xin quyền gây phiền, vô hiệu hóa tất cả biện pháp bảo vệ này cùng lúc.
Anthropic thừa nhận trực tiếp vấn đề trong tài liệu của mình, thay vì che giấu:
Prompt injection là kỹ thuật kẻ tấn công dùng để ghi đè hoặc thay đổi chỉ dẫn của AI assistant bằng cách chèn văn bản độc hại. Claude Code có một số biện pháp bảo vệ trước những cuộc tấn công này.
Theo tài liệu, agent phân tích toàn bộ prompt để tìm chỉ dẫn đáng ngờ, không tự động phê duyệt curl và wget, giữ nội dung web trong context window riêng để không trộn với ngữ cảnh chính, đồng thời yêu cầu xác nhận độ tin cậy khi lần đầu chạy trong codebase mới hoặc kết nối máy chủ MCP mới.
Nhưng Anthropic nêu thẳng một lưu ý nghiêm trọng:
Chế độ bypassPermissions không bảo vệ trước prompt injection hoặc các hành động ngoài ý muốn.
Nếu bạn từng khởi chạy Claude Code với --dangerously-skip-permissions vì bực mình, muốn nó “đừng hỏi mãi nữa”, thì đó là lúc bạn tắt mọi cơ chế có thể ngăn chính xác bốn cuộc tấn công đã bàn ở trên. Tôi cố tình để flag này tắt, ngay cả khi Claude Code hỏi lại đến lần thứ mười trong một phiên—điều đó thật phiền, nhưng những câu hỏi này là ranh giới giữa “agent đã đọc văn bản đáng ngờ” và “agent đã thực thi nó”. Thiết lập hợp lý cho người không phải lập trình viên là chế độ quyền tiêu chuẩn (default hoặc acceptEdits) cùng sandbox được bật: các chỉnh sửa tệp thông thường diễn ra mà không cần hỏi thêm, còn lệnh terminal không thể thoát khỏi sandbox, ngay cả khi agent đã bị lừa.
Bật chế độ sandbox và khắc phục lỗ hổng mà nó mặc định để ngỏ như thế nào?
Điểm chính
Lệnh /sandbox trong phiên Claude Code giới hạn nơi agent được ghi và những tên miền nó có thể liên hệ. Lệnh hoạt động ngay trên macOS; Linux và WSL2 cần các gói bubblewrap và socat. Một chi tiết quan trọng: mặc định sandbox không chặn việc đọc tệp như ~/.ssh—bạn phải bật riêng tính năng đó.
Để bật vĩnh viễn cho tất cả dự án, hãy thay đổi một mục trong ~/.claude/settings.json:
{
"sandbox": { "enabled": true }
}
Theo mặc định, các lệnh trong sandbox chỉ có thể ghi vào thư mục làm việc của dự án và thư mục tạm của phiên. Truy cập mạng đi qua proxy—không có tên miền nào được cho phép trước, và Claude Code sẽ yêu cầu xác nhận khi lần đầu liên hệ một tên miền mới. Anthropic cho biết cách này giảm đáng kể số lời nhắc xin quyền—84% theo số liệu đo nội bộ của công ty—vì sandbox tự xử lý một số trường hợp an toàn thay vì hỏi bạn mỗi lần.
Lỗ hổng mà thiết lập tiêu chuẩn để ngỏ: mặc định sandbox giới hạn ghi, nhưng không ngăn đọc các tệp như ~/.aws/credentials và ~/.ssh. Đóng lỗ hổng này bằng một khối riêng trong cùng tệp:
{
"sandbox": {
"enabled": true,
"credentials": {
"files": [
{ "path": "~/.aws/credentials", "mode": "deny" },
{ "path": "~/.ssh", "mode": "deny" }
],
"envVars": [
{ "name": "GITHUB_TOKEN", "mode": "deny" },
{ "name": "NPM_TOKEN", "mode": "deny" }
]
}
}
}
Điểm mấu chốt là ngay cả khi reverse shell từ phân tích đầu tiên mở bên trong sandbox, các biến và tệp này cũng bị loại khỏi môi trường của tiến trình trước khi tiến trình khởi chạy—không còn gì để đánh cắp.
Nên thêm quy tắc permissions.deny nào ngay hôm nay?
Điểm chính
permissions.deny trong settings.json chặn các hành động cụ thể ở cấp quy tắc thay vì phân tích ý định—và Anthropic đảm bảo rõ rằng quy tắc deny luôn ghi đè quy tắc allow. Deny hạn chế hành động công cụ khớp nhưng không là ranh giới quyền OS; lệnh gián tiếp và công cụ khác cần kiểm soát riêng.
Bộ quy tắc tối thiểu dành cho người không phải lập trình viên, cùng lúc bao quát các mục tiêu chính của cả bốn cuộc tấn công:
{
"permissions": {
"deny": [
"Read(~/.ssh/**)",
"Read(~/.aws/credentials)",
"Read(.env)",
"Bash(curl *)",
"Bash(wget *)",
"Bash(sudo *)"
]
}
}
Theo tài liệu Claude Code, quy tắc deny luôn được ưu tiên hơn quy tắc allow. Vì vậy, ngay cả khi bạn (hoặc chính agent) vô tình cho phép quyền truy cập rộng hơn ở nơi khác, một quy tắc deny cụ thể vẫn có hiệu lực trước. Ưu tiên quy tắc áp cho yêu cầu công cụ khớp, không chứng minh bí mật không tới được qua mọi subprocess hoặc công cụ; dùng hạn chế hệ thống tệp và môi trường cưỡng chế nữa.
Claude Code cũng có chế độ auto, trong đó một mô hình phân loại riêng kiểm tra hành động trước khi chúng được thực hiện—đó không phải mô hình trò chuyện với bạn. Theo mặc định, chế độ này chặn, trong số những thứ khác, chính xác kiểu “tải mã xuống rồi thực thi ngay” (curl | bash). Anthropic cảnh báo rõ rằng đây là chế độ nghiên cứu giúp giảm số lời nhắc nhưng tự nó không đảm bảo an toàn—hãy xem đây là lớp bổ sung, không phải vật thay thế cho sandbox và permissions.deny.
Kiểm tra repository và máy chủ MCP trước khi tin cậy chúng với agent như thế nào?
Điểm chính
Trước khi yêu cầu Claude Code chạy repository từ bên ngoài, hãy kiểm tra tuổi đời, lịch sử commit và nguồn của liên kết. Trước khi cài đặt máy chủ MCP, chỉ dùng nguồn đáng tin cậy và nhớ rằng chính Anthropic không kiểm tra bảo mật các máy chủ bên thứ ba. Mỗi danh sách kiểm tra chỉ mất vài phút và bao quát chính xác các điểm xâm nhập được sử dụng trong cả bốn cuộc tấn công đã nêu.
Với repository, đây là danh sách kiểm tra ngắn trước khi giao cho agent:
- Đừng cài đặt ngay từ liên kết trong email, bài đăng hoặc bài đánh giá từ nguồn lạ.
- Nếu quá trình cài đặt xuất hiện lỗi kèm chỉ dẫn “chạy lệnh X để sửa”, hãy đọc xem X thực sự làm gì trước khi cho phép Claude Code chạy. Chỉ dẫn trong phân tích ở trên trông hoàn toàn bình thường—đó chính là mục đích.
- Kiểm tra tuổi đời repository và lịch sử commit, không chỉ số sao—repository mới tạo có thể dễ dàng được tăng sao giả để phục vụ kiểu tấn công này.
- Nếu repository xa lạ, hãy cài đặt trong máy ảo, không phải trên máy làm việc có các khóa thật. Đây là khuyến nghị trực tiếp của chính Anthropic khi làm việc với dịch vụ bên ngoài.
Lập trường của Anthropic về máy chủ MCP được nêu công khai:
Chúng tôi khuyến nghị tự viết máy chủ MCP hoặc dùng máy chủ từ các nhà cung cấp mà bạn tin tưởng. Anthropic đánh giá connector theo tiêu chí niêm yết trước khi thêm vào thư mục, nhưng không thực hiện kiểm tra bảo mật hay vận hành bất kỳ máy chủ MCP nào.
Điều đó có nghĩa bạn chịu trách nhiệm kiểm tra máy chủ MCP bên thứ ba, chứ không phải nền tảng nơi bạn cài đặt chúng. Một số nhóm—chủ yếu là startup bảo mật—đang xây dựng công cụ cho việc này: trình quét cấu hình MCP tìm mô tả bị đầu độc và tính năng “pinning” công cụ, lưu hash mô tả khi cài đặt lần đầu rồi cảnh báo nếu mô tả thay đổi sau đó. Những công nghệ này còn mới, nên chưa thể dựa vào chúng làm lớp bảo vệ duy nhất—nhưng đáng để theo dõi, nhất là khi bạn kết nối máy chủ MCP với môi trường production. Với những kết nối đó, bạn có thể pin từng phiên bản gói và ghi dấu vân tay của mô tả công cụ vào audit log.
7 quy tắc bảo vệ: danh sách kiểm tra hôm nay
Điểm chính
Mọi nội dung trong hướng dẫn này gói gọn thành bảy việc cụ thể: ba thay đổi trong một tệp settings.json (sandbox, credentials, permissions.deny) và bốn thói quen khi làm việc với mã, lỗi và máy chủ MCP của người khác. Không việc nào cần kiến thức chuyên môn—toàn bộ danh sách kiểm tra mất chưa đến 20 phút.
- Bật chế độ sandbox (
/sandboxhoặc"sandbox": {"enabled": true}trong~/.claude/settings.json) và thêm khốicredentialsđể ngăn đọc~/.sshvà~/.aws/credentials. - Thêm quy tắc
permissions.denyđể chặn việc đọc tệp bí mật và các lệnh bash nguy hiểm (curl,wget,sudo)—deny luôn ghi đè allow. - Tuyệt đối không chạy
--dangerously-skip-permissionstrên mã từ bên ngoài hoặc chưa được xác minh—flag này tắt mọi biện pháp bảo vệ cùng lúc, kể cả những biện pháp có thể đã ngăn chính các cuộc tấn công này. - Đừng để Claude Code tự động chạy lệnh “sửa lỗi” trong thông báo lỗi—trước tiên hãy đọc xem lệnh thực sự làm gì.
- Chỉ cài đặt máy chủ MCP từ các nguồn bạn tin tưởng và nhớ rằng Anthropic không kiểm tra bảo mật chúng thay bạn.
- Tách các phiên theo quyền: một phiên làm việc với dữ liệu cá nhân và không thấy dữ liệu bên ngoài; phiên thứ hai kiểm tra email, repository và ticket của người khác nhưng không thể truy cập bí mật; phiên thứ ba xuất bản ra bên ngoài—và chỉ xuất bản nội dung bạn đã đích thân phê duyệt. Trong dự án của mình, tôi luôn giữ ranh giới này nghiêm ngặt: phiên có quyền truy cập khóa thanh toán không bao giờ đọc ticket hoặc repository bên ngoài tùy tiện, còn phiên phân tích mã của người khác thì hoàn toàn không thấy bí mật. Đừng trộn lẫn các vai trò này trong một cuộc trò chuyện.
- Luôn cập nhật Claude Code và các script tự động hóa được kết nối—phần lớn lỗ hổng được bàn đến ở đây đã được vá khi hướng dẫn này xuất bản, và lỗ hổng mới cũng được khắc phục theo cách tương tự.
Tiếp theo là gì
Không lớp nào trong số này đảm bảo an toàn tuyệt đối—chính Anthropic cũng thẳng thắn nói rằng không có biện pháp bảo vệ nào miễn nhiễm hoàn toàn. Tôi không mong Claude Code tự nhận ra thủ thuật trong thông báo lỗi hoặc bình luận issue. Với tôi, sandbox và permissions.deny là một phần trong cách quản lý ngữ cảnh dự án: agent nhìn thấy gì, mặc định tin điều gì và chuyện gì xảy ra khi nó mắc lỗi.
Nguồn
- 0DIN: Clone This Repo and I Own Your Machine, ngày 25 tháng 6 năm 2026
- Comment and Control, ngày 15 tháng 4 năm 2026; cập nhật ngày 4 tháng 5
- Tenet Threat Labs: Agentjacking, cập nhật ngày 17 tháng 6 năm 2026
- MCPTox: benchmark gốc về đầu độc công cụ
- Tài liệu Claude Code - Các chế độ quyền
- Anthropic Engineering - Sandbox của Claude Code
- Tài liệu Claude Code - Quyền
- Tài liệu Claude Code - Thực hành bảo mật tốt nhất
- Tài liệu Claude Code - Model Context Protocol (MCP)
- Phân tích một lỗ hổng liên quan trong GitHub Action của Claude Code
- Cách cấu hình Claude Code để nó không phá hỏng dự án của bạn qua đêm
- Máy chủ MCP của Claude Code: 7 cấu hình sẵn dùng và hướng dẫn cài đặt từng bước
- Bảo mật Vibe-coding: cách ngăn ứng dụng bạn xây dựng bằng AI bị hack
Nếu cần truy cập các mạng nơ-ron thông qua Ailoot, hãy xem Ailoot.
Xem thêm chi tiết
Câu hỏi thường gặp
Tỷ lệ thành công 85% báo cáo có dự đoán rủi ro cấu hình hiện tại của tôi không?
Không. Đó là tổng hợp Tenet từ các đợt xác minh có kiểm soát, không có đủ danh sách mô hình công khai, harness tái hiện hay mẫu số chính xác. Công cụ, duyệt, credential và mạng của bạn quyết định hành động khả thi.
Vì sao chỉ quét kho đã clone là chưa đủ?
Payload cuối có thể đến sau qua báo lỗi, metadata công cụ hoặc DNS được lấy về. Xem toàn đường thực thi và hạn chế credential, tệp, công cụ, mạng; scanner và deny riêng chưa chứng minh chứa chặn hoàn toàn.