Lỗ hổng nghiêm trọng trong SDK x402 cho phép API độc hại rút cạn ví của AI agent
Các nhà nghiên cứu bảo mật đã phát hiện ba lỗ hổng nghiêm trọng trong các SDK x402, cho phép các API độc hại rút cạn số dư token của AI agent hoặc bỏ qua hoàn toàn việc thanh toán.
Được dịch tự động từ bản gốc tiếng Anh.
Các AI agent sử dụng tiêu chuẩn x402 cho các khoản thanh toán vi mô tự động phải đối mặt với rủi ro nghiêm trọng là bị các API độc hại rút cạn toàn bộ số dư token. Công ty bảo mật V12 công bố vào ngày 22 tháng 10 rằng các client mặc định trong các bộ phát triển phần mềm (SDK) x402 thiếu giới hạn chi tiêu, cho phép các máy chủ thù địch yêu cầu và nhận toàn bộ tiền từ ví.
Tổ chức x402 Foundation, đơn vị duy trì các công cụ mã nguồn mở này, đã phát hành bản vá cho những lỗ hổng nghiêm trọng vào ngày 18 tháng 8, nhưng các bản cập nhật không được đánh dấu là bản vá bảo mật trong các thông báo công khai. Điều này khiến nhiều nhà phát triển không hay biết về mối nguy hiểm bất chấp khả năng gây ra tổn thất tài chính đáng kể trong các quy trình làm việc dựa trên agent.
Chuyện gì đã xảy ra
V12 đã xác định 25 lỗi trong mã nguồn x402, trong đó ba lỗi được xếp hạng nghiêm trọng. Lỗ hổng nguy hiểm nhất tồn tại trong logic client mặc định trên các SDK TypeScript, Python và Go. Khi một máy chủ API phản hồi với trạng thái HTTP 402 Payment Required (Yêu cầu thanh toán), nó có thể liệt kê các phương thức thanh toán với số tiền tùy ý. Client mặc định sẽ tự động chọn phương thức đầu tiên và ký một giao dịch thanh toán cho số tiền đó mà không kiểm tra xem nó có vượt quá giới hạn hợp lý nào hay không.
Một kẻ tấn công có thể khai thác điều này bằng cách trước tiên thực hiện một yêu cầu nhỏ, hợp lệ để khám phá địa chỉ ví của agent. Sau đó, chúng có thể tra cứu số dư ví trên blockchain và soạn thảo một phản hồi 402 tiếp theo yêu cầu đúng số tiền đó. Nếu ứng dụng của agent chưa thiết lập các chính sách thanh toán cụ thể, SDK sẽ ký giao dịch, cho phép kẻ tấn công gửi nó và rút cạn tiền. Rủi ro này chỉ giới hạn ở các agent được cấu hình để tự động ký thanh toán mà không cần sự can thiệp của con người.
Hai lỗ hổng nghiêm trọng còn lại ảnh hưởng đến các phần cụ thể của hệ sinh thái. Một lỗ hổng trong facilitator TypeScript dành cho Solana cho phép "bỏ qua hoàn toàn thanh toán". Facilitator, thành phần xác minh thanh toán trước khi chúng đến blockchain, đã không phân biệt được giữa chuyển token và phê duyệt token. Kẻ tấn công có thể gửi một lệnh phê duyệt token, vốn không di chuyển tiền nhưng cấp quyền chi tiêu, và facilitator sẽ chấp nhận nó như một thanh toán hợp lệ. Người bán sẽ cung cấp tài nguyên, nhưng không có token nào được trao đổi, trong khi facilitator trả phí giao dịch.
Lỗi thứ ba liên quan đến tiện ích mở rộng Sign-In-With-X (SIWx). Các client sẽ ký tin nhắn đăng nhập cho các trang web dựa trên Ethereum mà không xác minh rằng tên trang web trong tin nhắn khớp với trang web mà họ đang liên hệ. Một máy chủ độc hại có thể chuyển tiếp tin nhắn đăng nhập từ một trang web khác, đáng tin cậy, lừa agent ký vào nó. Kẻ tấn công sau đó có thể sử dụng chữ ký này để đăng nhập vào trang web đáng tin cậy dưới danh nghĩa agent, giành quyền truy cập trái phép.
Cách hoạt động
Tiêu chuẩn x402 cho phép thanh toán giữa máy với máy bằng cách nhúng các hướng dẫn thanh toán trực tiếp vào các yêu cầu HTTP. Khi một máy chủ yêu cầu thanh toán, nó trả về mã trạng thái 402 cùng với danh sách các phương thức thanh toán, mỗi phương thức chỉ định số tiền, loại token và người nhận. Client chọn một phương thức, ký một bằng chứng mật mã cho thanh toán và thử lại yêu cầu. Quy trình này được thiết kế để liền mạch cho các AI agent cần tự động thanh toán cho các cuộc gọi API.
Lỗ hổng nảy sinh vì triển khai client mặc định ưu tiên sự tiện lợi hơn là an toàn. Nó tự động chọn phương thức thanh toán đầu tiên do máy chủ đưa ra và, trước bản cập nhật ngày 18 tháng 8, không áp đặt giới hạn chi tiêu tối đa. Mô hình tin cậy này giả định rằng các nhà cung cấp API luôn yêu cầu số tiền công bằng, một giả định thất bại khi đối phó với các tác nhân độc hại. Bản sửa lỗi giới thiệu mức trần mặc định $1 cho mỗi giao dịch và hạn chế thanh toán chỉ cho các stablecoin được công nhận như USDC, trừ khi nhà phát triển cấu hình rõ ràng các quy tắc khác.
Đối với vấn đề của facilitator Solana, nguyên nhân là do thiếu xác minh chặt chẽ các lệnh. Chuyển token và phê duyệt token là các cấu trúc dữ liệu tương tự nhau trên blockchain Solana, chỉ khác nhau ở byte lệnh ban đầu. Facilitator TypeScript kiểm tra xem giao dịch có gọi một chương trình token hợp lệ hay không nhưng không xác minh loại lệnh cụ thể. Bằng cách thêm kiểm tra loại lệnh, SDK cập nhật đảm bảo rằng chỉ các giao dịch chuyển khoản thực tế mới được chấp nhận làm thanh toán, ngăn chặn kẻ tấn công sử dụng các phê duyệt rỗng để lừa hệ thống.
Chi tiết chính
- V12 phát hiện 25 lỗi trong mã x402, với ba lỗi được xếp hạng nghiêm trọng và được mô tả chi tiết trong báo cáo của họ.
- Các client x402 mặc định cho TypeScript, Python và Go không có giới hạn chi tiêu trước các bản phát hành ngày 18 tháng 8.
- Một lỗi đặc thù cho Solana trong facilitator TypeScript cho phép các phê duyệt token được chấp nhận làm thanh toán hợp lệ, bỏ qua việc chuyển tiền thực tế.
- Tiện ích mở rộng SIWx cho phép các agent ký tin nhắn đăng nhập cho các trang web mà họ không truy cập hiện tại, tạo điều kiện cho việc chiếm quyền kiểm soát tài khoản.
- Các bản sửa lỗi được phát hành vào ngày 18 tháng 8, nhưng không có thông báo bảo mật công khai nào được đưa ra, và các kho lưu trữ gói như npm và PyPI không đánh dấu các phiên bản cũ là dễ bị tổn thương.
- Tính đến ngày 23 tháng 10, các phiên bản an toàn mới nhất là 2.28.0 cho các gói TypeScript/Go và 2.25.0 cho Python.
Tại sao điều này quan trọng
Đối với các nhà phát triển xây dựng AI agent tương tác với các API trả phí, sự cố này nhấn mạnh rủi ro của việc tự động hóa các giao dịch tài chính mà không có biện pháp bảo vệ nghiêm ngặt. Các quy trình làm việc dựa trên agent thường hoạt động với tính tự chủ cao, nghĩa là một cuộc gọi API không được kiểm soát duy nhất có thể dẫn đến tổn thất tài chính ngay lập tức. Việc thiếu các thông báo bảo mật rõ ràng có nghĩa là các nhóm phụ thuộc vào các trình quét lỗ hổng tiêu chuẩn như npm audit có thể vẫn không nhận thức được rủi ro, khiến các hệ thống sản xuất của họ bị lộ dù các bản vá đã có sẵn.
Điều này cũng nhấn mạnh tầm quan trọng của việc xác minh các đầu vào bên ngoài trong các hệ thống thanh toán phi tập trung. Khi tiền di chuyển theo chương trình, mã nguồn phải coi mọi yêu cầu thanh toán đều có khả năng thù địch. Các lỗ hổng x402 minh họa cách những khác biệt tinh tế trong các lệnh blockchain hoặc thiếu kiểm tra tên miền trong luồng đăng nhập có thể dẫn đến xâm phạm toàn bộ hệ thống. Các nhóm hiện nay phải kiểm toán cấu hình agent của họ để đảm bảo họ không sử dụng các SDK lỗi thời hoặc tắt các kiểm soát chi tiêu thiết yếu.
Bạn có thể làm gì
- Nâng cấp tất cả các gói x402 lên phiên bản mới nhất: 2.28.0 cho TypeScript và Go, và 2.25.0 cho Python.
- Xác minh rằng ứng dụng của bạn không đặt
spendControls: false, điều này sẽ vô hiệu hóa mức trần $1 mặc định mới và các hạn chế stablecoin. - Nếu bạn không thể nâng cấp ngay lập tức, hãy đăng ký một chính sách thanh toán bằng cách sử dụng
registerPolicy(TypeScript/Go) hoặcregister_policy(Python) để thực thi số tiền tối đa cho mỗi giao dịch. - Đối với các facilitator Solana, hãy đảm bảo bạn đang sử dụng
@x402/svmphiên bản 2.23.0 trở lên để ngăn chặn việc bỏ qua thanh toán thông qua phê duyệt token. - Cập nhật
@x402/extensionslên phiên bản 2.23.0 trở lên để thực thi khớp tên miền cho các chữ ký đăng nhập SIWx. - Kiểm toán các quyền ví của agent và cân nhắc sử dụng các ví chuyên dụng với số dư hạn chế cho các tương tác API tự động.



