Source code Review / SAST Tools
Guidance and & Lists of tools
Multi-Language Tools
यहाँ PRs की समीक्षा करने के लिए एक मुफ्त पैकेज है।
यह एक ओपन सोर्स टूल है।
Supported Languages
Category | Languages |
---|---|
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 · |
Quick Start
आप semgrep VSCode Extension का उपयोग करके VSCode के अंदर निष्कर्ष प्राप्त कर सकते हैं।
एक इंस्टॉल करने योग्य मुफ्त संस्करण है।
त्वरित प्रारंभ
CodeQL
एक स्थापित करने योग्य मुफ्त संस्करण है लेकिन लाइसेंस के अनुसार आप केवल ओपन सोर्स परियोजनाओं में मुफ्त codeQL संस्करण का उपयोग कर सकते हैं।
Install
Quick Start - डेटाबेस तैयार करें
आपको जो पहली चीज़ करने की ज़रूरत है वह है डेटाबेस तैयार करना (कोड ट्री बनाना) ताकि बाद में उस पर क्वेरी चलाई जा सके।
आप codeql को अनुमति दे सकते हैं कि वह स्वचालित रूप से रेपो की भाषा की पहचान करे और डेटाबेस बनाए
यह आमतौर पर एक त्रुटि को ट्रिगर करेगा जो कहता है कि एक से अधिक भाषाएँ निर्दिष्ट की गई थीं (या स्वचालित रूप से पहचान ली गई थीं)। इससे ठीक करने के लिए अगले विकल्पों की जाँच करें!
आप इसे हाथ से निर्दिष्ट करके repo और भाषा कर सकते हैं (भाषाओं की सूची)
यदि आपका रिपॉजिटरी 1 से अधिक भाषाओं का उपयोग कर रहा है, तो आप प्रत्येक भाषा को इंगित करते हुए प्रत्येक भाषा के लिए 1 DB भी बना सकते हैं।
आप
codeql
को सभी भाषाओं की पहचान करने और प्रत्येक भाषा के लिए एक DB बनाने की अनुमति भी दे सकते हैं। आपको इसे एक GITHUB_TOKEN देना होगा।
त्वरित प्रारंभ - कोड का विश्लेषण करें
अब अंततः कोड का विश्लेषण करने का समय है
याद रखें कि यदि आपने कई भाषाओं का उपयोग किया है, तो प्रत्येक भाषा के लिए एक DB उस पथ में बनाया गया होगा जिसे आपने निर्दिष्ट किया था।
त्वरित प्रारंभ - स्क्रिप्टेड
आप निष्कर्षों को https://microsoft.github.io/sarif-web-component/ में या VSCode एक्सटेंशन SARIF viewer का उपयोग करके देख सकते हैं।
आप निष्कर्षों को VSCode के अंदर प्राप्त करने के लिए VSCode एक्सटेंशन का भी उपयोग कर सकते हैं। आपको अभी भी मैन्युअल रूप से एक डेटाबेस बनाना होगा, लेकिन फिर आप किसी भी फ़ाइल का चयन कर सकते हैं और Right Click
-> CodeQL: Run Queries in Selected Files
पर क्लिक कर सकते हैं।
एक स्थापनीय मुफ्त संस्करण है।
त्वरित प्रारंभ
आप snyk VSCode Extension का उपयोग करके VSCode के अंदर निष्कर्ष प्राप्त कर सकते हैं।
यह ओपन सोर्स है, लेकिन अनरक्षित लगता है।
समर्थित भाषाएँ
Java (Maven और Android), Kotlin (Android), Swift (iOS), .NET Full Framework, C#, और Javascript (Node.js)।
त्वरित प्रारंभ
सार्वजनिक रिपोजिटरी के लिए मुफ्त।
NodeJS
yarn
pnpm
nodejsscan: Node.js अनुप्रयोगों के लिए स्थैतिक सुरक्षा कोड स्कैनर (SAST) जो libsast और semgrep द्वारा संचालित है।
RetireJS: Retire.js का लक्ष्य आपको ज्ञात कमजोरियों वाले JS-लाइब्रेरी संस्करणों के उपयोग का पता लगाने में मदद करना है।
Electron
electronegativity: यह Electron-आधारित अनुप्रयोगों में गलत कॉन्फ़िगरेशन और सुरक्षा एंटी-पैटर्न की पहचान करने के लिए एक उपकरण है।
Python
Bandit: Bandit एक उपकरण है जिसे Python कोड में सामान्य सुरक्षा मुद्दों को खोजने के लिए डिज़ाइन किया गया है। ऐसा करने के लिए Bandit प्रत्येक फ़ाइल को संसाधित करता है, इससे एक AST बनाता है, और AST नोड्स के खिलाफ उपयुक्त प्लगइन्स चलाता है। एक बार जब Bandit सभी फ़ाइलों को स्कैन कर लेता है, तो यह एक रिपोर्ट उत्पन्न करता है।
safety: Safety पायथन निर्भरताओं के लिए ज्ञात सुरक्षा कमजोरियों की जांच करता है और पता की गई कमजोरियों के लिए उचित सुधारों का सुझाव देता है। Safety को डेवलपर मशीनों, CI/CD पाइपलाइनों और उत्पादन प्रणालियों पर चलाया जा सकता है।
Pyt: अनुपयुक्त।
.NET
RUST
जावा
कार्य | कमांड |
---|---|
जार निष्पादित करें | java -jar [jar] |
जार अनज़िप करें | unzip -d [output directory] [jar] |
जार बनाएं | jar -cmf META-INF/MANIFEST.MF [output jar] * |
Base64 SHA256 | sha256sum [file] | cut -d' ' -f1 | xxd -r -p | base64 |
साइनिंग हटाएं | rm META-INF/.SF META-INF/.RSA META-INF/*.DSA |
जार से हटाएं | zip -d [jar] [file to remove] |
क्लास को डिकंपाइल करें | procyon -o . [path to class] |
जार को डिकंपाइल करें | procyon -jar [jar] -o [output directory] |
क्लास को संकलित करें | javac [path to .java file] |
जाओ
PHP
Wordpress Plugins
https://www.pluginvulnerabilities.com/plugin-security-checker/
Solidity
JavaScript
Discovery
Burp:
Spider और सामग्री खोजें
Sitemap > फ़िल्टर
Sitemap > डोमेन पर राइट-क्लिक > Engagement tools > स्क्रिप्ट खोजें
waybackurls <domain> |grep -i "\.js" |sort -u
Static Analysis
Unminimize/Beautify/Prettify
'Deobfuscate/Unpack' में नीचे उल्लेखित कुछ उपकरणों को भी देखें।
Deobfuscate/Unpack
Note: पूर्ण रूप से deobfuscate करना संभव नहीं हो सकता।
.map फ़ाइलें खोजें और उपयोग करें:
यदि .map फ़ाइलें उजागर हैं, तो उन्हें आसानी से deobfuscate करने के लिए उपयोग किया जा सकता है।
सामान्यतः, foo.js.map foo.js को मैप करता है। उन्हें मैन्युअल रूप से खोजें।
JS Miner का उपयोग करके उन्हें खोजें।
सुनिश्चित करें कि सक्रिय स्कैन किया गया है।
'Tips/Notes' पढ़ें।
यदि मिल जाए, तो deobfuscate करने के लिए Maximize का उपयोग करें।
बिना .map फ़ाइलों के, JSnice का प्रयास करें:
टिप्स:
यदि jsnice.org का उपयोग कर रहे हैं, तो "Nicify JavaScript" बटन के बगल में विकल्प बटन पर क्लिक करें, और "Infer types" को अनचेक करें ताकि कोड में टिप्पणियों के साथ अव्यवस्था न हो।
सुनिश्चित करें कि आप स्क्रिप्ट से पहले कोई खाली पंक्तियाँ नहीं छोड़ते, क्योंकि यह deobfuscation प्रक्रिया को प्रभावित कर सकता है और गलत परिणाम दे सकता है।
JSNice के लिए कुछ और आधुनिक विकल्पों के लिए, आप निम्नलिखित पर देख सकते हैं:
Javascript decompiler, unpacker और unminify toolkit
Wakaru आधुनिक फ्रंटेंड के लिए Javascript decompiler है। यह एक बंडल और ट्रांसपाइल किए गए स्रोत से मूल कोड वापस लाता है।
obfuscator.io को deobfuscate करें, unminify करें और बंडल किए गए जावास्क्रिप्ट को अनपैक करें
ChatGPT का उपयोग करके Javascript कोड को un-minify करें
यह उपकरण बड़े भाषा मॉडल (जैसे ChatGPT और llama2) और अन्य उपकरणों का उपयोग करता है ताकि Javascript कोड को un-minify किया जा सके। ध्यान दें कि LLMs कोई संरचनात्मक परिवर्तन नहीं करते - वे केवल वेरिएबल और फ़ंक्शंस के नाम बदलने के लिए संकेत प्रदान करते हैं। भारी उठाने का काम Babel द्वारा AST स्तर पर किया जाता है ताकि कोड 1-1 समकक्ष बना रहे।
Javascript वेरिएबल नाम minification को उलटने के लिए LLMs का उपयोग करना
console.log()
का उपयोग करें;
अंत में लौटने वाले मान को खोजें और इसे
console.log(<packerReturnVariable>);
में बदलें ताकि deobfuscated js को निष्पादित करने के बजाय प्रिंट किया जाए।फिर, संशोधित (और अभी भी obfuscated) js को https://jsconsole.com/ में पेस्ट करें ताकि deobfuscated js को कंसोल में लॉग किया जा सके।
अंत में, विश्लेषण के लिए इसे सुंदर बनाने के लिए deobfuscated आउटपुट को https://prettier.io/playground/ में पेस्ट करें।
Note: यदि आप अभी भी पैक (लेकिन अलग) js देख रहे हैं, तो यह पुनरावृत्त रूप से पैक किया जा सकता है। प्रक्रिया को दोहराएं।
References
Tools
Less Used References
Last updated