Skip to content

frk101/rn-security-audit

Use this GitHub action with your project
Add this Action to an existing workflow or create a new one
View on Marketplace

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RN Security Audit

npm version npm downloads Self Test Known Vulnerabilities GitHub stars GitHub Marketplace License: MIT Node.js

React Native mobil uygulamalarda güvenlik açıklarını otomatik olarak tespit eden araç.

Projenin dizinini ver, çalıştır — sana ne eksik, ne tehlikeli, nasıl düzeltirsin söyler.


Kurulum (Bir kez yapılır)

Node.js kurulu olmalı

Node.js yoksa: nodejs.org adresinden LTS sürümü indir ve kur.

Paketi global olarak yükle

npm install -g rn-security-audit

Bu kadar. Artık bilgisayarında her yerden kullanılabilir.


Kullanım (Her yeni proje için)

Terminal'i aç ve şunu yaz:

rn-security-audit /PROJE/DIZINI

Örnek:

rn-security-audit ~/Documents/benim-uygulama

Proje dizini = package.json dosyasının bulunduğu klasör.

Dizini bilmiyorsan: Terminalde projenin içindeyken pwd yaz, çıkan yolu kopyala.


Tek seferlik çalıştırmak için (yükleme yapmadan)

npx rn-security-audit /PROJE/DIZINI

Sonuçları Okuma

Çalıştırınca şuna benzer bir çıktı göreceksin:

━━━ 1. AndroidManifest Güvenlik Kontrolleri
  [GEÇTİ]    usesCleartextTraffic kapalı
  [KRİTİK]   allowBackup eksik
             → Öneri: android:allowBackup="false" ekleyin.
  [UYARI]    dataExtractionRules tanımlanmamış

━━━ 2. Hardcoded Credential & Email Sızıntısı
  [KRİTİK]   Hardcoded şifre tespit edildi
             src/slices/token.slice.ts:74: password: 'sifre123'
             → Öneri: Şifreyi .env dosyasına taşıyın.

=================================================
   ÖZET
=================================================
  GEÇTİ    : 24
  UYARI    : 3
  BAŞARISIZ: 2

Ne anlama geliyor?

Etiket Anlamı Ne yapmalısın?
[GEÇTİ] Bu kontrol tamam, sorun yok Bir şey yapma
[UYARI] Sorun olabilir, dikkat et İnce, gerekiyorsa düzelt
[KRİTİK] Güvenlik açığı var Mutlaka düzelt, altındaki öneriyi uygula

Her [KRİTİK] satırının hemen altında → Öneri: yazar — tam olarak ne yapman gerektiğini söyler.


Otomatik Düzeltme 🔧

Tarama bittiğinde araç sana sorar:

Otomatik düzeltmeleri uygulayayım mı? [y/N]:

y dersen şu güvenli düzeltmeleri otomatik yapar:

Düzeltme Ne Yapar?
.env.gitignore Yeni eklenir, ayrıca git cache'inden çıkarılır
AndroidManifest allowBackup="false" ve networkSecurityConfig ekler
network_security_config.xml Dosyayı sıfırdan oluşturur (cleartext kapalı)
build.gradle ProGuard release build için açar
Podfile Hermes'i iOS için açar
.env.example .env'deki anahtarları boş değerlerle kopyalar

Otomatik yapılmayan riskli değişiklikler (elle yap):

  • Kod içindeki hardcoded email/şifre kaldırma
  • Android izin kaldırma
  • Bağımlılık güncelleme

CI/CD'de bu prompt atlanır (CI=true otomatik tespit edilir). Manuel atlamak için: RN_AUDIT_NO_FIX=1


Ne Kontrol Eder?

1. AndroidManifest Güvenlik Kontrolleri

Uygulamanın temel Android güvenlik ayarlarını kontrol eder.

  • HTTP trafiğine izin veriliyor mu?
  • Yedekleme (backup) açık mı?
  • Debug modu production'da aktif mi?

2. iOS Info.plist & ATS Kontrolleri

