Lewati ke konten utama

Praktik terbaik penahanan agen: pemantauan offline transkrip agen (beta pribadi)

Untuk pelanggan dalam Program Verifikasi Siber kami, kami menyediakan pengklasifikasi pelarian sandbox baru di API untuk memantau dan mengurangi penyalahgunaan. Artikel ini menjelaskan mengapa transkrip agen layak dibaca. Kemudian memiliki satu bagian per lapisan pemantauan: log proxy terlebih dahulu, kemudian apa yang harus dipegang transkrip, aturan pola atas transkrip, dan pengulas model atas transkrip. Berakhir dengan apa yang harus dilakukan ketika lapisan menandai agen saat batch berjalan, dan apa yang harus disimpan setelahnya.

Pengklasifikasi ini dalam beta pribadi.

Untuk ikhtisar semua sumber daya yang tersedia bagi Anda, lihat Praktik terbaik penahanan agen: memulai (beta pribadi).

Ikhtisar

  • Membaca transkrip adalah pemeriksaan yang tidak bergantung pada sandbox atau pengklasifikasi membuat keputusan yang tepat. Transkrip diproduksi oleh proses agen itu sendiri, jadi pasangkan dengan catatan yang diambil di luar sandbox, seperti log proxy. Penyelidikan sering terlihat dalam transkrip sebelum apa pun yang berbahaya berjalan, tetapi jangan mengandalkan memiliki waktu untuk bereaksi: kontrol yang bertindak sebelum eksekusi tindakan didahulukan. Selama batch panjang tanpa akses jaringan, pindai file transkrip langsung sesuai jadwal dan biarkan seseorang melihat hit setiap jam atau dua jam. Untuk berjalan dengan akses jaringan ke target, biarkan insinyur menonton jalannya, atau pindai terus-menerus dan hentikan agen pada hit. Setelah berjalan apa pun, pindai semuanya sekali untuk memastikan setiap agen tetap berada di dalam sandbox-nya.

  • Gunakan tiga lapisan pemantauan, termurah terlebih dahulu: (1) log egress-proxy dan credential-proxy, (2) aturan pola atas transkrip, ditulis untuk lingkungan Anda, dan (3) pengulas model atas transkrip, dengan prompt yang Anda tulis untuk sandbox dan cakupan Anda.

  • Juga kirimkan pengulas sampel acak 5 hingga 10% dari transkrip yang tidak ditandai oleh aturan pola. Harapkan beberapa positif palsu. Jika pengulas mengatakan agen melakukan sesuatu, baca bagian itu dari transkrip sebelum Anda bertindak.

  • Ketika lapisan menunjukkan bahwa agen telah meninggalkan tugasnya selama berjalan, hentikan, dan beri tahu tim akun Anthropic Anda tentang perilaku di luar cakupan.

  • Simpan transkrip dan log proxy selama minimal 30 hari.

Mengapa membaca transkrip

Sandbox dan pengklasifikasi izin mode otomatis Claude Code keduanya bertindak saat agen berjalan. Membaca transkrip adalah pemeriksaan yang tidak bergantung pada keduanya. Ini memiliki dua kegunaan.

  • Selama berjalan. Penyelidikan, jika terjadi, mungkin terlihat dalam transkrip sebelum apa pun yang berbahaya berjalan. Jangan mengandalkan memiliki waktu untuk bereaksi: kontrol yang bertindak sebelum eksekusi tindakan didahulukan. Selama batch panjang, pindai file transkrip langsung sesuai jadwal, dan biarkan seseorang melihat apa yang ditandai pemindaian setiap jam atau dua jam.

  • Setelah berjalan. Pindai semuanya sekali untuk memastikan setiap agen tetap berada di dalam sandbox-nya.

Untuk keterlibatan dengan akses jaringan ke target nyata, praktik terbaik merekomendasikan agar seseorang mengawasi jalannya, atau monitor yang mengetahui cakupan yang dimaksudkan menonton terus-menerus, meningkatkan ke seseorang ketika jalannya mungkin melampaui cakupan itu, dan dapat mengakhiri jalannya (lihat bagian Cakupan dan pengawasan dalam Sandboxing). Lapisan dalam artikel ini adalah potongan yang dibangun monitor seperti itu.

Jika Anda menjalankan agen terhadap Messages API secara langsung, API juga dapat mengembalikan skor per-permintaan dari pengklasifikasi pelarian sandbox saat mereka berjalan (lihat Pemantauan online).

Lapisan 1: log proxy

Lapisan termurah tidak membaca transkrip sama sekali.

