Langsung ke konten utama

Ringkasan

Claude Code menampilkan sandboxing asli untuk menyediakan lingkungan yang lebih aman untuk eksekusi agen sambil mengurangi kebutuhan akan prompt izin yang konstan. Alih-alih meminta izin untuk setiap perintah bash, sandboxing menciptakan batas yang ditentukan di awal di mana Claude Code dapat bekerja lebih bebas dengan risiko yang berkurang. Alat bash bersandbox menggunakan primitif tingkat OS untuk memberlakukan isolasi filesystem dan jaringan.

Mengapa sandboxing penting

Keamanan berbasis izin tradisional memerlukan persetujuan pengguna yang konstan untuk perintah bash. Meskipun ini memberikan kontrol, hal ini dapat menyebabkan:
  • Kelelahan persetujuan: Terus-menerus mengklik “setujui” dapat menyebabkan pengguna membayar perhatian lebih sedikit pada apa yang mereka setujui
  • Produktivitas berkurang: Gangguan konstan memperlambat alur kerja pengembangan
  • Otonomi terbatas: Claude Code tidak dapat bekerja seefisien mungkin saat menunggu persetujuan
Sandboxing mengatasi tantangan ini dengan:
  1. Mendefinisikan batas yang jelas: Tentukan dengan tepat direktori dan host jaringan mana yang dapat diakses Claude Code
  2. Mengurangi prompt izin: Perintah aman dalam sandbox tidak memerlukan persetujuan
  3. Mempertahankan keamanan: Upaya untuk mengakses sumber daya di luar sandbox memicu notifikasi segera
  4. Memungkinkan otonomi: Claude Code dapat berjalan lebih independen dalam batas yang ditentukan
Sandboxing yang efektif memerlukan baik isolasi filesystem maupun jaringan. Tanpa isolasi jaringan, agen yang dikompromikan dapat mengeksfiltrasikan file sensitif seperti kunci SSH. Tanpa isolasi filesystem, agen yang dikompromikan dapat memasang pintu belakang pada sumber daya sistem untuk mendapatkan akses jaringan. Saat mengonfigurasi sandboxing, penting untuk memastikan bahwa pengaturan yang dikonfigurasi tidak menciptakan bypass dalam sistem ini.

Cara kerjanya

Isolasi filesystem

Alat bash bersandbox membatasi akses sistem file ke direktori tertentu:
  • Perilaku penulisan default: Akses baca dan tulis ke direktori kerja saat ini dan subdirektorinya
  • Perilaku baca default: Akses baca ke seluruh komputer, kecuali direktori tertentu yang ditolak
  • Akses terblokir: Tidak dapat memodifikasi file di luar direktori kerja saat ini tanpa izin eksplisit
  • Dapat dikonfigurasi: Tentukan jalur yang diizinkan dan ditolak khusus melalui pengaturan

Isolasi jaringan

Akses jaringan dikendalikan melalui server proxy yang berjalan di luar sandbox:
  • Pembatasan domain: Hanya domain yang disetujui yang dapat diakses
  • Konfirmasi pengguna: Permintaan domain baru memicu prompt izin
  • Dukungan proxy khusus: Pengguna tingkat lanjut dapat menerapkan aturan khusus pada lalu lintas keluar
  • Cakupan komprehensif: Pembatasan berlaku untuk semua skrip, program, dan subproses yang dihasilkan oleh perintah

Penegakan tingkat OS

Alat bash bersandbox memanfaatkan primitif keamanan sistem operasi:
  • Linux: Menggunakan bubblewrap untuk isolasi
  • macOS: Menggunakan Seatbelt untuk penegakan sandbox
Pembatasan tingkat OS ini memastikan bahwa semua proses anak yang dihasilkan oleh perintah Claude Code mewarisi batas keamanan yang sama.

Memulai

Aktifkan sandboxing

Anda dapat mengaktifkan sandboxing dengan menjalankan perintah slash /sandbox:
> /sandbox
Ini mengaktifkan alat bash bersandbox dengan pengaturan default, memungkinkan akses ke direktori kerja saat ini sambil memblokir akses ke lokasi sistem yang sensitif.

Konfigurasi sandboxing

