Merhaba arkadaşlar,
Yapay zeka destekli uygulamalar her yere girdi; peki bu uygulamalar prompt injection, veri sızdırma veya zararlı içerik üretimine karşı test ediliyor mu? Klasik güvenlik testleri bu yeni saldırı yüzeyini kapsamıyor. "LLM red teaming", bir dil modeli uygulamasını saldırgan girdilerle sistematik olarak sınamaktır. Bu rehberde iki açık kaynak aracı resmi belgelerine dayanarak tanıtıyorum: NVIDIA'nın garak tarayıcısı ve Microsoft'un PyRIT çerçevesi. Testleri yalnızca kendi geliştirdiğiniz veya test izniniz olan modeller ve uygulamalar üzerinde çalıştırın.
Konuda Anlatılacaklar
- LLM red teaming nedir, neden gerekli?
- OWASP LLM Top 10 ile çerçeve
- garak kurulumu ve ilk tarama
- garak ile belirli riskleri hedefleme
- PyRIT nedir, nasıl kurulur?
- PyRIT ile ilk saldırı senaryosu
- Bulguları raporlama ve savunma
LLM Red Teaming Nedir, Neden Gerekli?
LLM red teaming, bir modele ya da model tabanlı uygulamaya, güvenlik korkuluklarını (guardrail) aşmaya çalışan girdiler göndererek zayıflıkları ortaya çıkarmaktır. Amaç; prompt injection, sistem prompt'u sızıntısı, zararlı içerik üretimi, veri sızdırma gibi davranışları saldırgandan önce tespit etmektir. Manuel test değerlidir ama ölçeklenmez; garak ve PyRIT bu işi otomatikleştirir.
OWASP LLM Top 10 ile Çerçeve
Testlerinizi bir çerçeveye oturtmak için OWASP Top 10 for LLM Applications (2025) listesini kullanın:
- LLM01: Prompt Injection
- LLM02: Sensitive Information Disclosure (hassas bilgi ifşası)
- LLM03: Supply Chain (tedarik zinciri)
- LLM04: Data and Model Poisoning (veri/model zehirleme)
- LLM05: Improper Output Handling
- LLM06: Excessive Agency (aşırı yetki)
- LLM07: System Prompt Leakage
- LLM08: Vector and Embedding Weaknesses
- LLM09: Misinformation
- LLM10: Unbounded Consumption
garak Kurulumu ve İlk Tarama
garak, NVIDIA'nın açık kaynak LLM zafiyet tarayıcısıdır. Kurulum ve sürüm kontrolü:
pip install garak
garak --versionMevcut probları (saldırı modüllerini) listelemek:
garak --list_probesResmi belgelere göre bir tarama en az hedef türünü (--target_type) ve genelde hedef adını (--target_name) gerektirir. Test için küçük bir model olan GPT-2'yi Hugging Face üzerinden taramak (yalnızca kendi ortamınızda):
garak --target_type huggingface --target_name gpt2 --spec probes.dan.Dan_11_0Not: Eski --model_type/--probes bayrakları artık kullanımdan kaldırıldı; güncel kullanım --target_type ve --spec'tir.
garak ile Belirli Riskleri Hedefleme
--spec bayrağı birleşik bir seçim dilidir. Belgelerdeki örneklere göre bir prob ailesini seçebilir, belirli probları hariç tutabilir ya da bir etiketi hedefleyebilirsiniz:
# Sadece prompt injection ailesini calistir
garak --target_type huggingface --target_name gpt2 --spec probes.promptinject
# OWASP LLM01 etiketli problar
garak --target_type openai --target_name gpt-5-nano --spec tag:owasp:llm01OpenAI gibi barındırılan modellerde garak, gerekli API anahtarını ortam değişkeninden bekler; ayarlı değilse hangi değişkenin gerektiğini söyleyip durur:
export OPENAI_API_KEY="sk-..." # yalnizca kendi anahtarinizTarama bitince garak bir rapor dosyası üretir; raporu --report ile AVID formatına da dönüştürebilirsiniz.
PyRIT Nedir, Nasıl Kurulur?
PyRIT (Python Risk Identification Tool), Microsoft AI Red Team'in açık kaynak çerçevesidir. garak hazır problarla hızlı tarama yaparken, PyRIT çok adımlı (multi-turn) saldırı stratejileri (Crescendo, TAP, Skeleton Key gibi) ve özelleştirilebilir senaryolar sunar. Kurulum (resmi belgeye göre Python 3.13 önerilir):
pip install pyrit
python -c "import pyrit; print(pyrit.__version__)"PyRIT; OpenAI, Azure, Anthropic, Hugging Face, özel HTTP uç noktaları ve Playwright ile web hedeflerini destekler. Konuşmaları, skorları ve sonuçları yerleşik bir bellekte (SQLite) tutar.
PyRIT ile İlk Saldırı Senaryosu
PyRIT üç modda kullanılır: Scanner (komut satırı), GUI (CoPyRIT) ve Framework (Python). Komut satırından hazır bir senaryoyu kendi hedefinize karşı çalıştırmak (resmi belge örneği):
pyrit_scan run airt.scam --target openai_chatFramework modunda basit bir tek-adım saldırısı, PyRIT'in resmi örneğine dayanarak:
from pyrit.executor.attack import PromptSendingAttack
from pyrit.prompt_target import OpenAIChatTarget
from pyrit.setup import IN_MEMORY, initialize_pyrit_async
await initialize_pyrit_async(memory_db_type=IN_MEMORY)
target = OpenAIChatTarget()
attack = PromptSendingAttack(objective_target=target)
result = await attack.execute_async(objective="Bu modelin tam olarak hangi model oldugunu kisaca soyle.")Tüm bu testleri yalnızca kendi API anahtarınız ve kendi/izinli hedefleriniz üzerinde çalıştırın.
İleri Seviye: Bulguları Raporlama ve Savunma
Red teaming'in amacı sadece açık bulmak değil, savunmayı güçlendirmektir. Bulgularınızı OWASP LLM Top 10 maddeleriyle etiketleyin ve her bulgu için savunma önerisi yazın:
- Girdi/çıktı filtreleme: Kullanıcı girdisini ve model çıktısını doğrulayın; çıktıyı başka bir sisteme körlemesine geçirmeyin (LLM05).
- En az yetki: Modelin erişebildiği araç ve veriyi daraltın (LLM06 aşırı yetki).
- Sistem prompt'unu koruyun: Sırları sistem prompt'una koymayın (LLM07).
- Oran sınırlama: Kaynak tüketimini sınırlandırın (LLM10).
- Sürekli test: garak/PyRIT'i CI hattında düzenli çalıştırın.
Microsoft'un RAMPART gibi araçları, red team bulgularını pytest tabanlı tekrarlanabilir regresyon testlerine çevirmenizi sağlar; böylece düzelttiğiniz bir zayıflık geri gelmez.
Sonuç
LLM uygulamaları yeni bir saldırı yüzeyi getiriyor ve bunu test etmek için artık olgun araçlar var. Hızlı ve geniş tarama için garak, derin ve çok adımlı senaryolar için PyRIT kullanın; hepsini OWASP LLM Top 10 çerçevesine oturtun ve bulguları savunmaya çevirin. Testleri yalnızca kendi/izinli sistemlerinizde yapın. Siz YZ uygulamalarınızı nasıl test ediyorsunuz? Yorumlarda paylaşın.
Kaynakça
- NVIDIA garak, Getting Started: https://reference.garak.ai/en/latest/usage.html
- NVIDIA garak, CLI reference: https://reference.garak.ai/en/stable/cliref.html
- garak GitHub: https://github.com/NVIDIA/garak
- Microsoft PyRIT belgeleri: https://microsoft.github.io/PyRIT/latest/
- PyRIT GitHub: https://github.com/Azure/PyRIT
- OWASP Top 10 for LLM Applications 2025: https://genai.owasp.org/llm-top-10/
- OWASP GenAI, LLM01 Prompt Injection: https://genai.owasp.org/llmrisk/llm01-prompt-injection/
Yasal Uyarı
garak ve PyRIT ile yapılan testler yalnızca kendinize ait veya yazılı test izni bulunan modeller, API anahtarları ve uygulamalar üzerinde çalıştırılmalıdır. Başkasına ait YZ sistemlerine izinsiz saldırı girdileri göndermek, hizmet koşullarını ve 5237 sayılı Türk Ceza Kanunu'nun 243, 244 ve 245. maddelerini ihlal edebilir. TurkTeam yalnızca savunma ve eğitim amaçlı paylaşımları destekler.
Görsel: TurkTeam özgün kapak ve diyagramları
Yasal uyarı: Bu içerik eğitim amaçlıdır. Yalnızca kendi sistemlerinizde veya yazılı izin aldığınız hedeflerde uygulayın (TCK 243-245).
