> **Language / Dil**
> [EN English](#-english) · [TR Türkçe](#-türkçe)
# 🛡️ Security — Safety Model & Threat Analysis
Brave Omega is designed with a **security-first** approach. Every design decision prioritizes user safety, transparency, and auditability.
---
## Security Principles
| Principle | Implementation |
| ----------- | ---------------- |
| **Zero Obfuscation** | 100% readable PowerShell source — no encoding, no compression, no hidden logic |
| **Zero Network Calls** | Script makes **zero outbound network connections** — fully offline operation |
| **Zero Executables** | Pure PowerShell — no binaries, no DLLs, no external dependencies |
| **Least Privilege** | Only requests Administrator for HKLM writes; HKCU/Omaha need no elevation |
| **Auditability** | Every registry change traceable to official ADMX/Chromium documentation |
---
## Threat Model
| Threat | Mitigation |
| -------- | ------------ |
| **Malicious script modification** | Full source on GitHub — verify checksums before running |
| **Supply chain compromise** | No external dependencies; no package manager; no binary blobs |
| **Registry corruption** | Automatic `.reg` backup before any HKLM writes; one-command rollback |
| **Partial application** | Per-operation try/catch with individual success/failure counters |
| **Brave data loss** | Process guard detects running Brave, prompts continue/cancel |
| **Privilege escalation** | Script only requests Admin for HKLM; HKCU/Omaha need no elevation |
| **Stale policy application** | Version pinning + Brave version check at runtime |
---
## Security Controls
### 1. Pre-Flight Checks
```
├─ Administrator privilege verification
├─ Brave process detection (with continue/cancel prompt)
├─ Brave version validation against Compatibility Matrix
├─ Brave version detection (compares against validated version 1.96.59)
└─ Registry path ACL validation
```
### 2. Backup Before Write
- **Automatic** timestamped `.reg` export of `HKLM:\SOFTWARE\Policies\BraveSoftware\Brave`
- Filename: `HKLM_BravePolicy_YYYYMMDD_HHMMSS.reg`
- Stored in `%TEMP%\BravePolicyBackup` for easy rollback
- `-Reset` produces this backup itself: if either hive cannot be exported, no policy is removed
### 3. Idempotent Application
- **`-Force` parameter** enables safe re-execution
- Per-policy try/catch with individual success/failure tracking
- Running multiple times = **identical result**, no duplicate entries
### 4. Rollback Capability
```powershell
# One-command restoration
reg import "$env:TEMP\BravePolicyBackup\HKLM_BravePolicy_20260613_120000.reg"
```
- Backup includes full HKLM policy hive state
- Restore is atomic and complete
### 5. Execution Policy Safety (v1.2.2+)
```powershell
# Single-command bypass — no persistence
PowerShell -ExecutionPolicy Bypass -File ".\BraveOmega.ps1"
```
- **No `Set-ExecutionPolicy` call** — no permanent registry changes
- Bypass applies **only to child process** — parent shell unaffected
- No attack surface exposure, no residual policy changes
### 6. Preview Mode (-WhatIf)
```powershell
# Preview all changes without writing
PowerShell -ExecutionPolicy Bypass -File ".\BraveOmega.ps1" -WhatIf
```
- No registry writes occur in WhatIf mode
- All operations are guarded by if (-not $WhatIf)
- Backup and directory creation are entirely skipped
- Magenta [WhatIf] tags indicate what would change
### 7. Clean Uninstall (-Reset)
```powershell
# Remove all Brave Omega policies
PowerShell -ExecutionPolicy Bypass -File ".\BraveOmega.ps1" -Reset
```
- Removes all 151 policies from HKLM, HKCU, and Omaha GUIDs
- Cleans up empty registry keys automatically
- Respects -WhatIf silently
---
## Execution Policy Comparison
| Method | Persistence | Scope | Attack Surface | Used? |
| -------- | ------------- | ------- | ---------------- | ------- |
| `Set-ExecutionPolicy RemoteSigned -Scope CurrentUser` | Permanent | User-wide | ❌ High | ❌ No |
| `Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass` | Session | Current process | ⚠️ Medium | ❌ No |
| **`PowerShell -ExecutionPolicy Bypass -File ...`** | **Single command** | **Child process only** | ✅ **None** | ✅ **Yes** |
---
## Backup & Rollback Details
### Backup File Format
```
Filename: HKLM_BravePolicy_YYYYMMDD_HHMMSS.reg
Location: %TEMP%\BravePolicyBackup
Format: Standard Windows REGEDIT4 format
Content: Full HKLM:\SOFTWARE\Policies\BraveSoftware\Brave hive
```
### Rollback Procedure
```powershell
# 1. Close Brave
# 2. Import backup
reg import "$env:TEMP\BravePolicyBackup\HKLM_BravePolicy_20260613_120000.reg"
# 3. Restart Brave
```
### Manual Rollback (if backup lost)
```powershell
# Remove HKLM policies
Remove-Item "HKLM:\SOFTWARE\Policies\BraveSoftware\Brave" -Recurse -Force
# Remove HKCU user preferences
Remove-Item "HKCU:\Software\BraveSoftware\Brave-Browser" -Recurse -Force
# Reset Omaha usagestats
Get-Item "HKCU:\Software\BraveSoftware\Update\ClientState\*" | ForEach-Object {
Set-ItemProperty $_.PSPath -Name "usagestats" -Value 1
}
```
---
## Verification Checklist
Before running, verify:
- [ ] Script downloaded from official GitHub release
- [ ] SHA256 checksum matches release notes (if provided)
- [ ] Running on Windows 11 with latest updates
- [ ] Brave Browser **latest stable** installed
- [ ] Brave version matches [Compatibility Matrix](Version-Compatibility-Matrix.md)
- [ ] Running PowerShell as Administrator
- [ ] No critical applications running that might conflict
---
## Post-Execution Verification
| Check | Method |
| ------- | -------- |
| All policies active | `brave://policy` → policies show **Active** (51 for Essential level) |
| Registry written | `Get-ItemProperty HKLM:\SOFTWARE\Policies\BraveSoftware\Brave` |
| Backup created | `HKLM_BravePolicy_*.reg` and `HKCU_BraveSoftware_*.reg` exist in `%TEMP%\BravePolicyBackup` |
| No errors in output | Script exits with code 0, no `[ERROR]` lines |
---
## Incident Response
If unexpected behavior occurs:
1. **Immediate:** Close Brave, import backup via `reg import`
2. **Investigate:** Review script output for `[ERROR]` lines
3. **Report:** Open GitHub issue with:
- Brave version (`brave://version`)
- Windows version (`winver`)
- Full script output
- `brave://policy` page export
4. **Rollback:** Use backup or manual removal procedure
---
## Related Pages
- [🔧 Installation](Installation.md) — Safe execution procedure
- [🏗️ Architecture](Architecture.md) — Three-tier model
- [📋 Policy Reference](Policy-Reference.md) — What policies are applied
- [🔍 Troubleshooting](Troubleshooting.md) — Common issues
- [🗺️ Roadmap](Roadmap.md) — Planned security enhancements
---
## Test Security Notes (Phase 3)
The Pester test suite at `Tests/` follows the same security model:
| Principle | Implementation |
| ----------- | ---------------- |
| **No live registry writes** | Tests use mock paths or `-WhatIf` mode — no HKLM/HKCU modification |
| **No network calls** | Tests are fully offline — no internet dependency |
| **Isolation** | Each test file is self-contained; no cross-file state |
| **Inspectable** | 100% readable Pester code — no hidden test logic |
| **Admin not required** | Unit tests run without elevation; integration tests skip if not admin |
> 🧪 Run `Invoke-Pester -Path .\Tests\` to validate the suite before any PR.
---
---
# 🛡️ Güvenlik — Güvenlik Modeli ve Tehdit Analizi
Brave Omega **güvenlik öncelikli** bir yaklaşımla tasarlanmıştır. Her tasarım kararı kullanıcı güvenliğini, şeffaflığı ve denetlenebilirliği önceliklendirir.
---
## Güvenlik İlkeleri
| İlke | Uygulama |
| ------ | ---------- |
| **Sıfır Gizleme** | %100 okunabilir PowerShell kaynağı — kodlama, sıkıştırma veya gizli mantık yok |
| **Sıfır Ağ Çağrısı** | Betik **sıfır giden ağ bağlantısı** yapar — tamamen çevrimdışı çalışma |
| **Sıfır Çalıştırılabilir** | Saf PowerShell — ikili dosya, DLL veya harici bağımlılık yok |
| **En Az Ayrıcalık** | Yalnızca HKLM yazmaları için Yönetici ister; HKCU/Omaha yükseltme gerektirmez |
| **Denetlenebilirlik** | Her kayıt defteri değişikliği resmî ADMX/Chromium belgelendirmesine izlenebilir |
---
## Tehdit Modeli
| Tehdit | Önlem |
| -------- | ------- |
| **Kötü amaçlı betik değişikliği** | GitHub'da tam kaynak — çalıştırmadan önce sağlama toplamlarını doğrulayın |
| **Tedarik zinciri ihlali** | Harici bağımlılık yok; paket yöneticisi yok; ikili dosya yok |
| **Kayıt defteri bozulması** | HKLM yazmalarından önce otomatik `.reg` yedeği; tek komutla geri alma |
| **Kısmi uygulama** | İşlem başına try/catch ile bireysel başarı/hata sayaçları |
| **Brave veri kaybı** | Süreç koruyucusu çalışan Brave'i tespit eder, devam/iptal istemi gösterir |
| **Ayrıcalık yükseltme** | Betik yalnızca HKLM için Yönetici ister; HKCU/Omaha yükseltme gerektirmez |
| **Güncel olmayan politika uygulaması** | Sürüm sabitleme + çalışma zamanında Brave sürümü kontrolü |
---
## Güvenlik Kontrolleri
### 1. Ön Uçuş Kontrolleri
```
├─ Yönetici ayrıcalığı doğrulaması
├─ Brave süreç tespiti (devam/iptal istemiyle)
├─ Brave sürümünün Uyumluluk Matrisine karşı doğrulaması
├─ Brave sürüm algılama (doğrulanmış sürüm 1.96.59 ile karşılaştırma)
└─ Kayıt defteri yolu ACL doğrulaması
```
### 2. Yazmadan Önce Yedekleme
- **Otomatik** zaman damgalı `.reg` dışa aktarımı: `HKLM:\SOFTWARE\Policies\BraveSoftware\Brave`
- Dosya adı: `HKLM_BravePolicy_YYYYMMDD_HHMMSS.reg`
- Kolay geri alma için `%TEMP%\BravePolicyBackup` altında saklanır
- `-Reset` bu yedeği kendisi üretir: iki kovanın da yedeği alınamazsa hiçbir politika kaldırılmaz
### 3. Kararsız Olmayan Uygulama
- **`-Force` parametresi** güvenli yeniden çalıştırmayı sağlar
- Politika başına try/catch ile bireysel başarı/hata takibi
- Birden fazla çalıştırma = **özdeş sonuç**, yinelenen kayıt yok
### 4. Geri Alma Yeteneği
```powershell
# Tek komutla eski duruma dönüş
reg import "$env:TEMP\BravePolicyBackup\HKLM_BravePolicy_20260613_120000.reg"
```
- Yedek, tam HKLM politika kovası durumunu içerir
- Geri yükleme atomik ve eksiksizdir
### 5. Çalıştırma İlkesi Güvenliği (v1.2.2+)
```powershell
# Tek komutla bypass — kalıcılık yok
PowerShell -ExecutionPolicy Bypass -File ".\BraveOmega.ps1"
```
- **`Set-ExecutionPolicy` çağrısı yok** — kalıcı kayıt defteri değişikliği yok
- Bypass **yalnızca alt işlem için** geçerlidir — üst kabuk etkilenmez
- Saldırı yüzeyi maruziyeti yok, artık politika değişikliği yok
### 6. Ön İzleme Kipi (-WhatIf)
```powershell
# Tüm değişiklikleri yazmadan önizle
PowerShell -ExecutionPolicy Bypass -File ".\BraveOmega.ps1" -WhatIf
```
- WhatIf kipinde kayıt defterine yazma olmaz
- Tüm işlemler if (-not $WhatIf) ile korunur
- Yedekleme ve dizin oluşturma tamamen atlanır
- Macenta [WhatIf] etiketleri neyin değişeceğini belirtir
### 7. Temiz Kaldırma (-Reset)
```powershell
# Tüm Brave Omega politikalarını kaldır
PowerShell -ExecutionPolicy Bypass -File ".\BraveOmega.ps1" -Reset
```
- 151 politikanın tümünü HKLM, HKCU ve Omaha GUID'lerinden kaldırır
- Boş kayıt defteri anahtarlarını otomatik temizler
- -WhatIf'e sessizce saygı duyar
---
## Çalıştırma İlkesi Karşılaştırması
| Yöntem | Kalıcılık | Kapsam | Saldırı Yüzeyi | Kullanıldı mı? |
| -------- | ----------- | -------- | ---------------- | ---------------- |
| `Set-ExecutionPolicy RemoteSigned -Scope CurrentUser` | Kalıcı | Kullanıcı genelinde | ❌ Yüksek | ❌ Hayır |
| `Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass` | Oturum | Geçerli işlem | ⚠️ Orta | ❌ Hayır |
| **`PowerShell -ExecutionPolicy Bypass -File ...`** | **Tek komut** | **Yalnızca alt işlem** | ✅ **Hiçbiri** | ✅ **Evet** |
---
## Yedekleme ve Geri Alma Ayrıntıları
### Yedek Dosyası Biçimi
```
Dosya adı: HKLM_BravePolicy_YYYYMMDD_HHMMSS.reg
Konum: %TEMP%\BravePolicyBackup
Biçim: Standart Windows REGEDIT4 biçimi
İçerik: Tam HKLM:\SOFTWARE\Policies\BraveSoftware\Brave kovası
```
### Geri Alma Prosedürü
```powershell
# 1. Brave'i kapat
# 2. Yedeği içe aktar
reg import "$env:TEMP\BravePolicyBackup\HKLM_BravePolicy_20260613_120000.reg"
# 3. Brave'i yeniden başlat
```
### Manuel Geri Alma (yedek kaybolursa)
```powershell
# HKLM politikalarını kaldır
Remove-Item "HKLM:\SOFTWARE\Policies\BraveSoftware\Brave" -Recurse -Force
# HKCU kullanıcı tercihlerini kaldır
Remove-Item "HKCU:\Software\BraveSoftware\Brave-Browser" -Recurse -Force
# Omaha usagestats'i sıfırla
Get-Item "HKCU:\Software\BraveSoftware\Update\ClientState\*" | ForEach-Object {
Set-ItemProperty $_.PSPath -Name "usagestats" -Value 1
}
```
---
## Doğrulama Kontrol Listesi
Çalıştırmadan önce doğrulayın:
- [ ] Betik resmî GitHub sürümünden indirildi
- [ ] SHA256 sağlama toplamı sürüm notlarıyla eşleşiyor (varsa)
- [ ] Windows 11'de en güncel güncellemelerle çalışıyor
- [ ] Brave Browser **en güncel kararlı** sürümü yüklü
- [ ] Brave sürümü [Uyumluluk Matrisi](Version-Compatibility-Matrix.md#-türkçe) ile eşleşiyor
- [ ] PowerShell Yönetici olarak çalışıyor
- [ ] Çakışabilecek kritik uygulamalar çalışmıyor
---
## Çalıştırma Sonrası Doğrulama
| Kontrol | Yöntem |
| --------- | -------- |
| Tüm politikalar etkin | `brave://policy` → 151 politikanın tümü **Etkin** gösteriyor (Katı seviye; Temel'de 51, Dengeli'de 83) |
| Kayıt defteri yazıldı | `Get-ItemProperty HKLM:\SOFTWARE\Policies\BraveSoftware\Brave` |
| Yedek oluşturuldu | `HKLM_BravePolicy_*.reg` ve `HKCU_BraveSoftware_*.reg` `%TEMP%\BravePolicyBackup` içinde mevcut |
| Çıktıda hata yok | Betik kod 0 ile çıkıyor, `[ERROR]` satırı yok |
---
## Olay Müdahalesi
Beklenmeyen davranış oluşursa:
1. **Acil:** Brave'i kapat, `reg import` ile yedeği içe aktar
2. **İncele:** `[HATA]` satırları için betik çıktısını gözden geçir
3. **Raporla:** GitHub sorunu aç:
- Brave sürümü (`brave://version`)
- Windows sürümü (`winver`)
- Tam betik çıktısı
- `brave://policy` sayfası dışa aktarımı
4. **Geri al:** Yedek veya manuel kaldırma prosedürünü kullan
---
## İlgili Sayfalar
- [🔧 Kurulum](Installation.md#-türkçe) — Güvenli çalıştırma prosedürü
- [🏗️ Mimari](Architecture.md#-türkçe) — Üç katmanlı model
- [📋 Politika Başvurusu](Policy-Reference.md#-türkçe) — Hangi politikalar uygulanır
- [🔍 Sorun Giderme](Troubleshooting.md#-türkçe) — Sık karşılaşılan sorunlar
- [🗺️ Yol Haritası](Roadmap.md#-türkçe) — Planlanan güvenlik iyileştirmeleri
---
## Test Güvenlik Notları (Faz 3)
`Tests/` dizinindeki Pester test paketi aynı güvenlik modelini izler:
| İlke | Uygulama |
| ------- | ------------ |
| **Canlı kayıt defteri yazımı yok** | Testler sahte yollar veya `-WhatIf` modu kullanır — HKLM/HKCU değişikliği yoktur |
| **Ağ çağrısı yok** | Testler tamamen çevrimdışıdır — internet bağımlılığı yoktur |
| **İzolasyon** | Her test dosyası kendi kendine yeterlidir; dosyalar arası durum yoktur |
| **Denetlenebilir** | %100 okunabilir Pester kodu — gizli test mantığı yoktur |
| **Yönetici gerekmez** | Birim testleri yükseltme olmadan çalışır; yönetici değilse entegrasyon testleri atlanır |
> 🧪 Her PR'den önce paketi doğrulamak için `Invoke-Pester -Path .\Tests\` çalıştırın.