Source code Review / SAST Tools
Uputstva i liste alata
Alati za više jezika
Postoji besplatan paket za pregled PR-ova.
To je alat otvorenog koda.
Podržani jezici
Kategorija | Jezici |
---|---|
GA | C# · Go · Java · JavaScript · JSX · JSON · PHP · Python · Ruby · Scala · Terraform · TypeScript · TSX |
Beta | Kotlin · Rust |
Eksperimentalni | Bash · C · C++ · Clojure · Dart · Dockerfile · Elixir · HTML · Julia · Jsonnet · Lisp · |
Brzi početak
Možete takođe koristiti semgrep VSCode Extension da dobijete nalaze unutar VSCode-a.
Postoji instalabilna besplatna verzija.
Brzi početak
CodeQL
Postoji besplatna verzija koja se može instalirati, ali prema licenci možete koristiti besplatnu verziju codeQL samo u Open Source projektima.
Instaliraj
Quick Start - Pripremite bazu podataka
Prva stvar koju treba da uradite je da pripremite bazu podataka (napravite stablo koda) kako bi se kasnije upiti izvršavali nad njom.
Možete omogućiti 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 automatski otkriveno). Proverite sledeće opcije da biste to ispravili!
Možete to učiniti ručno označavajući repo i jezik (lista jezika)
Ako vaš repozitorij koristi više od 1 jezika, možete takođe kreirati 1 DB po jeziku označavajući svaki jezik.
Takođe možete omogućiti
codeql
da identifikuje sve jezike umesto vas i kreira bazu podataka po jeziku. Treba da mu date GITHUB_TOKEN.
Brzi početak - Analizirajte kod
Sada je konačno vreme da analizirate kod
Zapamtite da ako ste koristili nekoliko jezika, baza podataka po jeziku će biti kreirana u putanji koju ste naveli.
Brzi početak - 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. I dalje ćete morati ručno da kreirate bazu podataka, ali tada možete izabrati bilo koje datoteke i kliknuti na Desni Klik
-> CodeQL: Run Queries in Selected Files
Postoji instalabilna besplatna verzija.
Brzi Početak
Možete takođe koristiti snyk VSCode Extension da dobijete nalaze unutar VSCode.
To je Open Source, ali izgleda neodržavano.
Podržani jezici
Java (Maven i Android), Kotlin (Android), Swift (iOS), .NET Full Framework, C#, i Javascript (Node.js).
Brzi početak
Besplatno za javne repozitorijume.
NodeJS
yarn
pnpm
nodejsscan: Statistički skener bezbednosti koda (SAST) za Node.js aplikacije pokretan libsast i semgrep.
RetireJS: Cilj Retire.js je da vam pomogne da otkrijete korišćenje verzija JS biblioteka sa poznatim ranjivostima.
Electron
electronegativity: To je alat za identifikaciju loših konfiguracija i sigurnosnih anti-šablona 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 uradio, Bandit obrađuje svaku datoteku, gradi AST iz nje i pokreće odgovarajuće dodatke protiv AST čvorova. Kada Bandit završi sa skeniranjem svih datoteka, generiše izveštaj.
safety: Safety proverava Python zavisnosti na poznate sigurnosne ranjivosti i predlaže odgovarajuće mere za otklanjanje otkrivenih ranjivosti. Safety se može pokrenuti na razvojnim mašinama, u CI/CD procesima i na produkcionim sistemima.
Pyt: Neodržavan.
.NET
RUST
Java
Task | Command |
---|---|
Execute Jar | java -jar [jar] |
Unzip Jar | unzip -d [output directory] [jar] |
Create Jar | jar -cmf META-INF/MANIFEST.MF [output jar] * |
Base64 SHA256 | sha256sum [file] | cut -d' ' -f1 | xxd -r -p | base64 |
Remove Signing | rm META-INF/.SF META-INF/.RSA META-INF/*.DSA |
Delete from Jar | zip -d [jar] [file to remove] |
Decompile class | procyon -o . [path to class] |
Decompile Jar | procyon -jar [jar] -o [output directory] |
Compile class | javac [path to .java file] |
Idi
PHP
Wordpress Plugins
https://www.pluginvulnerabilities.com/plugin-security-checker/
Solidity
JavaScript
Discovery
Burp:
Spider 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
Static Analysis
Unminimize/Beautify/Prettify
Pogledajte neke od alata pomenutih u 'Deobfuscate/Unpack' ispod.
Deobfuscate/Unpack
Napomena: Možda neće biti moguće potpuno deobfuskovati.
Pronađite i koristite .map datoteke:
Ako su .map datoteke izložene, mogu se koristiti za lako deobfuskovanje.
Obično, foo.js.map se mapira na foo.js. Ručno ih potražite.
Koristite JS Miner da ih potražite.
Osigurajte da se aktivno skeniranje sprovodi.
Pročitajte 'Tips/Notes'
Ako se pronađu, koristite Maximize za deobfuskovanje.
Bez .map datoteka, 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 isključite "Infer types" da smanjite nered u kodu sa komentarima.
Osigurajte da ne ostavljate prazne linije pre skripte, jer to može uticati na proces deobfuskovanja i dati netačne rezultate.
Za neke modernije alternative JSNice, možda biste želeli da pogledate sledeće:
Javascript dekompajler, raspakivač i alat za unminify Wakaru je Javascript dekompajler za moderni frontend. Vraća originalni kod iz pakovanog i transpiled izvora.
Deobfuskacija obfuscator.io, unminify i raspakivanje pakovanog javascripta
Un-minify Javascript kod koristeći ChatGPT Ovaj alat koristi velike jezičke modele (poput ChatGPT i llama2) i druge alate za un-minify Javascript kod. Imajte na umu da LLM-ovi ne vrše nikakve strukturne promene – samo daju savete za preimenovanje varijabli i funkcija. Teži deo posla obavlja Babel na AST nivou kako bi se osiguralo da kod ostane 1-1 ekvivalentan.
Korišćenje LLM-ova za obrnuto minifikovanje imena varijabli u JavaScript-u
Koristite
console.log()
;
Pronađite povratnu vrednost na kraju i promenite je u
console.log(<packerReturnVariable>);
tako da se deobfuskovani js odštampa umesto da se izvrši.Zatim, nalepite modifikovani (i dalje obfuskovani) js u https://jsconsole.com/ da vidite deobfuskovani js odštampan u konzoli.
Na kraju, nalepite deobfuskovani izlaz u https://prettier.io/playground/ da ga ulepšate za analizu.
Napomena: Ako i dalje vidite pakovani (ali drugačiji) js, možda je rekurzivno pakovan. Ponovite proces.
References
Tools
Less Used References
Last updated