Source code Review / SAST Tools
Guida e & Elenco degli strumenti
Strumenti Multi-Lingua
C'è un pacchetto gratuito per la revisione dei PR.
È uno strumento Open Source.
Lingue Supportate
Categoria | Lingue |
---|---|
GA | C# · Go · Java · JavaScript · JSX · JSON · PHP · Python · Ruby · Scala · Terraform · TypeScript · TSX |
Beta | Kotlin · Rust |
Sperimentale | Bash · C · C++ · Clojure · Dart · Dockerfile · Elixir · HTML · Julia · Jsonnet · Lisp · |
Avvio Veloce
Puoi anche utilizzare l'estensione VSCode semgrep per ottenere i risultati all'interno di VSCode.
C'è una versione gratuita installabile.
Avvio rapido
CodeQL
C'è una versione gratuita installabile ma secondo la licenza puoi utilizzare solo la versione gratuita di CodeQL nei progetti Open Source.
Installazione
Avvio rapido - Prepara il database
La prima cosa da fare è preparare il database (creare l'albero del codice) in modo che successivamente le query possano essere eseguite su di esso.
Puoi permettere a codeql di identificare automaticamente il linguaggio del repository e creare il database
Questo di solito provoca un errore dicendo che sono stati specificati più di un linguaggio (o rilevati automaticamente). Controlla le opzioni successive per risolvere questo problema!
Puoi fare questo indicando manualmente il repo e il linguaggio (elenco dei linguaggi)
Se il tuo repository sta utilizzando più di 1 linguaggio, puoi anche creare 1 DB per ogni linguaggio indicando ciascun linguaggio.
È anche possibile consentire a
codeql
di identificare tutti i linguaggi per te e creare un database per ogni linguaggio. È necessario fornire un GITHUB_TOKEN.
Avvio rapido - Analizza il codice
Ora è finalmente il momento di analizzare il codice
Ricorda che se hai utilizzato diversi linguaggi, un DB per linguaggio sarà stato creato nel percorso specificato.
Avvio rapido - Scriptato
Puoi visualizzare le scoperte su https://microsoft.github.io/sarif-web-component/ o utilizzando l'estensione di VSCode SARIF viewer.
Puoi anche utilizzare l'estensione di VSCode per ottenere le scoperte all'interno di VSCode. Dovrai comunque creare manualmente un database, ma poi potrai selezionare qualsiasi file e fare clic su Fare clic destro
-> CodeQL: Esegui query nei file selezionati
C'è una versione gratuita installabile.
Avvio rapido
Puoi anche utilizzare l'estensione VSCode di snyk per ottenere risultati all'interno di VSCode.
È Open Source, ma sembra non mantenuto.
Lingue supportate
Java (Maven e Android), Kotlin (Android), Swift (iOS), .NET Full Framework, C# e Javascript (Node.js).
Inizio rapido
Gratuito per i repository pubblici.
NodeJS
yarn
pnpm
nodejsscan: Scanner statico di codice di sicurezza (SAST) per le applicazioni Node.js alimentato da libsast e semgrep.
RetireJS: L'obiettivo di Retire.js è aiutarti a rilevare l'uso di versioni di librerie JS con vulnerabilità conosciute.
Electron
electronegativity: È uno strumento per identificare configurazioni errate e anti-pattern di sicurezza nelle applicazioni basate su Electron.
Python
Bandit: Bandit è uno strumento progettato per trovare problemi di sicurezza comuni nel codice Python. Per fare ciò, Bandit elabora ciascun file, costruisce un AST da esso e esegue i plugin appropriati contro i nodi AST. Una volta completata la scansione di tutti i file, Bandit genera un report.
safety: Safety controlla le dipendenze Python per le vulnerabilità di sicurezza conosciute e suggerisce le correzioni adeguate per le vulnerabilità rilevate. Safety può essere eseguito sulle macchine degli sviluppatori, nelle pipeline CI/CD e sui sistemi di produzione.
Pyt: Non mantenuto.
.NET
RUST
Java
Java è un linguaggio di programmazione ad alto livello ampiamente utilizzato per lo sviluppo di applicazioni web e software. È noto per la sua portabilità e la sua capacità di eseguire su diverse piattaforme senza dover essere ricompilato. La sua sintassi è simile a C++, rendendolo familiare a molti sviluppatori.
Compito | Comando |
---|---|
Esegui Jar | java -jar [jar] |
Decomprimi Jar | unzip -d [directory di output] [jar] |
Crea Jar | jar -cmf META-INF/MANIFEST.MF [jar di output] * |
Base64 SHA256 | sha256sum [file] | cut -d' ' -f1 | xxd -r -p | base64 |
Rimuovi Firma | rm META-INF/.SF META-INF/.RSA META-INF/*.DSA |
Elimina da Jar | zip -d [jar] [file da rimuovere] |
Decompila classe | procyon -o . [percorso della classe] |
Decompila Jar | procyon -jar [jar] -o [directory di output] |
Compila classe | javac [percorso del file .java] |
Vai
PHP
Plugin Wordpress
https://www.pluginvulnerabilities.com/plugin-security-checker/
Solidity
JavaScript
Scoperta
Burp:
Spider e scopri contenuti
Sitemap > filtro
Sitemap > clic destro sul dominio > Strumenti di coinvolgimento > Trova script
waybackurls <dominio> |grep -i "\.js" |sort -u
Analisi Statica
De-minimizzare/Abbellire/Prettify
Vedi anche alcuni degli strumenti menzionati in 'Deobfuscate/Unpack' di seguito.
Deobfuscate/Unpack
Nota: Potrebbe non essere possibile deobfuscare completamente.
Trova e usa i file .map:
Se i file .map sono esposti, possono essere utilizzati per deobfuscare facilmente.
Comunemente, foo.js.map mappa a foo.js. Cerca manualmente.
Usa JS Miner per cercarli.
Assicurati di condurre una scansione attiva.
Leggi 'Suggerimenti/Note'
Se trovati, usa Maximize per deobfuscare.
Senza file .map, prova JSnice:
Riferimenti: http://jsnice.org/ & https://www.npmjs.com/package/jsnice
Suggerimenti:
Se usi jsnice.org, fai clic sul pulsante delle opzioni accanto al pulsante "Nicify JavaScript" e deseleziona "Infer types" per ridurre l'ingombro del codice con commenti.
Assicurati di non lasciare linee vuote prima dello script, poiché potrebbe influenzare il processo di deobfuscation e fornire risultati inaccurati.
Per alcune alternative più moderne a JSNice, potresti voler dare un'occhiata ai seguenti:
Decompilatore Javascript, unpacker e toolkit unminify
Wakaru è il decompilatore Javascript per il frontend moderno. Riporta il codice originale da una sorgente raggruppata e trasportata.
Deobfuscate obfuscator.io, unminify e unpack javascript raggruppati
Un-minify del codice Javascript utilizzando ChatGPT
Questo strumento utilizza modelli di lingua ampi (come ChatGPT & llama2) e altri strumenti per un-minify del codice Javascript. Nota che LLM non apporta alcuna modifica strutturale: forniscono solo suggerimenti per rinominare variabili e funzioni. Il lavoro pesante è fatto da Babel a livello di AST per garantire che il codice rimanga equivalente 1-1.
Utilizzo di LLM per invertire la minificazione dei nomi delle variabili Javascript
Usa
console.log()
;
Trova il valore di ritorno alla fine e cambialo in
console.log(<variabileRitornoPacker>);
in modo che il js deobfuscated venga stampato anziché eseguito.Quindi, incolla il js modificato (ancora oscurato) in https://jsconsole.com/ per vedere il js deobfuscated registrato nella console.
Infine, incolla l'output deobfuscated in https://prettier.io/playground/ per abbellirlo per l'analisi.
Nota: Se stai ancora vedendo js impacchettato (ma diverso), potrebbe essere impacchettato in modo ricorsivo. Ripeti il processo.
Riferimenti
Strumenti
Riferimenti Meno Usati
Last updated