Source code Review / SAST Tools
Mwongozo na & Orodha ya zana
Zana za Lugha Nyingi
Kuna mfuko wa bure wa kupitia PRs.
Ni zana ya chanzo wazi.
Lugha Zinazoungwa Mkono
Jamii | Lugha |
---|---|
GA | C# · Go · Java · JavaScript · JSX · JSON · PHP · Python · Ruby · Scala · Terraform · TypeScript · TSX |
Beta | Kotlin · Rust |
Kielelezo | Bash · C · C++ · Clojure · Dart · Dockerfile · Elixir · HTML · Julia · Jsonnet · Lisp · |
Kuanza Haraka
Unaweza pia kutumia Kifaa cha Uzalishaji wa VSCode cha semgrep kupata matokeo ndani ya VSCode.
Kuna toleo huru linaloweza kusakinishwa.
Kuanza Haraka
CodeQL
Kuna toleo la bure linaloweza kusakinishwa lakini kulingana na leseni unaweza kutumia toleo la bure la CodeQL katika miradi ya chanzo wazi tu.
Sakinisha
Kuanza Haraka - Andaa database
Jambo la kwanza unalohitaji kufanya ni kuandaa database (umba mti wa nambari) ili baadaye maswali yaweze kutekelezwa juu yake.
Unaweza kuruhusu codeql kutambua lugha ya repo kiotomatiki na kuunda database
Hii kawaida itasababisha kosa linalosema kwamba zaidi ya lugha moja ilitajwa (au ikagunduliwa moja kwa moja). Angalia chaguo zifuatazo kusahihisha hili!
Unaweza kufanya hivi kwa mkono ukionyesha repo na lugha (orodha ya lugha)
Ikiwa repo yako inatumia lugha zaidi ya 1, unaweza pia kuunda DB 1 kwa kila lugha ikionyesha kila lugha.
Unaweza pia kuruhusu
codeql
kutambua lugha zote kwa niaba yako na kuunda DB kwa kila lugha. Unahitaji kumpa GITHUB_TOKEN.
Anza Haraka - Tathmini nambari
Sasa ni wakati wa mwisho wa kuchambua nambari
Kumbuka kwamba ikiwa ulitumia lugha kadhaa, DB kwa kila lugha ingekuwa imeundwa katika njia uliyotaja.
Kuanza Haraka - Kimeandikwa
Unaweza kuona matokeo kwenye https://microsoft.github.io/sarif-web-component/ au kutumia kifaa cha VSCode SARIF viewer.
Unaweza pia kutumia kifaa cha VSCode kupata matokeo ndani ya VSCode. Bado utahitaji kuunda database kwa mkono, lakini baadaye unaweza kuchagua faili yoyote na bonyeza Right Click
-> CodeQL: Run Queries in Selected Files
Kuna toleo la bure linaloweza kusakinishwa.
Kuanza Haraka
Unaweza pia kutumia snyk VSCode Extension kupata matokeo ndani ya VSCode.
Ni Chanzo Huru, lakini inaonekana haijatunzwa.
Lugha Zinazoungwa mkono
Java (Maven na Android), Kotlin (Android), Swift (iOS), .NET Full Framework, C#, na Javascript (Node.js).
Kuanza Haraka
Bure kwa repos za umma.
NodeJS
yarn
pnpm
nodejsscan: Kijikagua msimbo wa usalama wa statiki (SAST) kwa maombi ya Node.js yaliyotumia libsast na semgrep.
RetireJS: Lengo la Retire.js ni kukusaidia kugundua matumizi ya toleo la maktaba ya JS lenye mapungufu yanayojulikana.
Electron
electronegativity: Ni chombo cha kutambua mipangilio isiyo sahihi na mifano ya usalama katika programu zinazotumia Electron.
Python
Bandit: Bandit ni chombo kilichoundwa kwa lengo la kutambua masuala ya kawaida ya usalama katika nambari za Python. Ili kufanya hivyo, Bandit huprocess kila faili, hujenga AST kutoka kwake, na hutekeleza programu husika dhidi ya nodi za AST. Mara Bandit inapomaliza kutafuta faili zote, inazalisha ripoti.
usalama: Usalama hufanya ukaguzi wa mahitaji ya Python kwa mapungufu ya usalama yanayojulikana na kupendekeza marekebisho sahihi kwa mapungufu yaliyogunduliwa. Usalama inaweza kukimbia kwenye mashine za waendelezaji, kwenye mifumo ya CI/CD na kwenye mifumo ya uzalishaji.
Pyt: Haijasimamiwa.
.NET
RUST
RUST
RUST ni lugha ya programu ya kisasa inayojulikana kwa usalama wake na utendaji wake wa haraka. Ni chaguo bora kwa maendeleo ya zana za usalama na upimaji wa usalama.
Java
FindBugs
FindBugs ni chombo cha kupima ubora wa nambari kinachotumika kugundua kasoro za kawaida katika programu za Java.
PMD
PMD ni chombo kingine cha kupima ubora wa nambari kinachotumika kugundua makosa ya kawaida katika nambari za Java.
Checkstyle
Checkstyle ni chombo kingine cha kupima ubora wa nambari kinachotumika kuhakiki ikiwa nambari inazingatia viwango vilivyowekwa.
Kazi | Amri |
---|---|
Tekeleza Jar | java -jar [jar] |
Fungua Jar | unzip -d [directory ya matokeo] [jar] |
Unda Jar | jar -cmf META-INF/MANIFEST.MF [jar ya matokeo] * |
Base64 SHA256 | sha256sum [faili] | kata -d' ' -f1 | xxd -r -p | base64 |
Ondoa Kusaini | rm META-INF/.SF META-INF/.RSA META-INF/*.DSA |
Futa kutoka kwa Jar | zip -d [jar] [faili ya kuondoa] |
Changanya darasa | procyon -o . [njia ya darasa] |
Changanya Jar | procyon -jar [jar] -o [directory ya matokeo] |
Changanya darasa | javac [njia ya .java faili] |
Endelea
PHP
Wordpress Plugins
https://www.pluginvulnerabilities.com/plugin-security-checker/
Solidity
JavaScript
Ugunduzi
Burp:
Spider na ugundue maudhui
Sitemap > kichuja
Sitemap > bofya-kulia kwenye kikoa > Zana za Ushirikiano > Tafuta skripti
waybackurls <kikoa> |grep -i "\.js" |sort -u
Uchambuzi Statis
Unminimize/Beautify/Prettify
Angalia baadhi ya zana zilizotajwa katika 'Deobfuscate/Unpack' hapo chini pia.
Deobfuscate/Unpack
Angalia: Huenda isingewezekana kudeobfuscate kabisa.
Tafuta na tumia faili za .map:
Ikiwa faili za .map zimefunuliwa, zinaweza kutumika kudeobfuscate kwa urahisi.
Kawaida, foo.js.map inalingana na foo.js. Tafuta kwa mikono.
Tumia JS Miner kuzitafuta.
Hakikisha uchanganuzi wa moja kwa moja unafanywa.
Soma 'Vidokezo/Maelezo'
Ikiwa zimepatikana, tumia Maximize kudeobfuscate.
Bila faili za .map, jaribu JSnice:
Vidokezo:
Ikiwa unatumia jsnice.org, bofya kitufe cha chaguo karibu na kitufe cha "Nicify JavaScript", na batilisha "Infer types" ili kupunguza kuchafua kwa namna ya maoni kwenye msimbo.
Hakikisha hauachi mistari tupu kabla ya skripti, kwani inaweza kuathiri mchakato wa kudeobfuscate na kutoa matokeo yasiyo sahihi.
Kwa baadhi ya mbadala wa kisasa zaidi kwa JSNice, unaweza kutaka kutazama yafuatayo:
Decompiler ya Javascript, unpacker na zana ya unminify
Wakaru ni decompiler ya Javascript kwa mbele ya kisasa. Inarudisha msimbo halisi kutoka chanzo kilichobebwa na kubadilishwa.
Deobfuscate obfuscator.io, unminify na unpack javascript iliyobebwa
Un-minify msimbo wa Javascript kwa kutumia ChatGPT
Zana hii hutumia mifano mikubwa ya lugha (kama ChatGPT & llama2) na zana nyingine kudeobfuscate msimbo wa Javascript. Tafadhali kumbuka kuwa LLMs hazifanyi mabadiliko yoyote ya kimuundo - zinatoa viashiria vya kubadilisha majina ya pembejeo na kazi. Kazi kubwa inafanywa na Babel kwenye kiwango cha AST ili kuhakikisha msimbo unabaki sawa 1-1.
Kutumia LLMs kubadilisha majina ya pembejeo ya Javascript vilivyominify
Tumia
console.log()
;
Tafuta thamani ya kurudi mwishoni na ibadilishe kuwa
console.log(<packerReturnVariable>);
ili msimbo uliokudeobfuscate uchapishwe badala ya kutekelezwa.Kisha, bandika msimbo uliobadilishwa (na bado umefichwa) kwenye https://jsconsole.com/ kuona msimbo uliokudeobfuscate ukiandikwa kwenye konsoli.
Hatimaye, bandika pato lililokudeobfuscate kwenye https://prettier.io/playground/ ili kuupendezesha kwa uchambuzi.
Angalia: Ikiwa bado unaona msimbo uliobebwa (lakini tofauti), huenda umepakiwa kwa njia ya kurudiarudia. Rudia mchakato.
Marejeo
Zana
Marejeo Yanayotumiwa Kidogo
Last updated