🤖HermesBlog
Nền tảng Nhắn tin Hermes · Parte 378/14/2026

Cơ chế bảo mật A2A: Hệ thống kiểm soát ra vào cho sự tin cậy giữa các tác tử AI

Hermes nền tảng nhắn tin bài 37: Bốn lớp phòng thủ bảo mật của A2A và bản vá thực chiến từ cộng đồng.

Để hai AI “gọi điện” cho nhau, điều đáng sợ nhất là gì? Không phải chúng trò chuyện không dứt, mà là kẻ lạ mặt giả danh người quen gõ cửa.

A2A -security

Nguyên tắc thiết kế bảo mật: Khóa cửa trước, mở cửa sau

Hãy tưởng tượng bạn chuyển đến một căn nhà mới, việc đầu tiên không phải là treo rèm cửa, mà là thay ổ khóa. Các nhà thiết kế giao thức A2A cũng nghĩ như vậy — an toàn mặc định, mọi sự nới lỏng đều phải thao tác tường minh. Cơ chế này giống như một hệ thống kiểm soát ra vào hoàn chỉnh: ổ khóa (token), thẻ ra vào (khóa đối tác), mắt mèo (nhận dạng danh tính), camera giám sát (nhật ký kiểm toán). Trong nền tảng nhắn tin Hermes, tính năng A2A được cung cấp dưới dạng plugin, nhưng các giá trị bảo mật mặc định không bao giờ thỏa hiệp: khi chưa cấu hình token, chỉ lắng nghe trên 127.0.0.1 — giống như ổ khóa đã khóa, chìa khóa chỉ nằm trong tay mình.

Chi tiết bốn lớp phòng thủ

Lớp thứ nhất: Ràng buộc localhost + token (ổ khóa)

Mặc định, A2A chỉ lắng nghe trên localhost, bên ngoài không thể chạm tới cửa. Để cung cấp dịch vụ ra bên ngoài, phải đồng thời thỏa mãn hai điều kiện: đặt địa chỉ A2A_HOST và cấu hình bearer token. Điều này giống như bạn không chỉ mở cửa sổ, mà còn phải đặt một chậu xương rồng đầy gai trên bậu cửa — thiếu một trong hai đều không được.

Lớp thứ hai: Khóa riêng cho từng đối tác (thẻ ra vào)

Mỗi đối tác có token riêng, cấu hình qua A2A_PEER_TOKENS="alice:tok1,bob:tok2". Đây không phải là một chìa khóa vạn năng mở mọi cửa, mà mỗi khách có một thẻ ra vào riêng biệt. Danh tính xác thực thúc đẩy giới hạn tốc độ, danh sách tin cậy và kiểm toán — ai quẹt thẻ, quẹt bao nhiêu lần, quẹt lúc nào, tất cả đều được ghi lại.

Lớp thứ ba: Lọc đầu vào + che dữ liệu nhạy cảm (cổng an ninh)

Văn bản đầu vào sẽ bị lọc, được đánh dấu là “đầu vào từ đối tác không tin cậy”, đối tác từ xa không thể gọi các lệnh slash của operator. Điều này giống như kiểm tra an ninh sân bay, chất lỏng trong hành lý phải được lấy ra kiểm tra riêng. Trong phản hồi gửi đi, các chuỗi có hình dạng thông tin xác thực (API key, JWT, token) sẽ tự động bị xóa — giống như thư gửi đi sẽ tự động bôi đen số CMND của người nhận.

Lớp thứ tư: Nhật ký kiểm toán + chống lặp vô hạn (camera giám sát)

Mỗi lần trao đổi đều được ghi thêm vào ~/.hermes/a2a_audit.jsonl, tương đương với việc trước cửa có camera giám sát 24/7. Giới hạn số vòng lặp chống lặp vô hạn giống như hệ thống liên lạc nội bộ ở cửa nhà hàng xóm — nếu hai AI trò chuyện không dứt, hệ thống sẽ tự động ngắt.

