https://github.com/teskilatsiz/mergelock
Rust tabanlı, yerel çalışan kod güvenliği tarayıcısı. Güvenlik açıklarını, gizli anahtarları ve riskli kod kalıplarını tespit eder.
https://github.com/teskilatsiz/mergelock
local-first mergelock rust secrets-detection security security-tools vscode-extension
Last synced: about 1 month ago
JSON representation
Rust tabanlı, yerel çalışan kod güvenliği tarayıcısı. Güvenlik açıklarını, gizli anahtarları ve riskli kod kalıplarını tespit eder.
- Host: GitHub
- URL: https://github.com/teskilatsiz/mergelock
- Owner: teskilatsiz
- License: mit
- Created: 2026-05-23T18:05:00.000Z (about 2 months ago)
- Default Branch: main
- Last Pushed: 2026-05-23T18:30:35.000Z (about 2 months ago)
- Last Synced: 2026-05-23T20:18:58.570Z (about 2 months ago)
- Topics: local-first, mergelock, rust, secrets-detection, security, security-tools, vscode-extension
- Language: Rust
- Homepage: https://mergelock.netlify.app/
- Size: 80.1 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Yerel öncelikli kod güvenlik tarayıcısı
Kaynak kodunuzu buluta göndermeden, VS Code içinde veya terminal üzerinden
güvenlik açıklarını tespit edin ve güvenli düzeltmeler uygulayın.
Genel Bakış •
Özellikler •
Başlangıç •
VS Code •
CLI •
Git Koruması •
Kurallar
---
## 📋 Genel Bakış
MergeLock, geliştiriciler için tasarlanmış **yerel öncelikli** bir kod güvenlik tarayıcısıdır. Kodunuz makinenizden çıkmaz — bulut bağlantısı gerekmez, veri paylaşımı yoktur.
Varsayılan yaklaşım basittir: kaynak kodu yerelde tut, çalışırken otomatik tara, riskli değişiklikler Git'e ulaşmadan uyar ve her yama önerisini incelenebilir kıl.
**Çalışma döngüsü:**
```
Tara → İncele → Düzelt → Devam et
```
---
## ✨ Öne Çıkan Özellikler
| Özellik | Açıklama |
|---------|----------|
| 🏠 **Yerel Çalışma** | Kodunuz makinenizden çıkmaz. Bulut bağlantısı gerekmez. |
| 🔍 **Otomatik Tarama** | VS Code açılışında ve dosya kaydında otomatik tarama |
| 🖥️ **VS Code Entegrasyonu** | Diagnostik paneli, bildirimler, kenar çubuğu, güvenlik inceleme ekranı, hızlı düzeltmeler |
| ⌨️ **Güçlü CLI** | Metin, JSON ve SARIF formatlarında çıktı |
| 🩹 **Güvenli Düzeltme** | Deterministik tek satır yamalar — uygulama öncesi satır eşleşmesi doğrulanır |
| 🔐 **Gizli Bilgi Tespiti** | AWS, GitHub, Google API, Slack, Stripe, npm tokenları ve daha fazlası |
| 🔗 **Git Kancaları** | Commit, merge ve push öncesi otomatik tarama |
| 📊 **SARIF Desteği** | GitHub Code Scanning uyumlu SARIF 2.1.0 çıktısı |
| 📋 **Temel Çizgi Yönetimi** | Mevcut bulguları kabul edip yalnızca yeni bulgulara odaklanma |
| 🌐 **Geniş Dil Desteği** | JS, TS, Python, Go, Java, C#, Ruby, Rust, C/C++, PHP, SQL, Docker, Terraform |
| 🌍 **Çift Dil Arayüz** | VS Code eklentisi Türkçe ve İngilizce arayüz desteği sunar |
---
## 🚀 Hızlı Başlangıç
### Gereksinimler
- [Rust araç zinciri](https://rustup.rs/) (1.80+)
- [Node.js](https://nodejs.org/) (eklenti geliştirmesi için)
- [VS Code](https://code.visualstudio.com/) (eklenti kullanımı için)
### 1. Projeyi Klonlayın
```bash
git clone https://github.com/teskilatsiz/mergelock.git
cd mergelock
```
### 2. Derleyin
```bash
cargo build -p mergelock-cli -p mergelock-lsp
```
Bu komut iki çalıştırılabilir dosya oluşturur:
```
target/debug/mergelock ← CLI tarayıcı
target/debug/mergelock-lsp ← VS Code LSP sunucusu
```
### 3. İlk Taramanızı Yapın
```bash
target/debug/mergelock scan --format text .
```
> 💡 Tarama sonucu `0 bulgu` dönüyorsa ama `--no-policy` ile bulgu çıkıyorsa, `.mergelock-policy.json` temel çizgisi mevcut bulguları gizliyordur. Bu beklenen bir davranıştır.
---
## 🖥️ VS Code Kullanımı
### Geliştirme Modunda Çalıştırma
```bash
cd mergelock
code .
```
**F5** tuşuna basın. VS Code otomatik olarak Rust binary'lerini derler ve izole bir Extension Development Host penceresi açar.
Açılan pencerede:
1. Taramak istediğiniz klasörü açın
2. Çalışma alanına güvenin (VS Code sorarsa)
3. MergeLock otomatik olarak başlar — açılışta workspace tarar, dosya kaydedince dosya tarar
4. Bulgular **Problems** panelinde, **MergeLock kenar çubuğunda** ve **durum çubuğunda** görünür
### Kullanılabilir Komutlar
| Komut | Açıklama |
|-------|----------|
| `MergeLock: Scan Current File` | Açık dosyayı tara |
| `MergeLock: Scan Changed Files` | Git'te değişen dosyaları tara |
| `MergeLock: Scan Workspace` | Tüm çalışma alanını tara |
| `MergeLock: Show Security Review` | Güvenlik inceleme panelini aç |
| `MergeLock: Apply Safe Patch` | Seçili güvenli yamayı uygula |
| `MergeLock: Apply All Safe Patches` | Tüm güvenli yamaları onayla ve uygula |
| `MergeLock: Install Git Hooks` | Git kancalarını kur |
| `MergeLock: Export SARIF` | SARIF 2.1.0 raporu dışa aktar |
| `MergeLock: Create/Refresh Baseline` | Temel çizgi oluştur veya yenile |
| `MergeLock: Show Suppressed Findings` | Bastırılmış bulguları görüntüle |
| `MergeLock: Clear Baseline` | Temel çizgiyi temizle ve yeniden tara |
### VSIX Olarak Kurulum
```bash
cd extensions/vscode
npx @vscode/vsce package --target linux-x64
code --install-extension mergelock-teskilatsiz-linux-x64-0.1.2.vsix
```
### VS Code Ayarları
| Ayar | Varsayılan | Açıklama |
|------|:----------:|----------|
| `mergelock.scanOnStartup` | `true` | Açılışta otomatik tarama |
| `mergelock.scanOnSave` | `true` | Dosya kaydında otomatik tarama |
| `mergelock.scanDebounceMs` | `750` | Otomatik tarama gecikme süresi (ms) |
| `mergelock.showNotifications` | `true` | Bildirim göster |
| `mergelock.offerGitHooks` | `true` | Git kancası kurulumu öner |
| `mergelock.localOnly` | `true` | Yalnızca yerel mod |
| `mergelock.maxFileBytes` | `1048576` | Maksimum dosya boyutu (byte) |
---
## ⌨️ CLI Komutları
```bash
# Metin formatında tarama
mergelock scan --format text .
# JSON formatında tarama
mergelock scan --format json .
# SARIF çıktısı (CI entegrasyonu için)
mergelock scan --format sarif --output rapor.sarif.json .
# Sadece değişen dosyaları tara
mergelock scan --changed .
# Temel çizgiyi yok sayarak tara
mergelock scan --no-policy .
# Temel çizgi oluştur veya yenile
mergelock baseline refresh .
# Tek bir bulguyu bastır
mergelock suppress ML-örnek-id .
```
> ⚠️ Tarayıcı, yüksek veya kritik seviye bulgu varsa **çıkış kodu 2** döndürür.
---
## 🔗 Git Koruması
MergeLock, Git iş akışınıza entegre olarak riskli kodun depoya ulaşmasını önler.
### Kancaları Kurun
VS Code'dan:
```
MergeLock: Install Git Hooks
```
Terminalden:
```bash
mergelock hooks install /path/to/your/project
```
### Kurulan Kancalar
| Kanca | Davranış |
|-------|----------|
| `pre-commit` | Commit öncesi değişen dosyaları tarar |
| `pre-merge-commit` | Merge commit öncesi değişen dosyaları tarar |
| `pre-push` | Push öncesi tüm çalışma alanını tarar |
### Kancaları Kaldırma
```bash
mergelock hooks uninstall /path/to/your/project
```
> Yüksek veya kritik bulgu tespit edildiğinde Git işlemi otomatik olarak durdurulur.
---
## 🛡️ Kural Kapsamı
MergeLock, farklı dil ve platformlarda yüksek sinyalli yerel kurallar kullanır:
| Alan | Kapsam |
|------|--------|
| 🔐 **Gizli Bilgiler** | AWS, GitHub, Google API, Slack, Stripe, npm tokenları, özel anahtar materyali, genel kimlik bilgileri |
| 🟡 **JavaScript / TypeScript** | SQL enjeksiyonu, komut enjeksiyonu, dinamik kod çalıştırma, zayıf JWT, TLS atlatma, güvensiz rastgelelik |
| 🌐 **Ön Yüz** | React `dangerouslySetInnerHTML`, Vue `v-html`, Svelte `{@html}`, Angular `bypassSecurityTrust*`, DOM XSS, CSP sorunları, tabnabbing |
| 🖥️ **Arka Uç** | Permisif CORS, zayıf oturum, güvensiz çerezler, SSRF, açık yönlendirme, hata ayıklama modu, path traversal |
| 🐍 **Python** | `subprocess(shell=True)`, `os.system`, `pickle`, güvensiz YAML, SQL birleştirme, TLS atlatma, `mktemp`, zayıf rastgelelik |
| 🔷 **Go** | SQL `fmt.Sprintf`, shell çalıştırma, `InsecureSkipVerify`, `math/rand` güvenlik kullanımı |
| ☕ **Java / JVM** | JDBC SQL birleştirme, `createStatement`, komut çalıştırma, nesne deserializasyonu, trust-all TLS |
| 💜 **C# / .NET** | SQL birleştirme, `Process.Start`, `BinaryFormatter`, sertifika doğrulama atlatma |
| 💎 **Ruby** | `eval`, komut çalıştırma, `Marshal.load`, SQL interpolasyonu |
| 🦀 **Rust** | `sh -c` shell komutu, geçersiz sertifika kabul |
| ⚙️ **C / C++** | `gets`, sınırsız string kopyalama, `system`/`popen`, öngörülebilir geçici dosya |
| 🐘 **PHP** | `eval`, `unserialize`, komut enjeksiyonu, SQL birleştirme, dinamik include, TLS atlatma |
| 🗄️ **SQL / Veritabanı** | Dinamik execute, OS komutu, dosya erişimi, geniş public yetkilendirme |
| 📦 **Konteyner / IaC** | Ayrıcalıklı konteyner, root kullanıcı, Kubernetes güvenlik boşlukları, açık depolama, `curl\|bash`, `chmod 777` |
Tam kural listesi için: [docs/rules.md](docs/rules.md)
### Desteklenen Dosya Türleri
```
js jsx ts tsx mjs cjs html htm vue svelte astro
py go rs java kt cs rb php
sql env json yaml yml toml tf tfvars hcl ini conf
properties xml gradle sh Dockerfile Containerfile
```
---
## 🩹 Güvenli Yamalar
MergeLock yalnızca deterministik ve düşük riskli yamaları otomatik uygular. Uygulama öncesi hedef satırın hâlâ tarama sonucuyla eşleştiği doğrulanır.
Şu anda desteklenen düzeltmeler:
| Düzeltme | Açıklama |
|----------|----------|
| `.innerHTML` → `.textContent` | XSS riski azaltma |
| Zayıf hash → `sha256` | `md5` veya `sha1` yerine güçlü hash |
| Wildcard CORS → ortam değişkeni | `origin: '*'` yerine kontrollü origin |
| Şifre autocomplete | `autocomplete="on"` → `"current-password"` |
| `target="_blank"` | `rel="noopener noreferrer"` ekleme |
| TLS doğrulama | Yaygın TLS bypass boolean düzeltmeleri |
| Express cookie | Güvenlik bayrakları ekleme |
Belirsiz durumlar **inceleme bulgusu** olarak kalır.
---
## 🔧 Yapılandırma
Proje kök dizininde `.mergelock-policy.json` dosyası oluşturarak tarama davranışını özelleştirebilirsiniz:
```json
{
"suppressed_ids": [],
"disabled_rules": [],
"max_file_bytes": 1048576
}
```
---
## 📤 CI Entegrasyonu
### GitHub Actions Örneği
```yaml
- name: MergeLock Tarama
run: |
mergelock scan --format sarif --output mergelock.sarif.json .
- name: SARIF Yükle
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: mergelock.sarif.json
```
---
## 📁 Proje Yapısı
```
crates/
core-types/ paylaşılan bulgu, politika ve rapor türleri
secrets/ gizli bilgi algılayıcıları ve redaksiyon
fix/ deterministik yama üretimi
engine/ dosya keşfi, kurallar, politika filtreleme
sarif/ SARIF 2.1.0 kodlayıcı
cli/ komut satırı arayüzü ve Git kanca yükleyici
lsp/ yerel dil sunucusu
extensions/
vscode/ VS Code eklentisi
website/ proje web sitesi
docs/ mimari, kurallar, referanslar
```
---
## 📖 Dokümantasyon
- [Mimari](docs/architecture.md)
- [Resmi referanslar](docs/official-docs.md)
- [Kural listesi](docs/rules.md)
---
## 📄 Lisans
Bu proje [MIT Lisansı](LICENSE) altında yayınlanmıştır.
MergeLock — kodunuz yerelde güvende. 🔒