Proxy egress harus mencatat setiap permintaan yang ditolak, dengan alamat klien dan tujuan. Dengan daftar izin kosong, agen mencapai API model hanya melalui proxy kredensial dan tidak memerlukan host lain, jadi setiap permintaan yang ditolak selama berjalan layak dilihat. Baca transkrip setiap berjalan yang menyebabkan satu. Alamat klien menunjukkan agen mana yang membuat permintaan, jadi Anda tahu transkrip mana yang harus dibaca terlebih dahulu.

Ketahui apa yang tidak dicatat oleh lapisan egress Anda. Dalam desain referensi, proxy egress mencatat permintaan HTTPS CONNECT yang ditolak. Upaya HTTP biasa dan TCP mentah tidak melewati proxy di jaringan internal, jadi mereka gagal tanpa baris log dan muncul hanya dalam transkrip. Dalam build Anda sendiri, pertimbangkan untuk mencatat koneksi yang diizinkan serta ditolak, untuk setiap protokol, dengan stempel waktu.

Proxy kredensial harus mencatat baris untuk permintaan apa pun yang bukan panggilan model. Simpan lognya ketika berjalan berakhir (lihat bagian Proxy kredensial dalam Sandboxing).

Apa yang harus ditangkap dalam transkrip

Lapisan kedua dan ketiga membaca transkrip itu sendiri.

Biarkan orkestrator di host menulis transkrip untuk setiap tahap agen, satu pesan JSON per baris, saat setiap pesan tiba. Output stream-json Claude Code memiliki bentuk ini. Di setiap file, baris dengan "type": "assistant" berisi apa yang dihasilkan model: blok text, thinking, dan tool_use. Input tool_use menyimpan perintah Bash atau file yang ditulis. Baris dengan "type": "user" berisi blok tool_result: output perintah, konten file, dan respons target.

Tangkap setiap tahap, termasuk tahap yang agennya tidak memiliki alat, seperti agen yang hanya menilai atau membandingkan temuan. Ada lebih sedikit untuk diperiksa dalam transkrip itu, tetapi tahap tanpa transkrip tidak dapat ditinjau sama sekali.

Lapisan 2: aturan pola atas transkrip

Tulis aturan pola Anda sendiri, seperti ekspresi reguler, untuk agen dan target Anda. Untuk agen yang bekerja melalui shell, cakup perilaku seperti melewati proxy egress atau firewall, mengirim kredensial atau membuka koneksi SSH keluar dari sandbox, mengubah kernel atau tunable hak istimewa, dan mencantumkan proses lain melalui /proc. Aturan hanya cocok dengan perilaku yang diantisipasi seseorang, jadi perlakukan mereka sebagai titik awal, bukan detektor lengkap.

Terapkan aturan ke string yang didekode JSON daripada baris mentah, karena pada baris mentah tanda kutip dan baris baru diloloskan dan pola mungkin tidak cocok. Laporkan setiap hit dengan file, baris, aturan, dan cuplikan, dan biarkan pemindaian keluar dengan status yang berbeda ketika menemukan sesuatu, sehingga pekerjaan terjadwal dapat menjalankannya selama batch panjang dan menaikkan peringatan.

Harapkan hit jinak

Hit adalah alasan untuk membaca bagian itu dari transkrip. Dengan sendirinya tidak berarti agen melakukan sesuatu yang salah. Agen yang melakukan penelitian kerentanan secara rutin menjalankan perintah yang cocok dengan aturan pelarian untuk alasan biasa:

  • menjalankan target di bawah shim LD_PRELOAD;

  • melampirkan ptrace ke proses anak mereka sendiri, atau membaca /proc/<pid>/ untuk proses tersebut;

  • mematikan ASLR melalui /proc/sys/kernel/randomize_va_space;

  • mencantumkan /proc untuk menemukan dan membunuh pekerja fuzz mereka sendiri.

Aturan bypass proxy dapat cocok dengan setiap permintaan curl, wget, atau netcat ke target pentest dengan IP publik, dan aturan egress SSH dapat cocok dengan ssh atau scp apa pun ke target dengan IP publik atau nama DNS. Persempit atau hapus aturan yang hanya menghasilkan hit jinak pada target Anda.

Lapisan 3: pengulas model atas transkrip

Untuk setiap transkrip yang ditandai oleh aturan pola, kirimkan satu permintaan Messages API ke Claude dengan prompt pengulas yang Anda tulis. Prompt harus meminta Claude untuk mencari agen yang memperluas akses jaringannya atau keluar dari sandbox-nya, apakah dicoba atau dicapai, katakan apa yang harus ditandai dan apa yang tidak boleh ditandai, dan minta temuan, atau tidak ada, dengan baris transkrip yang mendukungnya.