Sesuaikan perilaku sandbox melalui file settings.json Anda. Lihat Settings untuk referensi konfigurasi lengkap.
Tidak semua perintah kompatibel dengan sandboxing di luar kotak. Beberapa catatan yang mungkin membantu Anda memanfaatkan sandbox sebaik-baiknya:
  • Banyak alat CLI memerlukan akses ke host tertentu. Saat Anda menggunakan alat ini, mereka akan meminta izin untuk mengakses host tertentu. Memberikan izin akan memungkinkan mereka mengakses host ini sekarang dan di masa depan, memungkinkan mereka untuk dieksekusi dengan aman di dalam sandbox.
  • watchman tidak kompatibel dengan berjalan di sandbox. Jika Anda menjalankan jest, pertimbangkan menggunakan jest --no-watchman
  • docker tidak kompatibel dengan berjalan di sandbox. Pertimbangkan menentukan docker dalam excludedCommands untuk memaksanya berjalan di luar sandbox.
Claude Code mencakup mekanisme escape hatch yang disengaja yang memungkinkan perintah berjalan di luar sandbox saat diperlukan. Ketika perintah gagal karena pembatasan sandbox (seperti masalah konektivitas jaringan atau alat yang tidak kompatibel), Claude diminta untuk menganalisis kegagalan dan dapat mencoba kembali perintah dengan parameter dangerouslyDisableSandbox. Perintah yang menggunakan parameter ini melalui alur izin Claude Code normal yang memerlukan izin pengguna untuk dieksekusi. Ini memungkinkan Claude Code menangani kasus tepi di mana alat tertentu atau operasi jaringan tidak dapat berfungsi dalam batasan sandbox.Anda dapat menonaktifkan escape hatch ini dengan mengatur "allowUnsandboxedCommands": false dalam pengaturan sandbox Anda. Saat dinonaktifkan, parameter dangerouslyDisableSandbox sepenuhnya diabaikan dan semua perintah harus berjalan bersandbox atau secara eksplisit terdaftar dalam excludedCommands.

Manfaat keamanan

Perlindungan terhadap prompt injection

Bahkan jika penyerang berhasil memanipulasi perilaku Claude Code melalui prompt injection, sandbox memastikan sistem Anda tetap aman: Perlindungan filesystem:
  • Tidak dapat memodifikasi file konfigurasi kritis seperti ~/.bashrc
  • Tidak dapat memodifikasi file tingkat sistem di /bin/
  • Tidak dapat membaca file yang ditolak dalam pengaturan izin Claude Anda
Perlindungan jaringan:
  • Tidak dapat mengeksfiltrasikan data ke server yang dikendalikan penyerang
  • Tidak dapat mengunduh skrip berbahaya dari domain yang tidak sah
  • Tidak dapat melakukan panggilan API yang tidak terduga ke layanan yang tidak disetujui
  • Tidak dapat menghubungi domain apa pun yang tidak secara eksplisit diizinkan
Pemantauan dan kontrol:
  • Semua upaya akses di luar sandbox diblokir di tingkat OS
  • Anda menerima notifikasi segera ketika batas diuji
  • Anda dapat memilih untuk menolak, mengizinkan sekali, atau secara permanen memperbarui konfigurasi Anda

Permukaan serangan yang berkurang

Sandboxing membatasi potensi kerusakan dari:
  • Dependensi berbahaya: Paket NPM atau dependensi lain dengan kode berbahaya
  • Skrip yang dikompromikan: Skrip build atau alat dengan kerentanan keamanan
  • Rekayasa sosial: Serangan yang menipu pengguna untuk menjalankan perintah berbahaya
  • Prompt injection: Serangan yang menipu Claude untuk menjalankan perintah berbahaya

Operasi transparan

Ketika Claude Code mencoba mengakses sumber daya jaringan di luar sandbox:
  1. Operasi diblokir di tingkat OS
  2. Anda menerima notifikasi segera
  3. Anda dapat memilih untuk:
    • Menolak permintaan
    • Mengizinkan sekali
    • Memperbarui konfigurasi sandbox Anda untuk secara permanen mengizinkannya

Keterbatasan Keamanan

  • Keterbatasan Network Sandboxing: Sistem penyaringan jaringan beroperasi dengan membatasi domain yang diizinkan untuk terhubung oleh proses. Sistem ini tidak melakukan inspeksi lain terhadap lalu lintas yang melewati proxy dan pengguna bertanggung jawab untuk memastikan mereka hanya mengizinkan domain terpercaya dalam kebijakan mereka.