Câu chuyện tấn công thực tế: 3 vấn đề được cộng đồng phát hiện và sửa chữa

Câu chuyện 1: Vượt qua SSRF (#78298) — Dùng “mật mã số” lừa ổ khóa

Có kẻ tấn công phát hiện ra rằng, kiểm tra bảo mật của callback URL dùng khớp tiền tố chuỗi để kiểm tra hostname, ví dụ kiểm tra xem có bắt đầu bằng 127. hay không. Nhưng địa chỉ IP có cách “đánh vần số nguyên” — 2130706433 chính là cách viết khác của 127.0.0.1. Điều này giống như viết số nhà bằng mã Morse, bảo vệ không nhận ra nên cho qua. Cách khắc phục: trước tiên phân giải callback host thành IP chuẩn rồi mới đánh giá, tương đương với việc bảo vệ nhận bất kỳ dạng địa chỉ nào cũng dịch thành số nhà chuẩn rồi mới so sánh.

Câu chuyện 2: Sụp đổ danh tính qua reverse proxy (#80534/#80779) — Mọi người đều biến thành cùng một người

Khi triển khai sau nginx hoặc K8s, plugin A2A suy ra danh tính người gọi từ địa chỉ socket. Nhưng proxy server đứng ở giữa, tất cả đối tác đều hiển thị cùng một IP — địa chỉ của proxy. Điều này giống như trạm bảo vệ của chung cư, tất cả khách đều đăng ký là “bảo vệ ký hộ”. Giới hạn tốc độ dùng chung một bucket (một người bận kéo theo tất cả), danh sách trắng tin cậy chỉ có thể điền địa chỉ proxy, kiểm toán không thấy được người gọi thực sự. Khắc phục: suy ra danh tính thực từ X-Forwarded-For, nhưng phải đảm bảo chỉ tin tưởng khi “đứng sau proxy đáng tin cậy”.

Câu chuyện 3: Điểm mù kiểm toán (#81003/#81042) — Tiếng gõ cửa bị từ chối không được ghi lại

Nhật ký kiểm toán chỉ ghi lại lưu lượng được chấp nhận. Các yêu cầu 401 (token không hợp lệ) và 403 (không được tin cậy) không tạo ra bản ghi. Điều này giống như camera giám sát chỉ quay những người vào cửa thuận lợi, còn cảnh kẻ trộm cạy khóa thì lại không ghi lại. Tấn công nhồi thông tin xác thực, dò quét token đã thu hồi, nỗ lực di chuyển ngang — những hành vi tấn công này chính xác là thứ kiểm toán cần nắm bắt nhất. Khắc phục: tất cả các lần từ chối xác thực cũng được ghi thêm vào nhật ký kiểm toán append-only, kèm trường decision + mã trạng thái HTTP + IP người gọi.

Điều này có ý nghĩa gì với người dùng

Logic cốt lõi của cơ chế này là: bảo mật không phải là khắc phục sau sự cố, mà là trạng thái mặc định. Là người dùng Hermes, bạn không cần trở thành chuyên gia bảo mật vẫn có được bảo vệ cơ bản — bốn lớp phòng thủ tự động hoạt động. Quan trọng hơn, cộng đồng liên tục củng cố qua các cuộc tấn công thực tế: từ vượt qua SSRF đến sụp đổ danh tính qua reverse proxy, rồi đến điểm mù kiểm toán, mỗi vấn đề đều tương ứng với một tình huống thực tế. Giao thức A2A giống như một tòa thành không ngừng được gia cố, mỗi viên gạch đều qua thử thách thực chiến. Lần tới khi hai tác tử của bạn “gọi điện” cho nhau, giữa chúng không chỉ có ổ khóa, thẻ ra vào, cổng an ninh và camera giám sát, mà còn có một nhóm lính canh chăm chú theo dõi nhật ký.

📖 Tài liệu chính thức

この記事は Hermes Agent のTài liệu chính thứcに基づいています:Tài liệu chính thức › user-guide/messaging/a2a