GitHub - karasungur/LLM-Pentest-DevSecOps · GitHub
Skip to content

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

LOP Platform

LLM Pentesting & DevSecOps Otomasyon Platformu

LOP Platform, LLM tabanlı sistemleri prompt güvenliği açısından test etmek için geliştirilmiş FastAPI tabanlı bir dashboard ve otomasyon aracıdır. Platform, hedef modele saldırı payload'ları gönderir, model yanıtlarını analiz eder, bulguları risk seviyelerine ayırır ve PDF/JSON raporlar üretir.

Uygulama adı kod içinde LLM-Guard Automator olarak geçer. Paket metadata'sı lop-platform adıyla tanımlanmıştır.

Neler Sunar?

Alan Açıklama
LLM güvenlik taraması Hedef modele kontrollü prompt güvenlik payload'ları gönderir.
Payload kategorileri Prompt Injection, Jailbreak, Data Leakage, Hallucination, Role Confusion.
Provider desteği Lokal geliştirme için mock, gerçek endpoint'ler için OpenAI Chat Completions uyumlu gemini.
Analiz motoru Judge AI yapılandırılmışsa LLM tabanlı analiz, aksi durumda lokal kural tabanlı analiz.
Dashboard Tarama başlatma, durdurma, ilerleme izleme, sonuç filtreleme ve geçmiş görüntüleme.
Raporlama Analiz tamamlandıktan sonra PDF ve JSON rapor üretimi.
Güvenlik kontrolleri Auth, CSRF, session, egress allowlist, SSRF koruması ve log redaction.

Hızlı Başlangıç

Etkileşimli geliştirme menüsünü açmak için:

./scripts/dev.sh

Bu menüden kurulum, .env yapılandırması, test profilleri, kalite kontrolleri, uygulama başlatma, sağlık kontrolü ve temizlik/sıfırlama işlemleri yönetilebilir.

Komut tabanlı kullanım tercih ediyorsanız projeyi ilk kez hazırlamak için:

./scripts/dev.sh kurulum

Bu komut .venv oluşturur, bağımlılıkları kurar, .env dosyası yoksa güvenli şekilde hazırlar ve gerekli çalışma zamanı dizinlerini oluşturur.

Uygulamayı başlatmak için:

./scripts/dev.sh calistir

Varsayılan adres:

http://127.0.0.1:8000

Çalışan uygulamayı kontrol etmek için:

./scripts/dev.sh saglik

Farklı portta çalıştırmak için:

PORT=8765 ./scripts/dev.sh calistir

Otomasyon Betiği

Geliştirme akışındaki temel işlemler scripts/dev.sh altında toplanmıştır. Betik argümansız çalıştırıldığında etkileşimli menüyü açar. CI, shell betiği veya etkileşimsiz kullanım için mevcut İngilizce komutlar da geriye uyumlu şekilde korunur.

Komut Görev
./scripts/dev.sh Etkileşimli ana menüyü açar.
./scripts/dev.sh menu Etkileşimli ana menüyü açıkça başlatır.
./scripts/dev.sh yardim Kullanılabilir komutları gösterir.
./scripts/dev.sh kurulum Sanal ortam, bağımlılıklar, .env ve çalışma zamanı dizinlerini hazırlar.
./scripts/dev.sh yukle Çalışma zamanı ve geliştirme bağımlılıklarını .venv içine kurar.
./scripts/dev.sh env-hazirla .env yoksa .env.example üzerinden güvenli şekilde oluşturur.
./scripts/dev.sh env-sihirbazi .env dosyasını yedek alarak etkileşimli şekilde oluşturur veya günceller.
./scripts/dev.sh ortam-kontrol Temel ortam yapılandırmasını doğrular.
./scripts/dev.sh test Tüm pytest test takımını çalıştırır.
./scripts/dev.sh test-menusu Birim, entegrasyon, sistem, arayüz, yük veya tek dosya test profili seçtirir.
./scripts/dev.sh kalite ruff format --check, ruff check ve mypy çalıştırır.
./scripts/dev.sh ci Kalite kontrolleri ve test takımını birlikte çalıştırır.
./scripts/dev.sh calistir FastAPI uygulamasını uvicorn ile başlatır.
./scripts/dev.sh saglik /api/health sağlık uç noktasını kontrol eder.
./scripts/dev.sh temizle Python ve araç önbellek dosyalarını temizler.
./scripts/dev.sh uretilenleri-temizle Kapsam çıktılarını temizler.
./scripts/dev.sh sifirla Önbellek, kapsam çıktıları, reports/ ve data/ için onaylı temizlik menüsünü açar.

