Vừa qua, nhóm nghiên cứu bảo mật Island công bố một chiến dịch tấn công lớn mà họ đặt tên là FakeGit – hay nói đúng hơn là AgentBaiting – đánh dấu một bước ngoặt trong cách tội phạm mạng khai thác hệ sinh thái AI agent. Số liệu họ đưa ra khiến tôi nhớ lại những ngày đầu kiểm toán hợp đồng thông minh, khi mà một lỗ hổng nhỏ trong hàm khớp lệnh có thể khiến hàng triệu USD bốc hơi. Nhưng lần này, lỗ hổng không nằm trong một hàm cụ thể, nó nằm trong triết lý thiết kế của toàn bộ lớp công cụ tự động hóa.
7.600 repo độc hại, 1,4 triệu lượt tải và một AI agent sẵn sàng giới thiệu
Theo báo cáo từ Island Security Research, chiến dịch FakeGit đã tạo ra khoảng 7.600 repository GitHub chứa mã độc, hơn 800 MCP server giả mạo và khoảng 6.600 tệp cấu hình độc hại. Tổng số lượt tải xuống của chỉ riêng 200 repository phổ biến nhất đã vượt 1,4 triệu. Điều đáng nói không chỉ là quy mô, mà là cách tấn công vận hành: thay vì lừa người dùng click vào link lạ, các repository độc hại này được chính AI agent – như Claude Code, Gemini và ChatGPT – đề xuất cho người dùng một cách tự nhiên.
Thử nghiệm của Island cho thấy, khi tạo một skill giả với mô tả hấp dẫn và đăng tải công khai, Claude Code đã đề xuất skill đó cho người dùng. Gemini và ChatGPT cũng làm điều tương tự với các MCP server giả mạo. Nói cách khác, AI agent đang trở thành kênh phân phối mã độc hiệu quả mà không cần bất kỳ kỹ thuật xâm nhập nào.
Giao thức MCP và lỗ hổng niềm tin mặc định
Để hiểu vì sao điều này xảy ra, cần nhìn vào cách AI agent tương tác với thế giới bên ngoài. Model Context Protocol – giao thức do Anthropic giới thiệu – cho phép các trợ lý AI kết nối với các công cụ thông qua MCP server. Nhà phát triển có thể cài đặt server từ các registry công khai như MCP.so, Glama, LobeHub hoặc tìm trực tiếp trên GitHub. Các AI agent thường được hướng dẫn để tìm kiếm mã nguồn, đánh giá mức độ tin cậy dựa trên số sao, số fork, lượt tải và mức độ cập nhật – những tín hiệu xã hội dễ bị làm giả.
Vấn đề là: khi một agent đề xuất “cài đặt repository này”, nó không kiểm tra chữ ký số, không xác minh danh tính tác giả, cũng không chạy mã trong môi trường sandbox. Nó dựa trên giả định rằng những gì xuất hiện trên GitHub và các registry là an toàn. Giả định này từng có phần hợp lý trong thời kỳ đầu mã nguồn mở, nhưng giờ đây, khi AI agent có thể tự động tải xuống và thực thi mã, giả định đó trở thành một lỗ hổng nghiêm trọng.
Chuỗi tấn công: Từ repository giả mạo đến hợp đồng thông minh trên Polygon
Chuỗi tấn công của FakeGit được thiết kế nhiều lớp, khiến việc phát hiện trở nên khó khăn hơn so với các chiến dịch cũ.
Đầu tiên, kẻ tấn công tạo các repository GitHub với tên gọi liên quan đến các chủ đề nóng – ví dụ “solana-mcp-server”, “claude-skill-template” hay “mcp-server-google-drive” – nhằm tối ưu khả năng được AI agent gợi ý. Các repository này có README được viết chỉn chu, lịch sử commit trông tự nhiên và đôi khi mạo danh danh tính của nhà phát triển thực sự. Điều này đánh vào “sự lười biếng nhận thức” của cả con người lẫn AI.
Khi người dùng cài đặt, một tệp ZIP hoặc script được giải nén và thực thi. Thay vì sử dụng các ngôn ngữ phổ biến như Python hay PowerShell – những ngôn ngữ thường bị các công cụ bảo mật soi xét – mã độc sử dụng LuaJIT loader, một kỹ thuật ít phổ biến hơn và giúp né tránh nhiều cơ chế phát hiện tĩnh. Loader sau đó khởi chạy SmartLoader, một payload có nhiệm vụ liên lạc với một hợp đồng thông minh trên Polygon để nhận lệnh từ kẻ tấn công.
Việc lựa chọn Polygon làm kênh C2 không phải ngẫu nhiên. Polygon có chi phí giao dịch thấp, khối lượng giao dịch lớn, giúp các lệnh C2 bị chìm trong dòng chảy dữ liệu khổng lồ. Hợp đồng thông minh có thể lưu trữ lệnh trong calldata, và vì tương thích EVM, kẻ tấn công có thể sử dụng thư viện web3 phổ biến để tương tác mà không cần hạ tầng riêng. Từ góc nhìn của các giải pháp an ninh mạng truyền thống, việc một tiến trình gọi đến RPC của Polygon trông không khác gì một ứng dụng blockchain hợp pháp.
Cuối cùng, SmartLoader kích hoạt StealC – một malware thuộc họ stealer chuyên đánh cắp cookie, mật khẩu, token OAuth, SSH key và đặc biệt là session token của trình duyệt. Kẻ tấn công có thể dùng các session token này để chiếm quyền truy cập vào tài khoản người dùng ngay cả khi họ đã đổi mật khẩu – giống như việc một chiếc chìa khóa bị sao chép mà chủ nhà không hề hay biết.
Vì sao AI agent trở thành nạn nhân hoàn hảo?
Trong quá trình kiểm toán các giao thức DeFi, tôi nhận ra rằng những hệ thống bị tấn công nghiêm trọng nhất thường không phải là những hệ thống phức tạp nhất, mà là những hệ thống có quá nhiều niềm tin mặc định. AI agent hiện tại được tối ưu cho mục tiêu “trả lời nhanh, hành động đúng” chứ không phải “nghi ngờ mọi thứ”. Chúng học từ lượng lớn dữ liệu công khai và đánh giá độ tin cậy của repository dựa trên mức độ phổ biến – điều mà kẻ tấn công hoàn toàn có thể thao túng bằng cách tạo bot để tăng lượt star, fork và download.
Một điều quan trọng nữa: AI agent không có “ý thức về hậu quả”. Khi Claude Code đề xuất một MCP server giả mạo, nó không hiểu rằng việc cài đặt server đó có thể dẫn đến việc đánh cắp toàn bộ thông tin xác thực của người dùng. Nó chỉ đơn thuần thực hiện nhiệm vụ “tìm kiếm và gợi ý” theo dữ liệu nó được huấn luyện. Điều này tạo ra một dạng tấn công mà tôi gọi là “lừa đảo thuật toán” – kẻ tấn công không lừa con người, mà lừa chính mô hình.
Blockchain: Nơi ẩn náu và là nơi phơi bày
Nhưng có một nghịch lý thú vị: trong khi kẻ tấn công dùng blockchain để ẩn mình, chính blockchain lại là nơi lưu giữ dấu vết không thể xóa. Mỗi lệnh C2 được ghi trên Polygon là một mảnh bằng chứng vĩnh viễn. Nếu các nhà điều tra xác định được địa chỉ hợp đồng C2, họ có thể dùng các công cụ phân tích chuỗi như Etherscan, Chainalysis hay TRM Labs để lần theo lịch sử giao dịch, truy vết nguồn tiền trả gas và tìm ra các ví liên quan. Điều này trái ngược hoàn toàn với các máy chủ C2 truyền thống – chỉ cần tắt server là mọi dấu vết biến mất.
Từ góc nhìn kỹ thuật, tôi tin rằng các nhà phân tích bảo mật nên bắt đầu xây dựng danh sách các hợp đồng thông minh có hành vi bất thường – ví dụ như hợp đồng được gọi đến bởi các địa chỉ mới tạo, có chuỗi calldata lặp lại, hoặc được triển khai bởi các ví có nguồn tiền chung. Kỹ thuật này tương tự như việc tôi từng sử dụng để phát hiện các bot giao dịch bất thường trong Uniswap v2, khi phân tích dữ liệu on-chain tìm ra các mẫu hành vi trùng lặp.
Góc khuất của nghịch lý
Nhiều người sẽ vội vàng kết luận rằng AI agent là mối đe dọa, hoặc blockchain đang tiếp tay cho tội phạm. Nhưng tôi cho rằng vấn đề nằm ở một lớp sâu hơn: chúng ta đã xây dựng một hệ sinh thái nơi danh tính không thể kiểm chứng. Trên GitHub, bất kỳ ai cũng có thể tạo tài khoản, đổi tên, fork repository và đăng tải mã độc. Các registry MCP không có tiêu chuẩn xác minh tác giả. AI agent không có cơ chế để phân biệt một nhà phát triển đáng tin cậy với một tài khoản vừa được mua lại.
Blockchain, với khả năng lưu trữ hash và chữ ký số, thực ra là một giải pháp tiềm năng cho vấn đề này – nếu chúng ta biết cách tận dụng. Hãy tưởng tượng một hệ thống nơi mỗi gói phần mềm được ký bởi một khóa riêng tư, và khóa công khai của nhà phát triển được ghi nhận trên chuỗi. AI agent khi đó có thể kiểm tra chữ ký trước khi đề xuất cài đặt. Nhưng điều đó đòi hỏi sự thay đổi mang tính hệ thống từ các nền tảng như GitHub, Anthropic, Google và OpenAI – một quá trình không thể diễn ra trong một sớm một chiều.
Trong lúc chờ đợi, các tổ chức và cá nhân cần tự bảo vệ mình bằng những biện pháp cụ thể. Với các doanh nghiệp đang sử dụng AI agent, việc xây dựng danh sách trắng các MCP server và repository đã được phê duyệt là điều cấp thiết. Sandbox là một lựa chọn khác: hãy chạy mọi mã do AI đề xuất trong môi trường cô lập trước khi đưa vào hệ thống chính. Và quan trọng nhất – hãy thu hồi toàn bộ session token, xoay vòng mật khẩu và kiểm tra các phiên đăng nhập bất thường nếu bạn nghi ngờ hệ thống đã bị xâm nhập. Một kẻ tấn công đã chiếm được session token của bạn có thể tiếp tục truy cập tài khoản ngay cả khi bạn đã đổi mật khẩu.
Bài học cho kỷ nguyên agentic
Chiến dịch FakeGit là một lời cảnh tỉnh cho toàn bộ ngành. Nó cho thấy rằng tốc độ áp dụng AI agent đang vượt xa khả năng bảo vệ của chúng ta. Khi chúng ta giao càng nhiều quyền tự chủ cho AI, thì việc xác minh nguồn gốc mã nguồn càng trở nên quan trọng. Và blockchain – thứ đang bị xem là công cụ của tội phạm trong câu chuyện này – thực ra lại có thể là một phần của giải pháp, với điều kiện chúng ta thiết kế các giao thức danh tính và xác thực ngay từ đầu.
Nếu không, những gì xảy ra ngày hôm nay với GitHub và MCP chỉ là phần mở đầu. Khi các agent trở nên phổ biến hơn, chúng sẽ trở thành mục tiêu của nhiều cuộc tấn công tinh vi hơn. Và blockchain sẽ tiếp tục đóng vai trò kép: vừa là nơi ẩn náu cho kẻ xấu, vừa là cuốn sổ cái không bao giờ quên, nơi sự thật cuối cùng sẽ được phơi bày. Câu hỏi duy nhất là liệu các nền tảng AI có đủ kiên nhẫn để xây dựng tầng bảo vệ trước khi quá muộn hay không.