Source code Review / SAST Tools
Riglyne en & Lyste van hulpmiddels
Meertalige Hulpmiddels
Daar is 'n gratis pakket om PRs te hersien.
Dit is 'n Open Source-hulpmiddel.
Ondersteunde Tale
Kategori | Tale |
---|---|
GA | C# · Go · Java · JavaScript · JSX · JSON · PHP · Python · Ruby · Scala · Terraform · TypeScript · TSX |
Beta | Kotlin · Rust |
Eksperimenteel | Bash · C · C++ · Clojure · Dart · Dockerfile · Elixir · HTML · Julia · Jsonnet · Lisp · |
Vinning Begin
Jy kan ook die semgrep VSCode Extension gebruik om die bevindings binne VSCode te kry.
Daar is 'n installeerbare gratis weergawe.
Vinning Begin
CodeQL
Daar is 'n installeerbare gratis weergawe maar volgens die lisensie kan jy slegs die gratis codeQL weergawe in Open Source projekte gebruik.
Installeer
Vinnige Begin - Berei die databasis voor
Die eerste ding wat jy moet doen is om die databasis voor te berei (die kodeboom te skep) sodat die navrae later daaroor uitgevoer kan word.
Jy kan codeql toelaat om outomaties die taal van die repo te identifiseer en die databasis te skep
Dit sal gewoonlik 'n fout veroorsaak wat sê dat meer as een taal gespesifiseer is (of outomaties gedetecteer is). Kontroleer die volgende opsies om dit reg te stel!
Jy kan dit handmatig aandui deur die repo en die taal (lys van tale)
As jou repo meer as 1 taal gebruik, kan jy ook 1 DB per taal skep wat elke taal aandui.
Jy kan ook
codeql
toelaat om alle tale vir jou te identifiseer en 'n DB per taal te skep. Jy moet dit 'n GITHUB_TOKEN gee.
Vinnige Begin - Ontleed die kode
Nou is dit uiteindelik tyd om die kode te ontleed
Onthou dat as jy verskeie tale gebruik het, 'n DB per taal in die pad wat jy gespesifiseer het, geskep sou gewees het.
Vinning Begin - Geskryf
Jy kan die bevindinge visualiseer in https://microsoft.github.io/sarif-web-component/ of deur die VSCode uitbreiding SARIF viewer.
Jy kan ook die VSCode uitbreiding gebruik om die bevindinge binne VSCode te kry. Jy sal steeds 'n databasis handmatig moet skep, maar dan kan jy enige lêers kies en op Regsklik
-> CodeQL: Run Queries in Selected Files
klik.
Daar is 'n installeerbare gratis weergawe.
Vinning Begin
U kan ook die snyk VSCode Extension gebruik om bevindings binne VSCode te kry.
Dit is Open Source, maar lyk onondersteun.
Gesteunde Tale
Java (Maven en Android), Kotlin (Android), Swift (iOS), .NET Full Framework, C#, en Javascript (Node.js).
Vinning Begin
Gratis vir openbare repos.
NodeJS
yarn
pnpm
nodejsscan: Statiese sekuriteitskode skandeerder (SAST) vir Node.js toepassings aangedryf deur libsast en semgrep.
RetireJS: Die doel van Retire.js is om jou te help om die gebruik van JS-biblioteek weergawes met bekende kwesbaarhede te ontdek.
Electron
electronegativity: Dit is 'n hulpmiddel om miskonfigurasies en sekuriteitsanti-patrone in Electron-gebaseerde toepassings te identifiseer.
Python
Bandit: Bandit is 'n hulpmiddel wat ontwerp is om algemene sekuriteitskwessies in Python-kode te vind. Om dit te doen, verwerk Bandit elke lêer, bou 'n AST daaruit, en voer toepaslike plugins teen die AST-knope uit. Sodra Bandit klaar is om al die lêers te skandeer, genereer dit 'n verslag.
safety: Safety kontroleer Python afhanklikhede vir bekende sekuriteitskwesies en stel die toepaslike herstelmaatreëls voor vir opgespoor kwesies. Safety kan op ontwikkelaarsmasjiene, in CI/CD pypelines en op produksiesisteme gedraai word.
Pyt: Nie onderhoude nie.
.NET
RUST
Java
Taak | Opdrag |
---|---|
Voer Jar uit | java -jar [jar] |
Unzip Jar | unzip -d [uitvoer gids] [jar] |
Skep Jar | jar -cmf META-INF/MANIFEST.MF [uitvoer jar] * |
Base64 SHA256 | sha256sum [lêer] | cut -d' ' -f1 | xxd -r -p | base64 |
Verwyder Ondertekening | rm META-INF/.SF META-INF/.RSA META-INF/*.DSA |
Verwyder uit Jar | zip -d [jar] [lêer om te verwyder] |
Decompile klas | procyon -o . [pad na klas] |
Decompile Jar | procyon -jar [jar] -o [uitvoer gids] |
Compile klas | javac [pad na .java lêer] |
Gaan
PHP
Wordpress Plugins
https://www.pluginvulnerabilities.com/plugin-security-checker/
Solidity
JavaScript
Discovery
Burp:
Spider en ontdek inhoud
Sitemap > filter
Sitemap > regsklik op domein > Betrokkenheid gereedskap > Vind skripte
waybackurls <domain> |grep -i "\.js" |sort -u
Static Analysis
Unminimize/Beautify/Prettify
Sien sommige van die gereedskap genoem in 'Deobfuscate/Unpack' hieronder ook.
Deobfuscate/Unpack
Nota: Dit mag nie moontlik wees om volledig te deobfuscate nie.
Vind en gebruik .map lêers:
As die .map lêers blootgestel is, kan hulle gebruik word om maklik te deobfuscate.
Gewoonlik, foo.js.map kaart na foo.js. Soek hulle handmatig.
Gebruik JS Miner om daarna te soek.
Verseker dat 'n aktiewe skandering uitgevoer word.
Lees 'Tips/Notes'
As gevind, gebruik Maximize om te deobfuscate.
Sonder .map lêers, probeer JSnice:
Verwysings: http://jsnice.org/ & https://www.npmjs.com/package/jsnice
Wenke:
As jy jsnice.org gebruik, klik op die opsiesknoppie langs die "Nicify JavaScript" knoppie, en deselect "Infer types" om rommel in die kode met kommentaar te verminder.
Verseker dat jy geen leë lyne voor die skrip laat nie, aangesien dit die deobfuscation proses kan beïnvloed en onakkurate resultate kan gee.
Vir 'n paar meer moderne alternatiewe tot JSNice, kan jy die volgende oorweeg:
Javascript decompiler, unpacker en unminify toolkit
Wakaru is die Javascript decompiler vir moderne frontend. Dit bring die oorspronklike kode terug van 'n gebundelde en getranspileerde bron.
Deobfuscate obfuscator.io, unminify en unpack gebundelde javascript
Un-minify Javascript kode met behulp van ChatGPT
Hierdie gereedskap gebruik groot taalmodelle (soos ChatGPT & llama2) en ander gereedskap om Javascript kode te un-minify. Let daarop dat LLMs geen strukturele veranderinge maak nie – hulle bied net leidrade om veranderlikes en funksies te hernoem. Die swaar werk word deur Babel op AST vlak gedoen om te verseker dat die kode 1-1 ekwivalent bly.
Gebruik LLMs om JavaScript veranderlike naam minification te keer
Gebruik
console.log()
;
Vind die terugkeerwaarde aan die einde en verander dit na
console.log(<packerReturnVariable>);
sodat die deobfuscated js gedruk word in plaas van uitgevoer te word.Plak dan die gewysigde (en steeds obfuscated) js in https://jsconsole.com/ om die deobfuscated js in die konsole te sien.
Laastens, plak die deobfuscated uitvoer in https://prettier.io/playground/ om dit te beautify vir analise.
Nota: As jy steeds gepakte (maar verskillende) js sien, mag dit herhalend gepak wees. Herhaal die proses.
References
Tools
Less Used References
Last updated