Etkileşimli menüler TTY gerektirir. Komut tabanlı akışlar CI ve otomasyonlarda kullanılabilir.

Desteklenen ortam değişkeni geçersiz kılmaları:

PYTHON=/usr/bin/python3.12 ./scripts/dev.sh kurulum
VENV_DIR=.venv ./scripts/dev.sh yukle
HOST=0.0.0.0 PORT=8000 ./scripts/dev.sh calistir
BASE_URL=http://127.0.0.1:8000 ./scripts/dev.sh saglik
ADMIN_PASSWORD='guclu-parola' ./scripts/dev.sh env-hazirla

Konfigürasyon

.env.example dosyasını temel alarak .env hazırlanır. kurulum veya env-hazirla komutu .env dosyası yoksa bu işlemi güvenli şekilde yapar. Var olan .env dosyasının üzerine yazılmaz.

Temel değişkenler:

Değişken Açıklama
TARGET_GEMINI_API_KEY Hedef LLM endpoint'i için API anahtarı.
TARGET_GEMINI_BASE_URL OpenAI Chat Completions uyumlu hedef endpoint base URL'i.
TARGET_GEMINI_MODEL Taranacak hedef model adı.
JUDGE_GEMINI_API_KEY Judge AI için API anahtarı. Boşsa target key kullanılabilir.
JUDGE_GEMINI_BASE_URL Judge AI endpoint base URL'i.
JUDGE_GEMINI_MODEL Judge AI model adı.
LOP_DISABLE_JUDGE_AI true yapılırsa Judge AI devre dışı bırakılır.
LOP_ALLOWED_TARGET_HOSTS Gerçek taramalar için ekstra izinli host listesi.
ADMIN_USERNAME Dashboard admin kullanıcı adı.
ADMIN_PASSWORD_HASH Bcrypt ile hash'lenmiş admin parolası.
SECRET_KEY Session ve token imzalama için gizli anahtar.

Lokal geliştirme ve test için mock provider kullanılabilir. Gerçek model taraması için TARGET_GEMINI_* değerlerinin gerçek, yetkili ve erişilebilir bir endpoint'i göstermesi gerekir.

Mimari

flowchart LR
    U[Dashboard Kullanıcısı] --> D[FastAPI Dashboard]
    D --> A[API Katmanı]
    A --> S[Scanner Engine]
    S --> P{Provider}
    P --> M[Mock LLM]
    P --> G[OpenAI-Compatible Gemini Endpoint]
    S --> R[(Raw Results)]
    R --> N[Analyzer Engine]
    N --> J[Judge AI]
    N --> L[Lokal Kurallar]
    N --> O[(Analyzed Results)]
    O --> Q[PDF / JSON Rapor]
    A --> H[(Session History)]
Loading

Ana bileşenler:

Yol Görev
app/ FastAPI uygulaması, API route'ları, auth, CSRF, dashboard template'leri ve statik dosyalar.
scanner/ Payload'ları provider'a gönderen tarama motoru ve progress yönetimi.
analyzer/ Yanıtları Judge AI veya lokal kurallarla değerlendiren analiz katmanı.
payloads/ LLM güvenlik testlerinde kullanılan payload veri seti.
reports/ Runtime tarama sonuçları, analiz çıktıları, PDF raporlar ve coverage çıktıları.
data/ Session ve orchestrator runtime verileri.
tests/ Unit, integration, system, load ve UI testleri.

Kullanım Akışı

  1. Kullanıcı dashboard'a giriş yapar.
  2. Backend oturumu doğrular ve CSRF token üretir.
  3. Kullanıcı provider, model, timeout ve payload limitiyle tarama başlatır.
  4. Scanner payload'ları sırayla hedef provider'a gönderir.
  5. İlerleme SSE üzerinden, gerekirse polling fallback ile izlenir.
  6. Raw yanıtlar kaydedilir.
  7. Analyzer yanıtları Judge AI veya lokal kurallarla değerlendirir.
  8. Sonuçlar dashboard'da görüntülenir.
  9. Analiz tamamlanınca PDF veya JSON rapor alınır.

Test ve Kalite

Tam test suite:

./scripts/dev.sh test

Kalite kontrolleri:

./scripts/dev.sh quality

CI benzeri lokal kontrol:

./scripts/dev.sh ci

Pytest yapılandırması coverage çıktısını şu konumlara üretir:

reports/coverage
reports/coverage.xml

Geliştirici Notları

Doğrudan sanal ortam kullanmak isterseniz:

