Source code Review / SAST Tools
Uputstva i liste alata
Alati za više jezika
Postoji bespaltan paket za pregled PR-ova.
To je Open Source alat.
Podržani jezici
Kategorija | Jezici |
---|---|
GA | C# · Go · Java · JavaScript · JSX · JSON · PHP · Python · Ruby · Scala · Terraform · TypeScript · TSX |
Beta | Kotlin · Rust |
Eksperimentalno | Bash · C · C++ · Clojure · Dart · Dockerfile · Elixir · HTML · Julia · Jsonnet · Lisp · |
Brzi Start
Takođe možete koristiti semgrep VSCode Extension da biste dobili rezultate unutar VSCode-a.
Postoji instalabilna besplatna verzija.
Brzi Start
CodeQL
Postoji besplatna verzija koja se može instalirati, ali prema licenci možete koristiti besplatnu verziju CodeQL-a samo u projektima otvorenog koda.
Instalacija
Brzi početak - Priprema baze podataka
Prva stvar koju treba da uradite je da pripremite bazu podataka (kreirate stablo koda) kako biste kasnije izvršavali upite nad njom.
Možete dozvoliti codeql-u da automatski identifikuje jezik repozitorijuma i kreira bazu podataka
Ovo obično izaziva grešku koja kaže da je navedeno više od jednog jezika (ili je automatski detektovan). Proverite sledeće opcije da biste to rešili!
Možete to uraditi ručno navodeći repozitorijum i jezik (lista jezika)
Ako vaš repozitorijum koristi više od 1 jezika, takođe možete kreirati 1 bazu podataka po jeziku označavajući svaki jezik.
Takođe možete dozvoliti
codeql
da identifikuje sve jezike za vas i kreira bazu podataka po jeziku. Morate mu dati GITHUB_TOKEN.
Brzi početak - Analiza koda
Sada je konačno vreme za analizu koda
Zapamtite da ako ste koristili više jezika, baza podataka po jeziku bi bila kreirana na putanji koju ste naveli.
Brzi Start - Skriptovano
Možete vizualizovati nalaze na https://microsoft.github.io/sarif-web-component/ ili koristeći VSCode ekstenziju SARIF viewer.
Takođe možete koristiti VSCode ekstenziju da dobijete nalaze unutar VSCode-a. Ipak, moraćete ručno kreirati bazu podataka, ali zatim možete izabrati bilo koje datoteke i kliknuti na Desni Klik
-> CodeQL: Pokreni Upite u Izabranim Datotekama
Postoji besplatna instalabilna verzija.
Brzi Start
Možete koristiti snyk VSCode Extension da biste dobili rezultate unutar VSCode-a.
To je Open Source, ali izgleda neodržavan.
Podržani jezici
Java (Maven i Android), Kotlin (Android), Swift (iOS), .NET Full Framework, C#, i Javascript (Node.js).
Brzi Start
Besplatno za javne repozitorijume.
NodeJS
yarn
pnpm
nodejsscan: Statički skener sigurnosnog koda (SAST) za Node.js aplikacije pokretan od strane libsast i semgrep.
RetireJS: Cilj Retire.js-a je da vam pomogne da otkrijete korišćenje verzija JS biblioteka sa poznatim ranjivostima.
Electron
electronegativity: Ovo je alat za identifikaciju loše konfigurisanih i sigurnosnih anti-uzoraka u aplikacijama zasnovanim na Electron-u.
Python
Bandit: Bandit je alat dizajniran za pronalaženje uobičajenih sigurnosnih problema u Python kodu. Da bi to postigao, Bandit obrađuje svaki fajl, gradi AST iz njega, i pokreće odgovarajuće dodatke protiv čvorova AST-a. Kada Bandit završi skeniranje svih fajlova, generiše izveštaj.
safety: Safety proverava Python zavisnosti za poznate sigurnosne ranjivosti i predlaže odgovarajuće popravke za otkrivene ranjivosti. Safety se može pokrenuti na razvojnim mašinama, u CI/CD tokovima i na produkcionim sistemima.
Pyt: Nije održavan.
.NET
RUST
Java
FindBugs
FindBugs je alat za statičku analizu Java koda koji otkriva greške u kodu, kao što su greške u upravljanju memorijom, greške u konkurentnom programiranju, grejsoni i druge greške.
Instalacija:
Korišćenje:
PMD
PMD je još jedan alat za statičku analizu Java koda koji pronalazi greške u kodu, kao što su neefikasne konstrukcije, neiskorišćene varijable, nepotrebne konverzije tipova i druge greške.
Instalacija:
Korišćenje:
Zadatak | Komanda |
---|---|
Izvrši Jar | java -jar [jar] |
Dekompresuj Jar | unzip -d [output directory] [jar] |
Napravi Jar | jar -cmf META-INF/MANIFEST.MF [output jar] * |
Base64 SHA256 | sha256sum [file] | cut -d' ' -f1 | xxd -r -p | base64 |
Ukloni Potpis | rm META-INF/.SF META-INF/.RSA META-INF/*.DSA |
Obriši iz Jara | zip -d [jar] [file to remove] |
Dekompajliraj klasu | procyon -o . [path to class] |
Dekompajliraj Jar | procyon -jar [jar] -o [output directory] |
Kompajliraj klasu | javac [path to .java file] |
Idi
PHP
Wordpress Dodaci
https://www.pluginvulnerabilities.com/plugin-security-checker/
Solidity
JavaScript
Otkriće
Burp:
Pauk i otkrijte sadržaj
Sitemap > filter
Sitemap > desni klik na domen > Alati za angažovanje > Pronađi skripte
waybackurls <domain> |grep -i "\.js" |sort -u
Statička Analiza
Unminimize/Beautify/Prettify
Pogledajte neke od alata navedenih u 'Deobfuscate/Unpack' ispod takođe.
Deobfuscate/Unpack
Napomena: Možda nije moguće potpuno deobfuscirati.
Pronađite i koristite .map fajlove:
Ako su .map fajlovi izloženi, mogu se lako koristiti za deobfusciranje.
Često, foo.js.map mapira na foo.js. Ručno ih potražite.
Koristite JS Miner da ih potražite.
Osigurajte da se vrši aktivno skeniranje.
Pročitajte 'Saveti/Napomene'
Ako ih pronađete, koristite Maximize za deobfusciranje.
Bez .map fajlova, pokušajte sa JSnice:
Reference: http://jsnice.org/ & https://www.npmjs.com/package/jsnice
Saveti:
Ako koristite jsnice.org, kliknite na dugme opcija pored dugmeta "Nicify JavaScript" i odznačite "Infer types" da biste smanjili zagušenje koda komentarima.
Osigurajte da ne ostavljate prazne linije pre skripte, jer to može uticati na proces deobfusciranja i dati netačne rezultate.
Za neke modernije alternative JSNice-u, možda biste želeli da pogledate sledeće:
Javascript decompiler, unpacker and unminify toolkit
Wakaru je dekompajler za JavaScript za moderni frontend. Vraća originalni kod iz bundlovanog i transpiliranog izvora.
Deobfuscate obfuscator.io, unminify and unpack bundled javascript
Un-minify Javascript code using ChatGPT
Ovaj alat koristi velike jezičke modele (kao što su ChatGPT i llama2) i druge alate za de-minifikaciju JavaScript koda. Imajte na umu da LLM-ovi ne vrše strukturalne promene - oni samo pružaju sugestije za preimenovanje promenljivih i funkcija. Glavni posao obavlja Babel na nivou AST kako bi se osiguralo da kod ostane 1-1 ekvivalentan.
Korišćenje LLM-ova za reverznu minifikaciju imena promenljivih u JavaScript-u
Koristite
console.log()
;
Pronađite povratnu vrednost na kraju i promenite je u
console.log(<packerReturnVariable>);
tako da deobfuscated js bude prikazan umesto izvršenja.Zatim, nalepite modifikovani (i još uvek obfuskirani) js u https://jsconsole.com/ da biste videli deobfuscated js zabeležen u konzoli.
Na kraju, nalepite deobfuscated izlaz u https://prettier.io/playground/ da biste ga ulepšali za analizu.
Napomena: Ako i dalje vidite upakovan (ali različit) js, možda je rekurzivno upakovan. Ponovite proces.
Reference
Alati
Manje Korišćene Reference
Last updated