Source code Review / SAST Tools
Kılavuz ve Araç Listeleri
Çoklu Dil Araçları
PR'ları incelemek için ücretsiz bir paket bulunmaktadır.
Bu bir Açık Kaynak aracıdır.
Desteklenen Diller
Kategori | Diller |
---|---|
GA | C# · Go · Java · JavaScript · JSX · JSON · PHP · Python · Ruby · Scala · Terraform · TypeScript · TSX |
Beta | Kotlin · Rust |
Deneysel | Bash · C · C++ · Clojure · Dart · Dockerfile · Elixir · HTML · Julia · Jsonnet · Lisp · |
Hızlı Başlangıç
Ayrıca, bulguları VSCode içinde almak için semgrep VSCode Eklentisini kullanabilirsiniz.
Yüklenebilir bir ücretsiz sürüm bulunmaktadır.
Hızlı Başlangıç
CodeQL
Kurulabilir ücretsiz bir sürüm bulunmaktadır ancak lisansa göre yalnızca Açık Kaynak projelerinde ücretsiz CodeQL sürümünü kullanabilirsiniz.
Kurulum
Hızlı Başlangıç - Veritabanını Hazırlayın
Yapmanız gereken ilk şey, veritabanını hazırlamak (kod ağacını oluşturmak) ve daha sonra sorguların üzerinde çalıştırılmasını sağlamaktır.
Kodql'nin depodaki dilini otomatik olarak tanımlamasına ve veritabanını oluşturmasına izin verebilirsiniz
Bu genellikle birden fazla dil belirtildiği (veya otomatik olarak algılandığı) bir hata tetikler. Bunun düzeltilmesi için aşağıdaki seçenekleri kontrol edin!
Bu işlemi manuel olarak yapabilirsiniz, repo ve dili belirterek (dil listesi)
Eğer depo 1'den fazla dil kullanıyorsa, her dil için bir DB oluşturabilirsiniz.
Ayrıca
codeql
'e tüm dilleri tanımasına izin verebilir ve dil başına bir veritabanı oluşturabilirsiniz. Bir GITHUB_TOKEN vermeniz gerekmektedir.
Hızlı Başlangıç - Betimlenmiş
Buluntuları https://microsoft.github.io/sarif-web-component/ adresinde görselleştirebilirsiniz veya VSCode eklentisi SARIF viewer kullanabilirsiniz.
Ayrıca buluntuları VSCode içinde görmek için VSCode eklentisini kullanabilirsiniz. Hala veritabanını manuel olarak oluşturmanız gerekecek, ancak daha sonra herhangi bir dosyayı seçebilir ve Sağ Tıkla
-> CodeQL: Run Queries in Selected Files
seçeneğine tıklayabilirsiniz.
Yüklenebilir ücretsiz bir sürüm bulunmaktadır.
Hızlı Başlangıç
VSCode içinde sonuçları almak için snyk VSCode Extension'ı da kullanabilirsiniz.
Bu Açık Kaynak kodlu, ancak bakımsız görünüyor.
Desteklenen Diller
Java (Maven ve Android), Kotlin (Android), Swift (iOS), .NET Full Framework, C# ve Javascript (Node.js).
Hızlı Başlangıç
Genel depolar için ücretsizdir.
NodeJS
yarn
pnpm
nodejsscan: Node.js uygulamaları için libsast ve semgrep tarafından desteklenen Statik güvenlik kod tarayıcısı (SAST).
RetireJS: Retire.js'ın amacı, bilinen güvenlik açıklarına sahip JS kütüphane sürümlerinin kullanımını tespit etmenize yardımcı olmaktır.
Electron
electronegativity: Electron tabanlı uygulamalardaki yanlış yapılandırmaları ve güvenlik karşı desenleri belirlemek için bir araçtır.
Python
Bandit: Bandit, Python kodunda yaygın güvenlik sorunlarını bulmak için tasarlanmış bir araçtır. Bunun için Bandit her dosyayı işler, bir AST oluşturur ve uygun eklentileri AST düğümlerine karşı çalıştırır. Bandit tüm dosyaları taramayı bitirdiğinde bir rapor oluşturur.
safety: Safety, Python bağımlılıklarını bilinen güvenlik açıkları açısından kontrol eder ve tespit edilen güvenlik açıkları için uygun çözümler önerir. Safety, geliştirici makinelerinde, CI/CD boru hatlarında ve üretim sistemlerinde çalıştırılabilir.
Pyt: Bakımsız.
.NET
RUST
Java
Java dili, güvenlik açıklarını tespit etmek için birçok araç ve kütüphane sunar. Java kod incelemesi yaparken aşağıdaki araçları kullanabilirsiniz:
FindBugs: Java kodunuzu analiz ederek potansiyel hataları ve kötü uygulamaları belirler.
PMD: Kod tabanınızı inceleyerek hatalı kodlama uygulamalarını tespit eder.
Checkstyle: Kod tabanınızı belirli bir kodlama standardına göre kontrol eder ve uyumsuzlukları raporlar.
SpotBugs: FindBugs'un devamı niteliğinde olan bu araç, Java kodunuzu analiz ederek hataları tespit eder.
Bu araçlar, Java kodunuzdaki güvenlik açıklarını tespit etmenize ve düzeltmenize yardımcı olabilir.
Görev | Komut |
---|---|
Jar Dosyasını Çalıştır | java -jar [jar] |
Jar Dosyasını Çıkart | unzip -d [çıktı dizini] [jar] |
Jar Oluştur | jar -cmf META-INF/MANIFEST.MF [çıktı jar] * |
Base64 SHA256 | sha256sum [dosya] | cut -d' ' -f1 | xxd -r -p | base64 |
İmzayı Kaldır | rm META-INF/.SF META-INF/.RSA META-INF/*.DSA |
Jardan Sil | zip -d [jar] [silinecek dosya] |
Sınıfı Çözümle | procyon -o . [sınıfın yolu] |
Jar Dosyasını Çözümle | procyon -jar [jar] -o [çıktı dizini] |
Sınıfı Derle | javac [.java dosyasının yolu] |
Gitmek
PHP
Wordpress Eklentileri
https://www.pluginvulnerabilities.com/plugin-security-checker/
Solidity
JavaScript
Keşif
Burp:
Örümcek ve içerik keşfet
Site haritası > filtre
Site haritası > alanına sağ tıklayın > Etkileşim araçları > Betikleri bul
waybackurls <domain> |grep -i "\.js" |sort -u
Statik Analiz
Unminimize/Beautify/Prettify
Ayrıca 'Deobfuscate/Unpack' bölümünde belirtilen bazı araçlara bakın.
Deobfuscate/Unpack
Not: Tamamen deobfuscate etmek mümkün olmayabilir.
.map dosyalarını bulun ve kullanın:
.map dosyaları açığa çıkarılmışsa, bunları kolayca deobfuscate etmek için kullanılabilir.
Genellikle, foo.js.map foo.js'e eşlenir. Bunları manuel olarak arayın.
Onları bulmak için JS Miner kullanın.
Aktif taramanın yapıldığından emin olun.
'İpuçları/Notlar'ı okuyun
Bulunduysa, deobfuscate etmek için Maximize kullanın.
.map dosyaları olmadan, JSnice'ı deneyin:
Referanslar: http://jsnice.org/ & https://www.npmjs.com/package/jsnice
İpuçları:
jsnice.org'u kullanıyorsanız, "Nicify JavaScript" düğmesinin yanındaki seçenekler düğmesine tıklayın ve "Infer types" seçeneğini kaldırarak kodu yorumlarla karıştırmadan temizleyin.
Kodun başında boş satır bırakmamaya dikkat edin, çünkü bu deobfuscation sürecini etkileyebilir ve yanıltıcı sonuçlar verebilir.
JSNice'a modern alternatifler için aşağıdakilere bakabilirsiniz:
Javascript decompiler, unpacker ve unminify araç seti
Wakaru, modern frontend için Javascript decompiler'dır. Paketlenmiş ve transpile edilmiş kaynaktan orijinal kodu geri getirir.
Obfuscator.io'yu deobfuscate etme, unminify ve paketlenmiş javascript'i açma
ChatGPT kullanarak Javascript kodunu un-minify etme
Bu araç, Javascript kodunu un-minify etmek için büyük dil modelleri (ChatGPT ve llama2 gibi) ve diğer araçları kullanır. LLM'ler yapısal değişiklikler yapmaz - yalnızca değişkenleri ve fonksiyonları yeniden adlandırmak için ipuçları sağlar. Kodun 1-1 eşdeğer kalmasını sağlamak için AST seviyesinde Babel tarafından ağır işleme yapılır.
JavaScript değişken adı minifikasyonunu tersine çevirmek için LLM'leri kullanma
console.log()
kullanın;
Sonuç değerini bulun ve onu
console.log(<packerReturnVariable>);
olarak değiştirin, böylece deobfuscated js yerine konsola yazdırılır.Daha sonra, değiştirilmiş (ve hala obfuscated) js'i https://jsconsole.com/ adresine yapıştırarak konsola yazdırılan deobfuscated js'i görebilirsiniz.
Son olarak, deobfuscated çıktıyı analiz için https://prettier.io/playground/ adresine yapıştırın ve güzelleştirin.
Not: Hala paketlenmiş (ancak farklı) js görüyorsanız, muhtemelen tekrar paketlenmiştir. İşlemi tekrarlayın.
Referanslar
devalias'ın GitHub Gists:
Araçlar
Az Kullanılan Referanslar
Last updated