
A collection of my Semgrep rules to facilitate vulnerability research.
"हमला सतह ही कमजोरी है। वहाँ बग ढूंढना सिर्फ एक विस्तार है।"
-- Mark Dowd
"कुछ विवरण दूसरों से अधिक महत्वपूर्ण हैं।"
-- Fedor G. Pikus
मेरे Semgrep नियमों का एक संग्रह जो कमजोरी अनुसंधान को सुविधाजनक बनाता है।
# high priority scan (quick wins)
semgrep --severity ERROR --config "p/0xdea"
# high and medium priority scan (recommended)
semgrep --severity ERROR --severity WARNING --config "p/0xdea"
# full scan (might include marginal findings and more false positives)
semgrep --config "p/0xdea"
वैकल्पिक रूप से, आप इस GitHub रिपॉजिटरी को स्थानीय रूप से क्लोन कर सकते हैं और चला सकते हैं:
# full scan
semgrep --config semgrep-rules/rules /path/to/source
# specific rule scan
semgrep --config semgrep-rules/rules/c/command-injection.yaml /path/to/source
[!TIP]
--no-git-ignoreस्विच निर्दिष्ट करें ताकि फ़ाइलों को git ट्रैकिंग स्थिति या.gitignoreनियमों की परवाह किए बिना स्कैन किया जा सके।
बेहतर सुव्यवस्थित अनुभव के लिए, मैं Semgrep स्कैन आउटपुट को SARIF प्रारूप में सहेजने और VS Code में SARIF Explorer का उपयोग करने की सलाह देता हूँ:
semgrep --sarif --sarif-output=/path/to/source/SEMGREP.sarif --config semgrep-rules/rules /path/to/source
code /path/to/source # then open the SEMGREP.sarif file in VS code with SARIF Explorer
शामिल SARIF आउटपुट उदाहरण भी देखें।
Semgrep CLI 1.169.0 के साथ परीक्षण किया गया।
युद्ध-परीक्षित C (और कभी-कभी C++) नियम सेट।
gets का उपयोग।strcpy, stpcpy, strcat का उपयोग।sprintf और vsprintf का उपयोग।scanf परिवार में संभावित रूप से असुरक्षित API फ़ंक्शन का उपयोग।strncat को गलत आकार तर्क पारित किया गया।strncpy, , , और वेरिएंट को गलत आकार तर्क पारित किया गया।strlen के वापसी मान को short में कास्ट करना खतरनाक हो सकता है।alloca का उपयोग।free के बाद संभावित उपयोग।free।free कॉल करना।malloc, calloc, realloc, आदि का अनियंत्रित वापसी कोड।putenv पर कॉल।system या popen के माध्यम से संभावित OS कमांड इंजेक्शन।access, stat, lstat, आदि का उपयोग।mktemp, tmpnam, tempnam का उपयोग।signal का उपयोग।setuid और seteuid का अनियंत्रित वापसी कोड।memset के तर्कों का गलत क्रम।rand और srand का उपयोग।scanf परिवार के फ़ंक्शन का अनियंत्रित वापसी कोड।atoi, atol, atof का उपयोग।ये नियम संभावित रूप से बहुत अधिक शोरगुल वाले और सामान्य उपयोग के लिए अनुपयुक्त माने जाते हैं।
--time बेंचमार्किंग करें ताकि धीमे नियमों को पहचाना जा सके जिनमें अनुकूलन की आवश्यकता है।memcpysnprintfsizeof ऑपरेटर का आकस्मिक उपयोग।strncpy और stpncpy के बाद स्पष्ट NUL-समाप्ति का अभाव।snprintf और vsnprintf के वापसी मान का संभावित रूप से असुरक्षित उपयोग।strlcpy और strlcat के वापसी मान का संभावित रूप से असुरक्षित उपयोग।