Mekanisme Keamanan A2A: Sistem Gerbang untuk Saling Percaya antar Agen
Hermes platform pesan bagian ke-37: Empat lapis pertahanan keamanan A2A dan perbaikan praktis dari komunitas.
Saat dua AI saling “menelepon”, apa yang paling ditakutkan? Bukan mereka ngobrol tanpa henti, tapi orang asing menyamar sebagai kenalan yang mengetuk pintu.
Prinsip Desain Keamanan: Kunci Dulu, Baru Buka Pintu
Bayangkan kamu pindah ke rumah baru, hal pertama yang kamu lakukan bukan memasang gorden, tapi mengganti kunci pintu. Para perancang protokol A2A juga berpikir demikian—aman secara default, setiap pelonggaran harus dilakukan secara eksplisit. Mekanisme ini seperti sistem gerbang yang lengkap: kunci pintu (token), kartu akses (kunci rekan), lubang intip (identifikasi identitas), kamera pengawas (log audit). Di platform pesan Hermes, fitur A2A disediakan sebagai plugin, tapi nilai default keamanan tidak pernah dikompromikan: tanpa konfigurasi token, hanya mendengarkan di localhost 127.0.0.1—seperti pintu sudah terkunci, dan kuncinya hanya ada di tanganmu sendiri.
Penjelasan Empat Lapis Pertahanan
Lapis Pertama: Binding Lokal + Token (Kunci Pintu)
Secara default, A2A hanya mendengarkan di mesin lokal, dunia luar sama sekali tidak bisa menyentuh pintu. Untuk menyediakan layanan ke luar, dua kondisi harus dipenuhi sekaligus: atur alamat ekspos A2A_HOST, dan konfigurasikan bearer token. Ini seperti kamu bukan hanya harus membuka jendela, tapi juga meletakkan pot kaktus berduri di ambang jendela—keduanya wajib ada.
Lapis Kedua: Kunci Independen per Rekan (Kartu Akses)
Setiap rekan memiliki token eksklusifnya sendiri, dikonfigurasi melalui A2A_PEER_TOKENS="alice:tok1,bob:tok2". Ini bukan seperti satu kunci universal untuk membuka semua pintu, melainkan setiap pengunjung punya kartu akses sendiri. Identitas autentikasi mendorong rate limiting, daftar tepercaya, dan audit—siapa yang menggesek kartu, berapa kali, kapan, semuanya tercatat.
Lapis Ketiga: Filter Injeksi + Desensitisasi (Pintu Keamanan)
Teks masuk akan difilter, ditandai sebagai “input rekan yang tidak tepercaya”, dan rekan jarak jauh tidak bisa memanggil perintah slash operator. Ini seperti pemeriksaan keamanan bandara, cairan di dalam koper harus dikeluarkan untuk diperiksa terpisah. Pada respons keluar, string berbentuk kredensial (API key, JWT, token) akan otomatis dihapus—seperti surat yang dikirim otomatis menghapus nomor KTP penerima.
Lapis Keempat: Log Audit + Anti-Loop (Kamera Pengawas)
Setiap pertukaran ditambahkan ke ~/.hermes/a2a_audit.jsonl, seperti memasang CCTV 24 jam di depan pintu. Batas putaran anti-loop seperti interkom bel tetangga—jika dua AI ngobrol tanpa henti, sistem akan otomatis memutus.
Kisah Serangan Nyata: 3 Masalah yang Ditemukan dan Diperbaiki Komunitas
Kisah Satu: Bypass SSRF (#78298)—Menipu Kunci Pintu dengan “Sandi Angka”
Seorang penyerang menemukan bahwa pemeriksaan keamanan URL callback menggunakan pencocokan prefiks string untuk hostname, misalnya memeriksa apakah diawali dengan 127.. Tapi alamat IP punya cara penulisan “ejaan integer”—2130706433 adalah cara lain menulis 127.0.0.1. Ini seperti menulis nomor rumah dalam kode Morse, satpam tidak mengenalinya dan membiarkannya masuk. Perbaikan: parse dulu host callback menjadi IP standar baru dinilai, seperti satpam yang menerima alamat dalam bentuk apa pun, selalu menerjemahkannya ke nomor rumah standar baru membandingkan.
Kisah Dua: Keruntuhan Identitas Reverse Proxy (#80534/#80779)—Semua Orang Menjadi Orang yang Sama
Saat di-deploy di belakang nginx atau K8s, plugin A2A menyimpulkan identitas pemanggil dari alamat socket. Tapi server proxy menghalangi di tengah, semua rekan tampil sebagai IP yang sama—alamat proxy. Ini seperti pos satpam di gedung apartemen, semua pengunjung terdaftar sebagai “ditandatangani oleh pos satpam”. Rate limiting berbagi satu bucket (satu yang sibuk menghambat semua), daftar putih tepercaya hanya bisa diisi alamat proxy, audit tidak bisa melihat pemanggil sebenarnya. Perbaikan: simpulkan identitas asli dari X-Forwarded-For, tapi pastikan hanya dipercaya jika “berada di belakang proxy tepercaya”.
Kisah Tiga: Titik Buta Audit (#81003/#81042)—Ketukan Pintu yang Ditolak Tidak Tercatat
Log audit hanya mencatat lalu lintas yang diterima. Permintaan 401 (token tidak valid) dan 403 (tidak tepercaya) tidak menghasilkan catatan. Ini seperti kamera pengawas hanya merekam orang yang berhasil masuk, adegan pencuri membobol kunci malah tidak terekam. Serangan credential stuffing, probing token yang dicabut, percobaan lateral movement—perilaku serangan inilah yang paling dibutuhkan audit untuk ditangkap. Perbaikan: semua penolakan autentikasi juga ditambahkan ke log audit append-only, dengan field decision + kode status HTTP + IP pemanggil.
Artinya bagi Pengguna
Logika inti mekanisme ini adalah: keamanan bukan perbaikan setelah kejadian, tapi status default. Sebagai pengguna Hermes, kamu tidak perlu menjadi ahli keamanan untuk mendapatkan perlindungan dasar—empat lapis pertahanan aktif secara otomatis. Lebih penting lagi, komunitas terus memperkuat dari serangan nyata: dari bypass SSRF hingga keruntuhan identitas reverse proxy, hingga titik buta audit, setiap masalah berhubungan dengan skenario nyata. Protokol A2A seperti kastil yang terus diperkuat, setiap batu bata telah teruji oleh pertempuran nyata. Lain kali dua agenmu saling “menelepon”, di antara mereka bukan hanya ada kunci pintu, kartu akses, pintu keamanan, dan kamera pengawas, tapi juga sekelompok penjaga yang mengawasi log.
📖 Dokumentasi resmi
この記事は Hermes Agent のDokumentasi resmiに基づいています:Dokumentasi resmi › user-guide/messaging/a2a