Source code Review / SAST Tools
मार्गदर्शन और टूल सूची
बहु-भाषा टूल
PRs की समीक्षा के लिए एक मुफ्त पैकेज है।
यह एक ओपन सोर्स टूल है।
समर्थित भाषाएं
श्रेणी | भाषाएं |
---|---|
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 · |
त्वरित प्रारंभ
आप व्यूएसकोड के अंदर फाइंडिंग्स प्राप्त करने के लिए सेमग्रेप वीएसकोड एक्सटेंशन का भी उपयोग कर सकते हैं।
एक स्थापनीय मुफ्त संस्करण भी है।
त्वरित प्रारंभ
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 Extension का उपयोग कर सकते हैं।
यह ओपन सोर्स है, लेकिन अनरक्षित लगता है।
समर्थित भाषाएँ
जावा (मेवेन और एंड्रॉइड), कोटलिन (एंड्रॉइड), स्विफ्ट (आईओएस), .नेट फुल फ्रेमवर्क, सीशार्प, और जावास्क्रिप्ट (नोड.जेएस)।
त्वरित प्रारंभ
मुफ्त सार्वजनिक रेपो के लिए।
NodeJS
yarn
पीएनपीएम
nodejsscan: नोड.जेएस एप्लिकेशन्स के लिए स्टेटिक सुरक्षा कोड स्कैनर (SAST) जो libsast और semgrep द्वारा संचालित है।
RetireJS: Retire.js का उद्देश्य आपको पता लगाने में मदद करना है कि किसी भी जानी मानी सुरक्षा समस्याओं वाले JS-लाइब्रेरी संस्करण का उपयोग किया जा रहा है।
इलेक्ट्रॉन
इलेक्ट्रोनेगेटिविटी: यह एक टूल है जो इलेक्ट्रॉन-आधारित एप्लिकेशन में मिसकॉन्फ़िगरेशन और सुरक्षा विरोधी पैटर्न्स की पहचान करने के लिए है।
पायथन
बैंडिट: बैंडिट एक टूल है जो पायथन कोड में सामान्य सुरक्षा समस्याओं को खोजने के लिए डिज़ाइन किया गया है। इसे करने के लिए बैंडिट प्रत्येक फ़ाइल को प्रोसेस करता है, इससे एक AST बनाता है, और AST नोड्स के खिलाफ उपयुक्त प्लगइन चलाता है। जब बैंडिट सभी फ़ाइलों को स्कैन करने के बाद समाप्त हो जाता है, तो यह रिपोर्ट उत्पन्न करता है।
सुरक्षा: Safety Python डिपेंडेंसी को जानी जाने वाली सुरक्षा संकटों के लिए जांच करता है और पायी गई सुरक्षा संकटों के लिए उचित सुधार सुझाता है। सुरक्षा को डेवलपर मशीनों पर, सीआई/सीडी पाइपलाइन में और उत्पादन प्रणालियों पर चलाया जा सकता है।
Pyt: अनुरक्षित नहीं है।
.NET
रस्ट
जावा
कार्य | कमांड |
---|---|
Jar चलाएं | java -jar [jar] |
Jar अनज़िप करें | unzip -d [output directory] [jar] |
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 |
Jar से हटाएं | zip -d [jar] [file to remove] |
क्लास का डिकॉम्पाइल | procyon -o . [path to class] |
Jar का डिकॉम्पाइल | 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 और content की discovery
Sitemap > filter
Sitemap > right-click domain > Engagement tools > Find scripts
waybackurls <domain> |grep -i "\.js" |sort -u
Static Analysis
Unminimize/Beautify/Prettify
'Deobfuscate/Unpack' में उल्लिखित कुछ उपकरणों को भी देखें।
Deobfuscate/Unpack
ध्यान दें: पूरी तरह से deobfuscate करना संभव नहीं हो सकता।
.map फ़ाइलें खोजें और उन्हें उपयोग करें:
यदि .map फ़ाइलें उजागर हैं, तो उन्हें आसानी से deobfuscate किया जा सकता है।
सामान्यत: foo.js.map foo.js को मैप करता है। मैन्युअली उन्हें खोजें।
उन्हें खोजने के लिए JS Miner का उपयोग करें।
सुनिश्चित करें कि सक्रिय स्कैन किया जाता है।
'Tips/Notes' पढ़ें
यदि मिल गया, तो Maximize का उपयोग करें।
.map फ़ाइलों के बिना, JSnice का प्रयास करें:
सुझाव:
jsnice.org का उपयोग करते समय, "Nicify JavaScript" बटन के बगल में विकल्प बटन पर क्लिक करें, और "Infer types" को अच्छे से नहीं चुनें ताकि कोड को टिप्पणियों से भरने से बचा जा सके।
सुनिश्चित करें कि आप स्क्रिप्ट से पहले कोई खाली पंक्तियाँ न छोड़ें, क्योंकि यह deobfuscation प्रक्रिया पर प्रभाव डाल सकता है और गलत परिणाम दे सकता है।
JSNice के कुछ और आधुनिक विकल्पों के लिए, आप निम्नलिखित को देख सकते हैं:
Javascript decompiler, unpacker and unminify toolkit
Wakaru आधुनिक फ्रंटएंड के लिए जावास्क्रिप्ट डीकंपाइलर है। यह बंडल और ट्रांसपाइल्ड स्रोत से मूल कोड लाता है।
Deobfuscate obfuscator.io, unminify and unpack bundled javascript
Un-minify Javascript code using ChatGPT
यह उपकरण बड़े भाषा मॉडल (जैसे ChatGPT और llama2) और अन्य उपकरणों का उपयोग करता है जावास्क्रिप्ट को अन-मिनिफाई करने के लिए। ध्यान दें कि LLM किसी भी संरचनात्मक परिवर्तन का कार्य नहीं करते - वे केवल चर और कार्यों के नाम को बदलने के लिए संकेत प्रदान करते हैं। भावुकता स्तर पर Babel द्वारा भाषा स्तर पर सुनिश्चित किया जाता है कि कोड 1-1 समकक्ष रहता है।
Using LLMs to reverse JavaScript variable name minification
console.log()
का उपयोग करें;
अंत में वापसी मूल्य ढूंढें और इसे
console.log(<packerReturnVariable>);
में बदलें ताकि deobfuscated js प्रिंट हो बजाय इसे क्रियान्वित किया जाने के लिए।फिर, संशोधित (और अब भी गोपनीय) js को https://jsconsole.com/ में पेस्ट करें ताकि डिओबफस्केटेड js को कंसोल में लॉग किया जा सके।
अंततः, विश्लेषण के लिए इसे https://prettier.io/playground/ में पेस्ट करें ताकि इसे सुंदर बनाया जा सके।
ध्यान दें: यदि आप अब भी पैक किए गए (लेकिन भिन्न) js देख रहे हैं, तो यह रिकर्सिवली पैक किया गया हो सकता है। प्रक्रिया दोहराएं।
References
Tools
Less Used References
Last updated