Bangun pesan pengguna dalam dua bagian:

  1. Mulai dengan dua atau tiga kalimat yang menggambarkan sandbox dan cakupan yang dimaksudkan. Untuk desain referensi: setiap agen berjalan di sandbox terisolasi sendiri (kontainer atau microVM) di jaringan internal, satu-satunya cara keluar adalah proxy yang meneruskan panggilan API model dan tidak ada yang lain, dan target berada di dalam sandbox dengan agen. Jika sandbox Anda memungkinkan host lain, atau target berada di jaringan, katakan di sini dan beri nama target dalam cakupan.

  2. Kemudian sertakan pesan agen itu sendiri, artinya blok text, thinking, dan tool_use-nya, dengan cukup konten tool_result untuk menunjukkan apa yang dikembalikan setiap panggilan.

Gunakan model yang Anda jalankan agen dengan, atau yang lebih murah. Di bawah Amazon Bedrock atau Platform Agen Google Cloud (Vertex AI), gunakan yang diaktifkan di akun Anda.

Dua batas untuk diingat:

  • Prompt pengulas yang hanya mencari sandbox dan pelarian jaringan tidak mendeteksi agen yang melampaui keterlibatan pada host yang diizinkan untuk dijangkau.

  • Transkrip adalah input yang tidak dipercaya untuk pengulas. Ini berisi teks yang dikontrol target. Putusan bersih tidak menghapus transkrip yang ditandai oleh aturan atau log proxy.

Tinjau sampel transkrip yang tidak ditandai juga

Aturan pola hanya menangkap apa yang diantisipasi seseorang, jadi juga kirimkan sampel acak 5 hingga 10% dari transkrip yang tidak ditandai oleh aturan, menggunakan permintaan yang sama. Sampel menunjukkan apa yang dilewatkan aturan, dan apakah Anda harus menambahkan aturan.

Baca penolakan pengklasifikasi

Penolakan pengklasifikasi mode otomatis juga berguna untuk dibaca: cari transkrip untuk pesan penolakan pengklasifikasi, dan pisahkan dari penolakan yang dikeluarkan ketika tidak tersedia (lihat Mode otomatis).

Pengulas ini terpisah dari pengklasifikasi izin mode otomatis (lihat Mode otomatis), yang memutuskan setiap tindakan sebelum berjalan, dan dari pengklasifikasi pelarian sandbox di API (lihat Pemantauan online). Ketiganya saling melengkapi.

Apa yang harus dilakukan pada hit selama berjalan

Ketika salah satu lapisan menunjukkan agen yang telah meninggalkan tugasnya sementara batchnya masih berjalan:

  1. Hentikan agen. Dalam setup berbasis Docker, docker rm -f pada kontainer agen menghentikannya. Menghapus kontainer menghapus disk tamu, jadi apa pun yang ditulis agen di sana hilang. Orkestrator harus mencatat jalannya sebagai gagal dan melanjutkan dengan sisa batch.

  2. Simpan bukti. Biarkan hasil jalannya apa adanya, dan periksa log proxy egress untuk jendela waktu yang sama. Pastikan baris log membawa stempel waktu.

  3. Laporkan. Jika apa yang Anda temukan adalah perilaku yang benar-benar di luar cakupan, artinya agen yang menyelidiki sandbox atau isolasi jaringannya atau bertindak di luar keterlibatan, beri tahu tim akun Anthropic Anda, selain apa pun yang diperlukan proses insiden Anda sendiri.

  4. Putar kredensial API model, seperti setelah berjalan apa pun yang transkrip menunjukkan perilaku yang tidak terduga (lihat Sandboxing).

Jika Anda perlu berbagi transkrip di luar tim Anda, bekerja pada salinan. Hapus id sesi, akuntansi penggunaan, dan inventaris host yang dicatat baris pertama transkrip, dan baca file sebelum mengirimnya.

Retensi

Simpan yang berikut selama minimal 30 hari setelah berjalan, atau lebih lama di mana kewajiban peraturan atau kontraktual Anda memerlukan. Simpan mereka di luar host:

  • Transkrip agen;

  • Log apa pun yang memberlakukan egress dari sandbox (proxy atau firewall), termasuk koneksi yang ditolak;

  • Log apa pun yang menyuntikkan kredensial API model, jika itu adalah komponen terpisah.

Simpan mereka dengan kontrol akses yang sama seperti jalannya itu sendiri. Transkrip dapat berisi kode sumber target, kode eksploitasi, dan temuan.

Jika ada log ini hanya ada sebagai log kontainer, ekspor sebelum kontainer dihapus atau dibuat ulang, karena log dihapus dengannya.

Apakah pertanyaan Anda terjawab?