Nếu bạn đang chạy một AI Agent trong pipeline CI/CD của mình, có thể bạn đã vô tình trao chìa khóa văn phòng cho kẻ trộm.
Vào một buổi sáng thứ Ba tháng 3 năm 2025, gói litellm trên PyPI – một thư viện Python được hàng ngàn nhóm phát triển AI sử dụng để làm cầu nối giữa các mô hình ngôn ngữ lớn – đã bị nhiễm độc. Hai phiên bản 1.82.7 và 1.82.8 tồn tại vỏn vẹn 40 phút trước khi bị gỡ xuống. Nhưng trong khoảng thời gian ngắn ngủi đó, một tệp tin có tên litellm_init.pth đã lặng lẽ được thực thi trên hàng ngàn máy chủ và môi trường build. Kết quả: 78.330 khóa SSH, AWS/GCP/Azure credentials, Kubernetes token và LLM API key bị đánh cắp và gửi về một tên miền giả mạo – models.litellm.cloud.
Con số 2.186 tổ chức bị ảnh hưởng không chỉ là một cột mốc buồn cho bảo mật chuỗi cung ứng phần mềm. Nó là hồi chuông cảnh tỉnh cho một thực tế mới: kẻ tấn công không còn nhắm vào lỗi runtime nữa. Chúng đang nhắm vào lớp tin cậy nhất – package registry – và qua đó, chiếm quyền điều khiển toàn bộ hạ tầng AI Agent.
Đây là câu chuyện về sự kiện LiteLLM, nhưng không chỉ là câu chuyện về một gói độc. Nó là biểu đồ của một cuộc chiến tranh giành quyền kiểm soát “lớp kết nối” giữa con người, mô hình và dữ liệu. Và nếu bạn là một nhà phát triển blockchain, đang xây dựng các tác nhân AI trên chuỗi, hoặc đơn giản là một người dùng DeFi yêu thích chatbot – thì bạn đang ở trong vùng nguy hiểm.
Hook: Gói tin 40 phút
Ngày 18 tháng 3, CloudSEK – một công ty an ninh mạng Ấn Độ – phát hiện ra hai bản phát hành ác ý trên PyPI. Chúng không phải là kết quả của một lỗi mã hóa thông thường. Đây là một cuộc tấn công có chủ đích vào cơ sở hạ tầng AI Agent. Tệp .pth (path configuration file) là một tính năng ít người biết đến của Python: khi trình thông dịch khởi động, nó tự động import các đường dẫn được liệt kê trong tệp .pth. Kẻ tấn công đã lợi dụng điều này để thực thi mã tùy ý mà không cần bất kỳ lệnh import nào từ phía nhà phát triển. Không có dấu hiệu trong mã nguồn của dự án. Chỉ có một tệp cấu hình vô hại.
Trong vòng 40 phút, hệ thống thu thập dữ liệu đã hoạt động hết công suất. Nó quét các biến môi trường, tệp cấu hình, và thư mục .ssh để lấy tất cả những gì có thể. Kết quả được gửi đến models.litellm.cloud – một tên miền chỉ khác tên miền chính thức litellm.cloud ở chỗ thêm chữ “s” vào đầu. Một kỹ thuật “typosquatting” cổ điển nhưng cực kỳ hiệu quả khi kết hợp với một gói phần mềm hợp pháp.
Đây không phải là một cuộc tấn công đơn lẻ. Theo CloudSEK, nó là một phần của chiến dịch do Team PCP thực hiện, với các mục tiêu trước đó bao gồm Trivy (quét bảo mật container), CanisterWorm (npm worm), Checkmarx KICS (quét IaC) và Telnyx (API viễn thông). Mục tiêu: chiếm quyền kiểm soát chuỗi công cụ phát triển, từ đó thâm nhập vào các tổ chức lớn. LiteLLM chỉ là một viên gạch trong bức tường.
Context: Khi AI Agent trở thành “ca sĩ” của chuỗi cung ứng
Để hiểu tại sao LiteLLM lại quan trọng, bạn cần nhìn vào bức tranh lớn của AI Agent. Một AI Agent, dù là chatbot, công cụ tự động hóa, hay bot giao dịch, đều cần kết nối với các mô hình ngôn ngữ lớn (LLM) từ nhiều nhà cung cấp khác nhau: OpenAI, Anthropic, Google, Mistral, v.v. LiteLLM hoạt động như một “gateway” – một lớp trừu tượng giúp nhà phát triển chỉ cần viết một API call duy nhất để gọi bất kỳ mô hình nào. Nó được sử dụng rộng rãi trong các dự án AI Agent, bao gồm cả những dự án trong lĩnh vực tiền điện tử, nơi các bot giao dịch tự động, phân tích on-chain, và quản lý danh mục đầu tư dựa trên AI ngày càng phổ biến.
Bằng cách tấn công LiteLLM, kẻ tấn công không chỉ lấy được khóa API của các mô hình LLM – thứ có thể bị dùng để tiêu tốn hạn mức của nạn nhân – mà còn lấy được SSH keys, cloud credentials, và Kubernetes tokens. Điều này có nghĩa là chúng có thể truy cập vào toàn bộ hạ tầng nơi AI Agent đang chạy: server, database, cluster, và thậm chí cả các smart contract nếu chúng được kết nối.
Đây là một sự thay đổi lớn trong chiến thuật tấn công. Trước đây, các cuộc tấn công chuỗi cung ứng thường nhắm vào các thư viện phổ biến (như event-stream, ua-parser) để cài backdoor. Nhưng giờ đây, kẻ tấn công đã phát hiện ra rằng AI Agent là một “kho báu” tập trung: chúng thường được cấp quyền truy cập rộng rãi để hoạt động hiệu quả. Một AI Agent có thể có quyền đọc, ghi vào cơ sở dữ liệu, gọi API thanh toán, và thậm chí ký giao dịch. Nếu chiếm được Agent, bạn có thể làm bất cứ điều gì.
Core: Cơ chế tấn công và tâm lý thị trường
Có hai yếu tố khiến cuộc tấn công này trở nên đặc biệt: kỹ thuật và tâm lý.
Về kỹ thuật: Tệp .pth là một vector cổ điển nhưng ít được chú ý. Hầu hết các công cụ quét SCA (Software Composition Analysis) đều kiểm tra mã nguồn trong các gói, nhưng không kiểm tra tệp cấu hình. Kẻ tấn công đã khai thác điểm mù này. Hơn nữa, chúng chọn thời điểm phát hành vào lúc gần cuối tuần, khi các nhóm DevOps thường ít chú ý hơn. Và việc liên tục phát hành hai phiên bản cho thấy chúng có quy trình tự động hóa, có thể đã chiếm được tài khoản PyPI của maintainer (hoặc thông qua API token bị lộ).
Về tâm lý: Thị trường AI Agent đang bùng nổ. Hàng ngàn startup và dự án crypto lao vào xây dựng các tác nhân tự động. Họ chạy đua về tính năng, nhưng bỏ qua bảo mật. Một gói thư viện được tải về hàng triệu lần mỗi tháng là một “bề mặt tấn công” khổng lồ. Khi đội ngũ bảo trì của LiteLLM chỉ có vài người, họ không thể kiểm tra từng dòng mã trong mỗi bản phát hành. Kẻ tấn công biết điều này. Họ đặt cược vào sự lười biếng và vội vã của cộng đồng.
Contrarian: Góc nhìn phản trực giác – “AI Agent không phải vấn đề, mà là con tin”
Hầu hết các bài viết về sự kiện này đều tập trung vào việc cảnh báo các nhà phát triển AI. Nhưng tôi cho rằng điều thú vị hơn nằm ở chỗ: cuộc tấn công này không phải là về AI, mà là về hạ tầng. Kẻ tấn công không muốn phá hỏng mô hình AI của bạn. Chúng muốn lấy quyền truy cập vào hệ thống của bạn. AI Agent chỉ là một phương tiện – một con tin – để đạt được mục tiêu đó.
Hãy nhìn vào các cuộc tấn công trước đó của Team PCP: Trivy là công cụ quét lỗ hổng container, CanisterWorm là npm worm, Checkmarx KICS là công cụ quét mã nền tảng dưới dạng code. Tất cả đều là công cụ phát triển, không phải AI. Nhưng chúng đều nằm trong chuỗi cung ứng phần mềm. Kẻ tấn công đang xây dựng một “bản đồ tấn công” toàn diện: nếu bạn kiểm soát được các công cụ phát triển, bạn kiểm soát được sản phẩm cuối cùng.
Điểm mù ở đây là: các dự án blockchain, vốn tự hào về tính phi tập trung, lại đang phụ thuộc rất nhiều vào các công cụ tập trung này. Một bot giao dịch DeFi chạy trên một máy chủ cloud sử dụng LiteLLM để gọi LLM phân tích thị trường. Nếu máy chủ đó bị chiếm, bot có thể bị điều khiển để thực hiện các giao dịch bất lợi, hoặc tệ hơn, khóa riêng tư của ví nóng có thể bị lộ. Và điều này đã xảy ra với 2.186 tổ chức – con số chắc chắn còn lớn hơn nhiều vì nhiều vụ chưa được phát hiện.
Takeaway: Câu chuyện tiếp theo – Khi nào thì “cơn sốt AI Agent” trở thành “cơn đại dịch chuỗi cung ứng”?
Sự kiện LiteLLM không phải là cuối cùng. Nó là một dấu hiệu cho thấy các cuộc tấn công chuỗi cung ứng sẽ ngày càng nhắm vào các “middleware” AI – các thư viện kết nối, gateway, agent runtime. Và vì các dự án crypto thường triển khai nhanh, ít kiểm tra bảo mật, chúng sẽ là mục tiêu ưa thích.
Câu hỏi đặt ra: Liệu cộng đồng blockchain có học được bài học từ các cuộc tấn công Web2, hay sẽ lặp lại sai lầm tương tự? Những dự án sử dụng AI Agent cần bắt đầu kiểm tra tính toàn vẹn của từng gói phụ thuộc, sử dụng hash pinning, và triển khai các chính sách zero-trust cho agent. Nếu không, lần tới khi bạn thấy một gói .pth lạ trong requirements.txt, có thể bạn đã trao chìa khóa cho kẻ trộm mà không hề hay biết.
Còn nhớ câu nói của Satoshi: “If you don't believe me or don't get it, I don't have time to try to convince you, sorry.” Có lẽ bây giờ, chúng ta cần một phiên bản khác: “If you don't secure your AI agent supply chain, the attacker will.”