Source code Review / SAST Tools
Leiding en & Lys van gereedskap
Multi-Taal Gereedskap
Daar is 'n gratis pakket om PRs te oorsien.
Dit is 'n Open Source gereedskap.
Ondersteunde Tale
Kategorie | Tale |
---|---|
GA | C# · Go · Java · JavaScript · JSX · JSON · PHP · Python · Ruby · Scala · Terraform · TypeScript · TSX |
Beta | Kotlin · Rust |
Experimental | Bash · C · C++ · Clojure · Dart · Dockerfile · Elixir · HTML · Julia · Jsonnet · Lisp · |
Vinnige Begin
Jy kan ook die semgrep VSCode-uitbreiding gebruik om die bevindinge binne VSCode te kry.
Daar is 'n installeerbare gratis weergawe.
Vinnige 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 (skep die kodeboom) sodat die navrae later daaroor uitgevoer kan word.
Jy kan codeql toelaat om outomaties die taal van die bewaarplek te identifiseer en die databasis te skep
Dit sal gewoonlik 'n fout veroorsaak wat sê dat meer as een taal gespesifiseer was (of outomaties opgespoor is). Kyk na die volgende opsies om dit te 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 - Analiseer die kode
Nou is dit uiteindelik tyd om die kode te analiseer
Onthou dat as jy verskeie tale gebruik het, 'n DB per taal sou geskep gewees het in die pad wat jy gespesifiseer het.
Vinnige Begin - Geskript
Jy kan die bevindinge visualiseer op https://microsoft.github.io/sarif-web-component/ of deur die gebruik van 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 daarna kan jy enige lêers kies en op Right Click
-> CodeQL: Run Queries in Selected Files
klik.
Daar is 'n installeerbare gratis weergawe.
Vinnige Begin
Jy kan ook die snyk VSCode-uitbreiding gebruik om bevindinge binne VSCode te kry.
Dit is Oopbron, maar lyk ongeag.
Ondersteunde Tale
Java (Maven en Android), Kotlin (Android), Swift (iOS), .NET Volledige Raamwerk, C#, en Javascript (Node.js).
Vinnige Begin
Gratis vir openbare repos.
NodeJS
yarn
pnpm
nodejsscan: Statische 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-biblioteekweergawes met bekende kwesbaarhede op te spoor.
Electron
electronegativity: Dit is 'n instrument om wanopsetlikhede en sekuriteitsantipatrone in Electron-gebaseerde toepassings te identifiseer.
Python
Bandit: Bandit is 'n instrument wat ontwerp is om algemene sekuriteitskwessies in Python-kode te vind. Om dit te doen, verwerk Bandit elke lêer, bou 'n AST daarvan, en hardloop toepaslike invoegtoepassings teen die AST-node. Sodra Bandit klaar is met die skandering van al die lêers, genereer dit 'n verslag.
veiligheid: Safety toets Python afhanklikhede vir bekende sekuriteitskwessies en stel die regte regstellings vir opgespoorde kwessies voor. Safety kan op ontwikkelaar rekenaars, in CI/CD pyplyne en op produksie stelsels uitgevoer word.
Pyt: Nie onderhou nie.
.NET
ROES
Rust is 'n veilige, mededingende programmeertaal wat geskep is deur Mozilla. Dit is baie gewild vir sy sterkte en betroubaarheid.
Java
FindBugs
FindBugs is 'n statiese bronanalise-instrument wat gebruik kan word om Java-bronkode te vind. Dit kan potensiële programmeerfoute, geheuelekasies en stileringsprobleme identifiseer.
PMD
PMD is 'n bronkode-analise-instrument wat gebruik kan word om potensiële programmeerprobleme in Java-bronkode te identifiseer. Dit kan help om bronkode te verbeter deur die identifisering van sleutelareas vir verbetering.
Checkstyle
Checkstyle is 'n raamwerk vir die implementering van statiese kode-analise om te verseker dat die Java-bronkode voldoen aan 'n spesifieke kodekonvensie. Dit kan help om konsistensie in die kodebasis te handhaaf en om potensiële programmeerfoute te verminder.
Taak | Opdrag |
---|---|
Voer Jar uit | java -jar [jar] |
Ontpak 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 van Jar | zip -d [jar] [lêer om te verwyder] |
Ontkompilieer klas | procyon -o . [pad na klas] |
Ontkompilieer Jar | procyon -jar [jar] -o [uitvoer gids] |
Kompilieer klas | javac [pad na .java lêer] |
Gaan
PHP
Wordpress Inproppe
https://www.pluginvulnerabilities.com/plugin-security-checker/
Solidity
JavaScript
Ontdekking
Burp:
Spider en ontdek inhoud
Sitemap > filter
Sitemap > klik met regterknoppie op domein > Betrokkenheidstools > Vind skripte
waybackurls <domein> |grep -i "\.js" |sort -u
Statische Analise
Ontminify/Verfraai
Sien ook sommige van die gereedskappe genoem in 'Deobfuscate/Unpack' hieronder.
Deobfuscate/Unpack
Nota: Dit mag dalk nie moontlik wees om heeltemal te deobfuscate nie.
Vind en gebruik .map-lêers:
As die .map-lêers blootgestel word, kan hulle gebruik word om maklik te deobfuscate.
Gewoonlik map foo.js.map na foo.js. Soek handmatig daarna.
Gebruik JS Miner om daarna te soek.
Maak seker dat 'n aktiewe skandering uitgevoer word.
Lees 'Wenke/Aantekeninge'
Indien 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 opsies-knoppie langs die "Nicify JavaScript" knoppie, en skakel "Infer types" af om die kode nie met kommentaar te oorlaai nie.
Maak seker dat jy geen leë lyne voor die skripsie los nie, aangesien dit die deobfuscation-proses kan beïnvloed en onakkurate resultate kan gee.
Vir 'n paar meer moderne alternatiewe vir JSNice, kan jy na die volgende kyk:
Javascript-dekompiler, unpacker en unminify-gereedskap
Wakaru is die Javascript-dekompiler vir moderne front-end. 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 gereedskappe om Javascript-kode te un-minify. Let daarop dat LLM's geen strukturele veranderinge aanbring nie - hulle verskaf net wenke om veranderlikes en funksies te hernoem. Die swaar ligging word deur Babel op AST-vlak gedoen om te verseker dat die kode 1-1-ekwivalent bly.
Gebruik van LLM's om JavaScript-veranderlike naamverkleining om te keer
Gebruik
console.log()
;
Vind die terugvoerwaarde aan die einde en verander dit na
console.log(<packerReturnVariable>);
sodat die deobfuscated js afgedruk word in plaas van uitgevoer te word.Plak dan die gewysigde (en steeds geobfuskeerde) js in https://jsconsole.com/ om die deobfuscated js gelog na die konsole te sien.
Plak uiteindelik die deobfuscated uitset in https://prettier.io/playground/ om dit te verfraai vir analise.
Nota: As jy steeds verpak (maar verskillende) js sien, kan dit herhaaldelik verpak wees. Herhaal die proses.
Verwysings
Gereedskappe
Minder Gebruikte Verwysings
Last updated