Pengguna harus menyadari potensi risiko yang berasal dari mengizinkan domain luas seperti github.com yang mungkin memungkinkan eksfiltrasi data. Juga, dalam beberapa kasus mungkin dapat melewati penyaringan jaringan melalui domain fronting.
  • Privilege Escalation melalui Unix Sockets: Konfigurasi allowUnixSockets dapat secara tidak sengaja memberikan akses ke layanan sistem yang kuat yang dapat menyebabkan bypass sandbox. Misalnya, jika digunakan untuk memungkinkan akses ke /var/run/docker.sock ini akan secara efektif memberikan akses ke sistem host melalui eksploitasi soket docker. Pengguna didorong untuk mempertimbangkan dengan hati-hati soket unix apa pun yang mereka izinkan melalui sandbox.
  • Privilege Escalation Izin Filesystem: Izin penulisan filesystem yang terlalu luas dapat memungkinkan serangan privilege escalation. Mengizinkan penulisan ke direktori yang berisi executable dalam $PATH, direktori konfigurasi sistem, atau file konfigurasi shell pengguna (.bashrc, .zshrc) dapat menyebabkan eksekusi kode dalam konteks keamanan yang berbeda ketika pengguna lain atau proses sistem mengakses file ini.
  • Kekuatan Sandbox Linux: Implementasi Linux menyediakan isolasi filesystem dan jaringan yang kuat tetapi mencakup mode enableWeakerNestedSandbox yang memungkinkannya bekerja di dalam lingkungan Docker tanpa namespace yang diprioritaskan. Opsi ini secara konsiderabel melemahkan keamanan dan hanya boleh digunakan dalam kasus di mana isolasi tambahan ditegakkan.

Penggunaan lanjutan

Konfigurasi proxy khusus

Untuk organisasi yang memerlukan keamanan jaringan tingkat lanjut, Anda dapat menerapkan proxy khusus untuk:
  • Mendekripsi dan menginspeksi lalu lintas HTTPS
  • Menerapkan aturan penyaringan khusus
  • Mencatat semua permintaan jaringan
  • Mengintegrasikan dengan infrastruktur keamanan yang ada
{
  "sandbox": {
    "network": {
      "httpProxyPort": 8080,
      "socksProxyPort": 8081
    }
  }
}

Integrasi dengan alat keamanan yang ada

Alat bash bersandbox bekerja bersama dengan:

Praktik terbaik

  1. Mulai ketat: Mulai dengan izin minimal dan perluas sesuai kebutuhan
  2. Pantau log: Tinjau upaya pelanggaran sandbox untuk memahami kebutuhan Claude Code
  3. Gunakan konfigurasi khusus lingkungan: Aturan sandbox berbeda untuk konteks pengembangan vs. produksi
  4. Gabungkan dengan izin: Gunakan sandboxing bersama dengan kebijakan IAM untuk keamanan komprehensif
  5. Konfigurasi uji: Verifikasi pengaturan sandbox Anda tidak memblokir alur kerja yang sah

Sumber terbuka

Runtime sandbox tersedia sebagai paket npm sumber terbuka untuk digunakan dalam proyek agen Anda sendiri. Ini memungkinkan komunitas agen AI yang lebih luas untuk membangun sistem otonom yang lebih aman dan lebih aman. Ini juga dapat digunakan untuk sandbox program lain yang mungkin ingin Anda jalankan. Misalnya, untuk sandbox server MCP Anda dapat menjalankan:
npx @anthropic-ai/sandbox-runtime <command-to-sandbox>
Untuk detail implementasi dan kode sumber, kunjungi repositori GitHub.

Keterbatasan

  • Overhead kinerja: Minimal, tetapi beberapa operasi filesystem mungkin sedikit lebih lambat
  • Kompatibilitas: Beberapa alat yang memerlukan pola akses sistem tertentu mungkin memerlukan penyesuaian konfigurasi, atau bahkan mungkin perlu dijalankan di luar sandbox
  • Dukungan platform: Saat ini mendukung Linux dan macOS; dukungan Windows direncanakan

Lihat juga

  • Security - Fitur keamanan komprehensif dan praktik terbaik
  • IAM - Konfigurasi izin dan kontrol akses
  • Settings - Referensi konfigurasi lengkap
  • CLI reference - Opsi baris perintah termasuk -sb