iOS tarafında güvenlik ayarlarını ve izin açıklamalarını kontrol eder.

  • App Transport Security (ATS) kapatılmış mı? (NSAllowsArbitraryLoads)
  • İzin açıklamaları (NSCameraUsageDescription vb.) eksik veya boş mu?
  • iTunes File Sharing açık mı? (UIFileSharingEnabled)
  • WebView'da file URL erişimi açık mı?
  • Hassas veri AsyncStorage yerine Keychain'de mi saklanıyor?
  • Hermes iOS'ta etkin mi?
  • Release build'de DEBUG makrosu kalmış mı?

3. Hardcoded Credential & Email Sızıntısı

Kaynak koduna gömülmüş şifre, email, API anahtarı arar.

  • Şifre doğrudan koda yazılmış mı?
  • Çalışan email adresleri bundle'a sızmış mı?
  • .env dosyası yanlışlıkla git'e atılmış mı?

4. Ağ Güvenliği Yapılandırması

Uygulamanın sunucuyla güvenli konuşup konuşmadığını kontrol eder.

  • Certificate pinning var mı?
  • HTTP (şifresiz) bağlantıya izin veriliyor mu?
  • Ağ güvenlik config dosyası doğru yapılandırılmış mı?

5. İzin (Permission) Analizi

Uygulamanın istediği Android izinlerini inceler.

  • Gereksiz izin var mı? (GPS, depolama, mikrofon vb.)
  • Kullanıcıya izin neden istendiği açıklanıyor mu?

6. Obfuscation & Build Güvenliği

Uygulamanın tersine mühendisliğe karşı korunup korunmadığını kontrol eder.

  • ProGuard/R8 açık mı? (kod karmaşıklaştırma)
  • Source map production APK'ya gömülmüş mü?
  • Root/jailbreak tespiti var mı?
  • APK imza doğrulaması var mı?

7. Bağımlılık Güvenliği

Kullandığın kütüphanelerde bilinen açık olup olmadığını kontrol eder.

  • npm audit çalıştırır, kritik açıkları raporlar
  • Riskli paket kullanımı var mı?
  • Versiyon kilidi (lock dosyası) var mı?

CI/CD'ye Eklemek (GitHub Actions)

Her PR açıldığında otomatik çalışmasını istersen, hazır GitHub Action'ı kullan:

# .github/workflows/security-audit.yml
name: Security Audit
on: [push, pull_request]

jobs:
  audit:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: frk101/rn-security-audit@v1
        with:
          project-dir: '.'         # opsiyonel, varsayılan repo kökü
          fail-on: 'critical'      # critical | warning | none

Inputs

Input Varsayılan Açıklama
project-dir . Taranacak proje dizini
fail-on critical critical: sadece kritik varsa build düşer, warning: uyarı bile olsa düşer, none: hiç düşmez

Outputs

Output Açıklama
pass-count Geçen kontrol sayısı
warn-count Uyarı sayısı
fail-count Kritik bulgu sayısı

Her run sonunda GitHub Actions sekmesindeki Summary'de özet tablo otomatik gösterilir.


Sık Sorulan Sorular

Proje dizinini nasıl bulurum? Terminal'de projenin içindeyken pwd yaz, dizini kopyala.

"Permission denied" hatası alıyorum.

chmod +x ~/Documents/rn-security-audit/scripts/audit.sh
chmod +x ~/Documents/rn-security-audit/scripts/checks/*.sh

"No such file or directory" hatası alıyorum. Proje dizinini yanlış yazmış olabilirsin. Dizinin doğru olduğunu kontrol et:

ls /PROJE/DIZINI/package.json

Bu komut dosyayı listeliyorsa dizin doğrudur.

Tek bir kontrolü çalıştırabilir miyim? Evet:

bash ~/Documents/rn-security-audit/scripts/checks/credentials.sh /PROJE/DIZINI

About

React Native uygulamaları için otomatik güvenlik denetim aracı (Android + iOS)

Resources

Stars

2 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors