Bash script'lerdeki güvenlik açıklarını, gizli bilgi sızıntılarını ve potansiyel tehlikeli komut kullanımlarını tespit etmek amacıyla geliştirilmiş, yüksek performanslı ve güvenilir bir statik analiz aracı. BashLeaks, tree-sitter tabanlı güçlü syntax analizi ve akıllı regex pattern'leri kullanarak bash scriptlerin derinlemesine güvenlik analizini sağlar.
- Bash Script Parsing: Tree-sitter tabanlı gelişmiş Bash syntax ağacı çıkarma ve script içi yapısal analiz.
- Riskli Komut Tespiti:
eval
,curl
,wget
,sudo
,rm -rf
gibi tehlikeli ve kötüye kullanılmaya açık komutların algılanması. - Gizli Değişken ve Parametre Kontrolü: Parola, token, API key gibi gizli bilgilerin doğrudan script içinde hardcoded kullanımını tespit eder.
- Input Validasyon Eksikliği: Kullanıcı girdilerinin doğrudan shell komutlarına iletilmesi (command injection riski) durumlarını tespit eder.
- Dosya ve Ağ Erişimleri: Kritik dosya sistemlerine erişim ve network işlemleri analiz edilerek potansiyel veri sızıntıları belirler.
- Dosya Sistemi İzleme: Script tarafından oluşturulan, okunan veya değiştirilen dosyaların gerçek zamanlı takibi.
- Süreç ve Sistem Çağrısı İzleme: Script'in çalıştırdığı alt süreçlerin davranış analizi.
- Log Analizi: Sistem logları ve uygulama loglarından anormal aktivitelerin tespiti.
- JSON Raporlama: Detaylı analiz sonuçları, bulgular, uyarılar ve risk dereceleri JSON formatında.
- HTML Raporlama: Okunabilir, renk kodlu ve kategorize edilmiş analiz sonuçları ile interaktif HTML raporlar.
- CLI & API Kullanımı: Hem komut satırından hem de programatik olarak kullanılabilir.
- Risk Seviyesi Skorlaması: Tespit edilen her risk için CVSS benzeri bir skor hesaplayarak önceliklendirme.
- Otomatik Düzeltme Önerileri: Güvenlik açıkları için kod örnekleri ve iyileştirme tavsiyeleri.
- Modüler Tasarım: Yeni analiz modülleri kolayca eklenebilir, genişletilebilir yapı.
- Ekip İşbirliği Desteği: Raporların paylaşımı ve ekip içi inceleme için JSON tabanlı veri değişimi.
- Rust 1.50 veya üzeri
- Cargo
- Tree-sitter ve tree-sitter-bash bağımlılıkları
cargo install bashleaks
# Depoyu klonlayın
git clone https://github.com/username/bashleaks.git
# Proje dizinine girin
cd bashleaks
# Bağımlılıkları indirin ve kurun
cargo build --release
# Çalıştırılabilir dosyayı path'e ekleyin
sudo cp target/release/bashleaks /usr/local/bin/
Tek bir bash scriptini analiz etmek için:
bashleaks analyze script.sh
Bir dizindeki tüm bash scriptlerini analiz etmek için:
bashleaks analyze --recursive /path/to/scripts/
CLI çıktısı (varsayılan):
bashleaks analyze script.sh
JSON formatında rapor oluşturmak için:
bashleaks analyze script.sh --output json --output-file report.json
HTML formatında rapor oluşturmak için:
bashleaks analyze script.sh --output html --output-file report.html
Sadece belirli risk seviyesindeki veya üstündeki bulguları görmek için:
bashleaks analyze script.sh --risk-level high
Bir scripti çalışma zamanında izlemek için:
bashleaks monitor script.sh
BashLeaks, bash scriptlerini analiz ederken iki ana yaklaşım kullanır:
-
Syntax Analizi: Tree-sitter kütüphanesi ile scriptlerin syntax ağacını çıkarır ve bu yapıyı kullanarak komutları, değişkenleri ve kontrol yapılarını belirler.
-
Pattern Eşleştirme: Önceden tanımlanmış güvenlik açığı kalıplarını (regex tabanlı) kullanarak potansiyel riskleri tespit eder.
+-------------+ +----------------+ +---------------+
| Bash Script | --> | Syntax Parsing | --> | AST Traversal |
+-------------+ +----------------+ +---------------+
|
+------------+ +----------------+ +-------v-------+
| Report Gen | <-- | Risk Analysis | <-- | Pattern Match |
+------------+ +----------------+ +---------------+
BashLeaks, ihtiyaçlarınıza göre özelleştirilebilir. Konfigürasyon dosyası (.bashleaksrc
) oluşturarak veya ortam değişkenleri kullanarak aracı özelleştirebilirsiniz.
[general]
default_output = "cli"
log_level = "info"
[rules]
ignore_rules = ["RULE001", "RULE002"]
custom_rules_path = "/path/to/custom/rules"
[output]
json_indent = 2
html_template = "/path/to/custom/template.html"
# Geliştirme bağımlılıklarını yükleme
cargo install --path .
# Tüm testleri çalıştırma
cargo test
# Belirli bir test çalıştırma
cargo test test_name
# API dokümantasyonu oluşturma
cargo doc --open
Katkılarınızı bekliyoruz! Aşağıdaki adımları izleyerek projeye katkıda bulunabilirsiniz:
- Bu depoyu forklayın
- Özellik dalı oluşturun (
git checkout -b yeni-ozellik
) - Değişikliklerinizi commit edin (
git commit -am 'Yeni özellik: X özelliği eklendi'
) - Dalınızı push edin (
git push origin yeni-ozellik
) - Pull Request oluşturun
Katkıda bulunmadan önce lütfen Katkıda Bulunma Rehberi dosyasını okuyun.
- Daha kapsamlı test senaryoları ekleme
- Docker desteği
- CI/CD entegrasyonu
- Çoklu dil desteği (İngilizce, Türkçe, vb.)
- Daha detaylı HTML rapor şablonu
- Güvenlik kuralları veritabanının genişletilmesi
Bu proje MIT lisansı altında lisanslanmıştır. Daha fazla bilgi için LICENSE dosyasına bakın.
- Tree-sitter ekibine, harika syntax analiz kütüphanesi için
- Rust topluluğuna, mükemmel belgelendirme ve desteklerinden dolayı
Developed with ❤️ by BashLeaks Team