source .venv/bin/activate
pytest
ruff format --check .
ruff check .
mypy .

Paket metadata'sı pyproject.toml içinde tanımlıdır ve build backend olarak Hatchling kullanılır. Proje Python >=3.10 gerektirir.

Güvenlik ve Yetkili Kullanım

Bu proje yalnızca test etmeye yetkili olduğunuz sistemlerde ve model endpoint'lerinde kullanılmalıdır. LLM güvenlik taramaları hedef sistemin davranışını, maliyetini veya rate limit durumunu etkileyebilir.

Uygulamada güvenlik için şu kontroller bulunur:

  • Bcrypt tabanlı admin parola doğrulaması
  • Server-side session yönetimi
  • CSRF token doğrulaması
  • Egress allowlist ve SSRF koruması
  • Private IP ve loopback hedeflere karşı koruma
  • Hassas verileri loglardan temizleyen redaction katmanı

.env dosyasını ve gerçek API anahtarlarını commit etmeyin. .gitignore zaten .env, runtime data ve generated report dizinlerini dışarıda tutar.

SSS

Bu proje tam olarak ne yapar?

LOP Platform, hedef LLM modeline güvenlik odaklı prompt payload'ları gönderir, model yanıtlarını toplar, bu yanıtları analiz eder ve bulguları raporlar.

Hangi zafiyet kategorileri test edilir?

Payload veri seti beş ana kategoriye ayrılmıştır: Prompt Injection, Jailbreak, Data Leakage, Hallucination ve Role Confusion.

Hangi provider'lar destekleniyor?

İki provider vardır: mock ve gemini. mock lokal geliştirme ve test için kullanılır. gemini adı korunmuştur, ancak endpoint tarafında OpenAI Chat Completions uyumlu API yüzeyi beklenir.

Gerçek Gemini API'si mi kullanılıyor?

Provider adı geriye uyumluluk için gemini olarak kalmıştır. Uygulama, TARGET_GEMINI_BASE_URL üzerinden OpenAI Chat Completions uyumlu endpoint'lere bağlanacak şekilde tasarlanmıştır.

Mock provider ne işe yarar?

Gerçek API anahtarı veya dış endpoint gerektirmeden dashboard, scan lifecycle, raporlama ve test akışlarını denemeyi sağlar.

Judge AI nedir?

Judge AI, hedef modelden gelen yanıtı ayrı bir LLM ile değerlendirerek zafiyet kararı üretir. Yapılandırılmamışsa analiz lokal kurallarla sürdürülebilir.

Judge AI olmadan analiz çalışır mı?

Evet. LOP_DISABLE_JUDGE_AI=true yapılabilir veya Judge yapılandırması boş bırakılabilir. Bu durumda lokal kural tabanlı analiz kullanılır.

Gerçek tarama için hangi ayarlar gerekli?

En azından TARGET_GEMINI_API_KEY, TARGET_GEMINI_BASE_URL ve TARGET_GEMINI_MODEL gerçek değerlerle doldurulmalıdır. Taranacak hedefin yetkili ve izinli olduğundan emin olunmalıdır.

Raporlar nereye yazılır?

Tarama çıktıları ve üretilen raporlar reports/ altında tutulur. Session ve runtime verileri data/ altında saklanır.

Testleri nasıl çalıştırırım?

Önerilen yol:

./scripts/dev.sh test

Kalite kontrolleriyle birlikte çalıştırmak için:

./scripts/dev.sh ci

Uygulama neden yetkili hedefleri zorunlu tutuyor?

LLM güvenlik payload'ları hedef sistemde beklenmeyen yanıtlar, maliyet artışı, rate limit tüketimi veya politika ihlali üretebilir. Bu nedenle yalnızca açık izin verilen sistemlerde kullanılmalıdır.

.env neden commit edilmemeli?

.env içinde API anahtarları, admin parola hash'i ve gizli anahtarlar bulunur. Bu değerler sızarsa dashboard veya hedef LLM endpoint'leri kötüye kullanılabilir.

Alpha seviyesi ne anlama geliyor?

pyproject.toml içinde proje Development Status :: 3 - Alpha olarak işaretlenmiştir. Temel özellikler ve testler mevcuttur, ancak API yüzeyi, konfigürasyon seçenekleri ve kullanıcı deneyimi ilerleyen sürümlerde değişebilir.

Lisans ve Durum

Paket metadata'sında lisans MIT, sürüm 0.1.0 olarak tanımlıdır. Proje alpha seviyesindedir ve aktif geliştirme için tasarlanmıştır.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors