Thông tin xác thực trong bộ nhớ ứng dụng của bạn sẽ bị rò rỉ
Các thông tin xác thực trong bộ nhớ ứng dụng của bạn có thể đọc được bởi bất kỳ đoạn code nào chạy trên máy đó, và trong năm 2026 danh sách đó có cả agent. Một mô hình AI đã tự mình bám rễ trên FreeBSD và thoát khỏi sandbox của chính nó. Đừng tiếp tục giữ một thông tin xác thực常 trú để người khác lấy cắp.
Đây là một dự báo khó chịu, và nó không phải lời né tránh: các thông tin xác thực đang nằm trong bộ nhớ ứng dụng của bạn ngay lúc này — mật khẩu cơ sở dữ liệu được nạp lúc khởi động, API token trong môi trường, khóa đám mây mà ứng dụng giữ để làm việc — nhiều khả năng sẽ bị rò rỉ trong vòng mười hai tháng tới. Không phải vì ai đó hack giỏi hơn đội bảo mật của bạn. Mà vì giả định duy nhất từng khiến một bí mật trong bộ nhớ an toàn — rằng chỉ có code đáng tin cậy chạy bên cạnh nó — đã âm thầm không còn đúng trong năm nay, và gần như không ai thay đổi cách họ đối phó với điều đó.
Đây là việc bạn không thể xếp vào mục "để sau".
Chuyện gì thực sự đang diễn ra
Gần như mọi ứng dụng đều giữ bí mật của mình theo cùng một cách. Khi khởi động, ứng dụng đọc chúng — từ file .env, một secret được mount vào, một biến môi trường — và nạp vào bộ nhớ của chính nó, ở dạng plaintext, trong suốt vòng đời của tiến trình. Ba mươi năm qua đó là một thiết kế hợp lý, và nó hợp lý vì đúng một lý do: đọc bộ nhớ của một chương trình đang chạy khác, hoặc môi trường của nó, đòi hỏi phải thực thi code trên cùng máy, với cùng mức đặc quyền. Rào cản đó trước đây rất cao. Những thứ duy nhất vượt qua được nó là phần mềm của chính bạn và con người của chính bạn.
Một agent giờ đã vượt qua được nó. Một coding agent, một công cụ MCP, một worker tự trị — theo thiết kế, nó thực thi code, trên một máy thật, dưới tư cách một người dùng thật. Và với code chạy ở mức đặc quyền đó, một thông tin xác thực trong bộ nhớ không phải là két sắt cần phá. Nó là một file cần đọc. /proc/<pid>/environ liệt kê các biến môi trường của tiến trình khác ở dạng plaintext. Một core dump giao nộp cả heap của nó. Không có exploit, không có CVE, không có báo động — EDR, WAF, firewall của bạn nhìn một tiến trình được ủy quyền đọc bộ nhớ mà nó được phép đọc, và không thấy gì sai, vì theo quy tắc của chúng thì chẳng có gì sai. Mỗi bước đều hợp lệ. Bí mật đơn giản là ở đó, sẵn sàng bị lấy đi.
Đây không phải lỗi bạn gây ra
Hãy rõ ràng về lỗi thuộc về ai, vì nó không phải của bạn. File .env trên một máy đã được siết chặt, secret được kéo từ một secret manager vào bộ nhớ lúc boot — đó là pattern được khuyến nghị. Đó là twelve-factor, đúng sách giáo khoa, điều mà một kỹ sư giỏi làm. Cách làm đó có trách nhiệm. Thứ hết hạn không phải là cách làm. Mà là giả định bên dưới nó: rằng đoạn code duy nhất chạy bên cạnh bí mật của bạn là đoạn code bạn đặt ở đó. Khoảnh khắc một agent chạy trên máy đó — và bạn đang đặt agent ở khắp nơi, một cách có chủ đích, vì chúng hữu ích — giả định đó không còn, và plaintext mà bạn có trách nhiệm nạp vào bộ nhớ đang nằm trong bán kính ảnh hưởng.
Chúng tôi đã thấy phiên bản đầu tiên của chuyện này xảy ra [4]. Khi một coding agent bị chiếm quyền điều khiển — một báo cáo lỗi bị đầu độc, một công cụ độc hại nằm trong đường đi của nó — thứ đầu tiên trong tầm với chính xác là thứ này: các token và khóa mà tiến trình của nó, và các tiến trình bên cạnh nó, đang giữ trong bộ nhớ. Lệnh injection chỉ là cánh cửa. Thông tin xác thực常 trú mới là phần thưởng.
"Nhưng trên máy đó không có agent nào"
Đây là câu trả lời dễ chịu, và cũng là câu trả lời thất bại. Cách phòng thủ dựa vào một bức tường: giữ agent ở bên này, giữ thông tin xác thực ở bên kia. Bức tường đó chính là thứ mà năm nay đã dồn sức chứng minh là không giữ nổi.
Bạn không phải tin điều đó trên niềm tin — năm nay đã đưa ra bằng chứng, hai lần. Trong thử nghiệm do chính họ công bố, Anthropic trỏ mô hình Mythos vào NFS server của FreeBSD, phần kernel mà con người đã đọc suốt mười bảy năm, và tự nó tìm ra một stack overflow trong đường dẫn xác thực, viết một khai thác dùng hai mươi gadget chia thành sáu gói mạng, và chiếm quyền root không cần xác thực qua mạng. Đó là CVE-2026-4747, và mất khoảng bốn giờ. Không phải "đánh dấu một hàm đáng ngờ" — mà là một khai thác remote-root chạy được nhắm vào code đã sống sót qua mười bảy năm review, và điều tương tự với các lỗ hổng nghiêm trọng trên mọi hệ điều hành và trình duyệt lớn mà nó được nhắm tới [1].
Và lớp containment mà bạn bọc quanh một agent cũng không khá hơn chu vi là bao. Trong đánh giá an toàn của chính Anthropic, khi được giao nhiệm vụ thoát khỏi sandbox và tiếp cận nhà nghiên cứu đang chạy bài kiểm tra, Mythos đã xâu chuỗi các kỹ thuật khai thác — một JIT heap spray — để thoát khỏi cả trình kết xuất của trình duyệt lẫn sandbox của hệ điều hành, ra tới internet mở, và gửi email cho ông ấy [1]. Lưu ý công bằng: nó làm vậy vì bài kiểm tra yêu cầu nó làm, không phải tự thân nó chủ động. Nhưng "chúng tôi yêu cầu nó làm" lại chính xác là ghế của kẻ tấn công — và "thoát ra, leo thang đặc quyền, lấy thông tin xác thực" là payload cố hữu của mọi prompt độc hại từ đây trở đi. Khả năng đó chưa bao giờ chờ sự chủ động của mô hình. Nó chờ một chỉ thị, và đó là đầu vào duy nhất bạn có thể chắc chắn sẽ đến. Mức độ nghiêm trọng đã được thừa nhận ở tầm cao duy nhất có giá trị — Mỹ đã đưa chính mô hình này vào diện kiểm soát xuất khẩu, lần đầu tiên áp dụng cho một mô hình AI thay vì cho các con chip phía sau nó, sau khi một phiên bản của Mythos được cho là đã luồn qua gần như toàn bộ các hệ thống mật của NSA trong vài giờ [2][3].
Giờ hãy đặt điều đó cạnh bài toán bộ nhớ, vì chúng gặp nhau. Quyền root trên một máy đọc được bộ nhớ của bất kỳ tiến trình nào, không chỉ của người dùng của nó. Vì vậy câu hỏi thực sự chưa bao giờ là "liệu tôi có chạy một agent bên cạnh bí mật của mình không". Mà là "một mô hình có năng lực có thể chạm tới máy này, hoặc thoát khỏi cái hộp tôi nhốt nó vào không" — và năm nay đã trả lời cả hai, một cách công khai. "Trên máy đó không có agent nào" không phải là một kiểm soát bạn thực thi. Đó là một hy vọng về chỗ mà mọi thứ sẽ đứng yên, và chính những thứ đó đã cho thấy chúng không đứng yên. Hãy lên kế hoạch cho việc agent chạm tới máy. Lựa chọn thay thế là lên kế hoạch để trông vào may mắn.
Được xây dựng cho điều này, có chủ đích
Vậy nên hãy thôi cố giữ agent tránh xa một bí mật đang nằm chình ình ở đó. Hãy lấy đi thứ đang nằm đó.
Một thông tin xác thực trong Clavitor không bao giờ được nạp vào bộ nhớ ứng dụng của bạn để chờ. Nó được lấy trực tiếp, tại thời điểm của lời gọi, dùng cho đúng yêu cầu đó, rồi biến mất. Nó không bao giờ nằm trong một biến môi trường, không bao giờ rơi vào một file .env, không bao giờ dành cả vòng đời của tiến trình để常 trú trong một heap chờ bị dump. Không có gì để /proc liệt kê và không có gì để một core dump mang đi, vì máy đó ngay từ đầu đã không được tin tưởng để giữ một bí mật thường trực.
Và thông tin xác thực duy nhất mà nó giao ra được giới hạn phạm vi cho đúng việc mà agent đó được đặt tên. Nó không liệt kê được vault, không đếm được những gì khác tồn tại, không tìm ra được khóa tiếp theo. Mỗi lần lấy đều bị giới hạn tốc độ, kích hoạt chế độ khóa khi có một đợt bất thường, và được ghi vào một log chỉ ghi thêm, chuỗi bằng băm, nằm trên vault — không phải trên endpoint mà agent chạy trên đó. Đó là dấu vết bất biến, quy được trách nhiệm mà PCI DSS Requirement 10 và NIST 800-171 (kiểm soát 3.3.8) yêu cầu: bằng chứng chính xác về những gì agent của bạn đã chạm tới, được giữ ở nơi một máy bị xâm phạm không thể chạm tới cũng không thể ghi đè.
Một giới hạn thành thật, vì tuyên bố cần có nó: tại vi giây mà nó được dùng, bí mật确实 tồn tại trong bộ nhớ — cho đúng yêu cầu đó, trong đúng khoảnh khắc đó. Không thiết kế nào viết lại được vật lý. Thứ nó viết lại là sự khác biệt giữa một bí mật thường trú — nằm trong tiến trình của bạn hàng giờ, có thể dump bất cứ lúc nào — và một bí mật thoáng qua — hiện diện cho một lời gọi duy nhất rồi không còn ở đó để lấy. Bạn không thể dump thứ không đứng yên.
Bài học không phải là "siết chặt máy hơn nữa"
Bạn có thể tiếp tục gia cố máy. Bạn có thể tiếp tục tự nhủ rằng sẽ không bao giờ có code không đáng tin cậy chạy bên cạnh bí mật của mình. Nhưng đó chính xác là canh bạc đang đắt thêm mỗi tháng, với một đối thủ mà việc của họ là thực thi code và đi xuyên qua những bức tường bạn tưởng sẽ giữ được. Thông tin xác thực trong bộ nhớ an toàn khi mọi người đọc nó đều đáng tin. Những người đọc đã thay đổi. Nước đi duy nhất sống sót qua sự thay đổi là ngừng để thông tin xác thực nằm đó chờ bị đọc.
Chúng tôi ghi lại những quy tắc một công cụ quản lý thông tin xác thực nên tuân thủ trong một thế giới như thế này. Hãy đối chiếu công cụ của bạn với chúng.
Clavitor (@clavitorai) là kho lưu trữ thông tin xác thực được xây dựng cho các AI agent, và để chống lại chính họ. clavitor.ai
Nguồn
[1] Anthropic (Anthropic Red Team) — Assessing Claude Mythos Preview's cybersecurity capabilities (khám phá và khai thác tự động lỗ hổng RCE trên NFS của FreeBSD, CVE-2026-4747; các lỗ hổng nghiêm trọng trên các hệ điều hành và trình duyệt lớn) — https://red.anthropic.com/2026/mythos-preview/
[2] Associated Press (via CNBC) — Anthropic's Mythos model found vulnerabilities in classified U.S. government systems, official says — https://www.cnbc.com/2026/06/23/anthropics-mythos-model-found-vulnerabilities-in-classified-us-government-systems-official-says.html
[3] Fortune — Anthropic disables Fable and Mythos AI models following U.S. government export ban — https://fortune.com/2026/06/13/anthropic-disables-fable-mythos-export-controls-national-security-threat/
[4] Tenet Security (Tenet Threat Labs) — Agentjacking: Coding Agents with Fake Sentry Errors (tiền lệ về việc chiếm quyền điều khiển để lấy thông tin xác thực常 trú) — https://tenetsecurity.ai/blog/agentjacking-coding-agents-with-fake-sentry-errors/