Source code Review / SAST Tools
Καθοδήγηση και Λίστες εργαλείων
Εργαλεία Πολλαπλών Γλωσσών
Υπάρχει ένα δωρεάν πακέτο για αναθεώρηση PRs.
Είναι ένα εργαλείο Ανοικτού Κώδικα.
Υποστηριζόμενες Γλώσσες
Κατηγορία | Γλώσσες |
---|---|
GA | C# · Go · Java · JavaScript · JSX · JSON · PHP · Python · Ruby · Scala · Terraform · TypeScript · TSX |
Beta | Kotlin · Rust |
Πειραματικό | Bash · C · C++ · Clojure · Dart · Dockerfile · Elixir · HTML · Julia · Jsonnet · Lisp · |
Γρήγορη Έναρξη
Μπορείτε επίσης να χρησιμοποιήσετε το επέκταση VSCode του semgrep για να λάβετε τα ευρήματα μέσα στο VSCode.
Υπάρχει μια εγκατάσταση δωρεάν έκδοση.
Γρήγορη Έναρξη
CodeQL
Υπάρχει μια εγκατεστημένη δωρεάν έκδοση αλλά σύμφωνα με την άδεια χρήσης μπορείτε να χρησιμοποιήσετε τη δωρεάν έκδοση του CodeQL μόνο σε έργα Ανοικτού Κώδικα.
Εγκατάσταση
Γρήγορη εκκίνηση - Προετοιμασία της βάσης δεδομένων
Το πρώτο πράγμα που πρέπει να κάνετε είναι να προετοιμάσετε τη βάση δεδομένων (δημιουργία του δέντρου κώδικα) ώστε αργότερα να εκτελούνται οι ερωτήσεις πάνω σε αυτήν.
Μπορείτε να επιτρέψετε στο codeql να αναγνωρίσει αυτόματα τη γλώσσα του αποθετηρίου και να δημιουργήσει τη βάση δεδομένων
Αυτό συνήθως θα προκαλέσει ένα σφάλμα λέγοντας ότι καθορίστηκαν περισσότερες από μία γλώσσες (ή ανιχνεύθηκαν αυτόματα). Ελέγξτε τις επόμενες επιλογές για να διορθώσετε αυτό!
Μπορείτε να το κάνετε χειροκίνητα δείχνοντας το αποθετήριο και τη γλώσσα (λίστα γλωσσών)
Εάν το αποθετήριό σας χρησιμοποιεί περισσότερες από 1 γλώσσες, μπορείτε επίσης να δημιουργήσετε 1 βάση δεδομένων ανά γλώσσα προσδιορίζοντας κάθε γλώσσα.
Μπορείτε επίσης να επιτρέψετε στο
codeql
να αναγνωρίσει όλες τις γλώσσεις για εσάς και να δημιουργήσει μια βάση δεδομένων ανά γλώσσα. Πρέπει να του δώσετε ένα GITHUB_TOKEN.
Γρήγορη Έναρξη - Ανάλυση του κώδικα
Τώρα είναι τελικά η ώρα να αναλύσετε τον κώδικα
Θυμηθείτε ότι αν χρησιμοποιήσατε πολλές γλώσσες, ένας βάση δεδομένων ανά γλώσσα θα έχει δημιουργηθεί στη διαδρομή που καθορίσατε.
Γρήγορη Έναρξη - Σεναριοποιημένο
Μπορείτε να οπτικοποιήσετε τα ευρήματα στο https://microsoft.github.io/sarif-web-component/ ή χρησιμοποιώντας την επέκταση του VSCode SARIF viewer.
Μπορείτε επίσης να χρησιμοποιήσετε την επέκταση του VSCode για να λάβετε τα ευρήματα μέσα στο VSCode. Θα πρέπει ακόμα να δημιουργήσετε μια βάση δεδομένων χειροκίνητα, αλλά στη συνέχεια μπορείτε να επιλέξετε οποιαδήποτε αρχεία και να κάνετε κλικ στο Right Click
-> CodeQL: Run Queries in Selected Files
Υπάρχει μια εγκατεστημένη δωρεάν έκδοση.
Γρήγορη Έναρξη
Μπορείτε επίσης να χρησιμοποιήσετε το επέκταση του snyk για το VSCode για να λάβετε ευρήματα μέσα στο VSCode.
Είναι Ανοιχτού Κώδικα, αλλά φαίνεται ανενημέρωτο.
Υποστηριζόμενες Γλώσσες
Java (Maven και Android), Kotlin (Android), Swift (iOS), .NET Full Framework, C# και Javascript (Node.js).
Γρήγορη Έναρξη
Δωρεάν για δημόσια αποθετήρια.
NodeJS
yarn
pnpm
nodejsscan: Στατικός σαρωτής κώδικα ασφάλειας (SAST) για εφαρμογές Node.js με την υποστήριξη των libsast και semgrep.
RetireJS: Ο στόχος του Retire.js είναι να σας βοηθήσει να ανιχνεύσετε τη χρήση εκδόσεων βιβλιοθηκών JS με γνωστές ευπαθείες.
Electron
electronegativity: Είναι ένα εργαλείο για την αναγνώριση μη ρυθμισμένων παραμέτρων και αντι-προτύπων ασφάλειας σε εφαρμογές που βασίζονται σε Electron.
Python
Bandit: Το Bandit είναι ένα εργαλείο σχεδιασμένο για την εντοπισμό κοινών θεμάτων ασφάλειας στον κώδικα Python. Για να το επιτύχει αυτό, το Bandit επεξεργάζεται κάθε αρχείο, δημιουργεί ένα AST από αυτό και εκτελεί τα κατάλληλα πρόσθετα εναντίον των κόμβων του AST. Μόλις το Bandit ολοκληρώσει τη σάρωση όλων των αρχείων, δημιουργεί έναν αναφορά.
safety: Το safety ελέγχει τις εξαρτήσεις Python για γνωστές ευπάθειες ασφάλειας και προτείνει τις κατάλληλες διορθώσεις για τις ευπάθειες που εντοπίζονται. Το safety μπορεί να τρέχει σε μηχανές ανάπτυξης, σε αγωγούς CI/CD και σε συστήματα παραγωγής.
Pyt: Μη συντηρούμενο.
.NET
RUST
Java
FindBugs
FindBugs είναι ένα εργαλείο εύρεσης σφαλμάτων σε κώδικα Java. Ελέγχει τον κώδικα για συνήθη λάθη και προβλήματα ασφάλειας.
Για να χρησιμοποιήσετε το FindBugs, απλά εκτελέστε το εργαλείο στον κώδικά σας και εξετάστε τα αποτελέσματα για πιθανά προβλήματα.
Εργασία | Εντολή |
---|---|
Εκτέλεση Jar | java -jar [jar] |
Αποσυμπίεση Jar | unzip -d [κατάλογος εξόδου] [jar] |
Δημιουργία Jar | jar -cmf META-INF/MANIFEST.MF [output jar] * |
Base64 SHA256 | sha256sum [αρχείο] | cut -d' ' -f1 | xxd -r -p | base64 |
Αφαίρεση Υπογραφής | rm META-INF/.SF META-INF/.RSA META-INF/*.DSA |
Διαγραφή από το Jar | zip -d [jar] [αρχείο προς αφαίρεση] |
Αποκωδικοποίηση κλάσης | procyon -o . [διαδρομή προς την κλάση] |
Αποκωδικοποίηση Jar | procyon -jar [jar] -o [κατάλογος εξόδου] |
Συναρμολόγηση κλάσης | javac [διαδρομή προς το αρχείο .java] |
Πήγαινε
PHP
Wordpress Plugins
https://www.pluginvulnerabilities.com/plugin-security-checker/
Solidity
JavaScript
Ανακάλυψη
Burp:
Αράχνη και ανακάλυψη περιεχομένου
Χάρτης ιστότοπου > φίλτρο
Χάρτης ιστότοπου > δεξί κλικ στον τομέα > Εργαλεία συμμετοχής > Εύρεση σεναρίων
waybackurls <domain> |grep -i "\.js" |sort -u
Στατική Ανάλυση
Αναίρεση Ελάχιστης/Ομορφοποίηση/Καλλωπισμός
Δείτε κάποια από τα εργαλεία που αναφέρονται παρακάτω στο 'Αναίρεση Απόκρυψης/Ξεκλείδωμα'.
Απόκρυψη/Ξεκλείδωμα
Σημείωση: Ενδέχεται να μην είναι δυνατή η πλήρης απόκρυψη.
Βρείτε και χρησιμοποιήστε αρχεία .map:
Εάν τα αρχεία .map είναι εκτεθειμένα, μπορούν να χρησιμοποιηθούν για εύκολη απόκρυψη.
Συνήθως, το foo.js.map αντιστοιχεί στο foo.js. Αναζητήστε τα χειροκίνητα.
Χρησιμοποιήστε το JS Miner για να τα βρείτε.
Βεβαιωθείτε ότι πραγματοποιείται ενεργός σάρωση.
Διαβάστε 'Συμβουλές/Σημειώσεις'
Εάν βρεθούν, χρησιμοποιήστε το Maximize για απόκρυψη.
Χωρίς αρχεία .map, δοκιμάστε το JSnice:
Συμβουλές:
Εάν χρησιμοποιείτε το jsnice.org, κάντε κλικ στο κουμπί επιλογών δίπλα στο κουμπί "Nicify JavaScript" και καταργήστε την επιλογή "Infer types" για να μειώσετε την ανάκαμψη του κώδικα με σχόλια.
Βεβαιωθείτε ότι δεν αφήνετε κενές γραμμές πριν από το σενάριο, καθώς μπορεί να επηρεάσει τη διαδικασία απόκρυψης και να δώσει ανακριβή αποτελέσματα.
Για μερικές πιο σύγχρονες εναλλακτικές λύσεις στο JSNice, μπορείτε να κοιτάξετε τα παρακάτω:
Javascript decompiler, unpacker and unminify toolkit
Το Wakaru είναι το αποσυνθέτη για μοντέρνο frontend. Επαναφέρει τον αρχικό κώδικα από ένα συστοιχισμένο και μεταγλωττισμένο πηγαίο κώδικα.
Αποκρυπτογράφηση obfuscator.io, unminify και unpack συστημένο javascript
Απο-ελάχιστοποίηση κώδικα Javascript χρησιμοποιώντας το ChatGPT
Αυτό το εργαλείο χρησιμοποιεί μεγάλα μοντέλα γλώσσας (όπως το ChatGPT & llama2) και άλλα εργαλεία για την απο-ελάχιστοποίηση κώδικα Javascript. Σημειώστε ότι τα LLMs δεν πραγματοποιούν δομικές αλλαγές - παρέχουν μόνο υποδείξεις για τη μετονομασία μεταβλητών και συναρτήσεων. Η βαριά εργασία γίνεται από το Babel στο επίπεδο AST για να διασφαλίσει ότι ο κώδικας παραμένει 1-1 ισοδύναμος.
Χρήση LLMs για αντιστροφή της ελάχιστης ελάχιστης ονομασίας μεταβλητών Javascript
Χρησιμοποιήστε
console.log()
;
Βρείτε την τιμή επιστροφής στο τέλος και αλλάξτε τη σε
console.log(<packerReturnVariable>);
ώστε ο αποκρυπτογραφημένος js να εκτυπώνεται αντί να εκτελείται.Στη συνέχεια, επικολλήστε το τροποποιημένο (και ακόμα αποκρυπτογραφημένο) js στο https://jsconsole.com/ για να δείτε το αποκρυπτογραφημένο js να καταγράφεται στην κονσόλα.
Τέλος, επικολλήστε την αποκρυπτογραφημένη έξοδο στο https://prettier.io/playground/ για να την ομορφώσετε για ανάλυση.
Σημείωση: Εάν εξακολουθείτε να βλέπετε συμπιεσμένο (αλλά διαφορετικό) js, ενδέχεται να είναι αναδρομικά συμπιεσμένο. Επαναλάβετε τη διαδικασία.
Αναφορές
Εργαλεία
Λιγότερο Χρησιμοποιούμενες Αναφορές
Last updated