
Java, Go, Python, C#, Kotlin, PHP, Kubernetes और GitHub Actions में भेद्यता का पता लगाने और ऑडिट-केंद्रित कोड समीक्षा के लिए स्थैतिक विश्लेषण सुरक्षा नियम।
elttam की सार्वजनिक semgrep नियम रिपॉज़िटरी में आपका स्वागत है।

हम अपने कोड-सहायता प्राप्त सुरक्षा ऑडिट और सॉफ़्टवेयर सुरक्षा अनुसंधान के दौरान नियमित रूप से नियम विकसित करते हैं। हम semgrep समुदाय के लिए लगातार नए नियम जोड़ते रहेंगे और यहाँ मौजूद चीज़ों में सुधार करते रहेंगे। हमें उम्मीद है कि semgrep का उपयोग करने वाले उत्पाद सुरक्षा इंजीनियर और कोड ऑडिटर इन्हें उपयोगी पाएँगे!
यदि आपको कोई बग मिले, तो कृपया GitHub issue दर्ज करें।
यह मार्गदर्शिका मानती है कि आप Semgrep से परिचित हैं और इसे पहले से इंस्टॉल किया हुआ है।
इस रिपॉज़िटरी में नियमों को दो व्यापक श्रेणियों में विभाजित किया गया है:
rules/ -- डेवलपर्स या AppSec टीमों के लिए उपयोगी नियम, ये आम तौर पर कमज़ोरियाँ होती हैं।rules-audit/ -- स्रोत कोड ऑडिट, दिलचस्प व्यवहार की पहचान, और मैन्युअल स्रोत कोड समीक्षा को बढ़ाने के लिए entrypoints की गणना करने में उपयोगी नियम।इस रिपॉज़िटरी को निम्न कमांड के साथ आज़माएँ:
git clone https://github.com/elttam/semgrep-rules.git
नियमों को आज़माने के लिए, चलाएँ:
semgrep --config semgrep-rules/rules semgrep-rules/rules/
ऑडिट-केंद्रित नियमों को आज़माने के लिए, चलाएँ:
semgrep --config semgrep-rules/rules-audit semgrep-rules/rules-audit/
ये नियम कमज़ोरियों या अन्य दुर्बलताओं की पहचान करने पर केंद्रित हैं।
| नियम पथ | भाषा | प्रौद्योगिकी | विवरण |
|---|---|---|---|
| generic/jsp-likely-xss | Generic | JSP | टेम्पलेट में असुरक्षित रेंडरिंग के साथ XSS का पता लगाएँ |
| go/lang/security/audit/executable-symlink | Go | os.Executable के साथ संभावित symlink अधिग्रहण | |
| go/lang/security/audit/sprintf-plain-string | Go | Sprintf अनएस्केप्ड नियंत्रण वर्ण | |
| go/lang/security/audit/uintptr-nonatomic | Go | परिवर्तित uintptr का गैर-परमाणु उपयोग | |
| java/lang/security/audit/crypto/gcm-static-iv | Java | key और IV के लिए समान मानों का उपयोग करने वाले GCM को खोजें | |
| java/lang/security/audit/crypto/randomstringutils | Java | Apache Commons | डिफ़ॉल्ट java.util.Random का उपयोग करने वाले RandomStringUtils को खोजें, जो सुरक्षा के लिए उपयुक्त नहीं है |
| java/spring/security/audit/remoting/ | Java | Spring | Spring Remoting के उपयोग का पता लगाएँ |
| php/php-filter-chain-read-from-oracle | PHP | संभावित PHP फ़िल्टर चेन त्रुटि-आधारित oracle का पता लगाएँ | |
| yaml/github-actions/security/save-state | YAML | Github-Actions | असुरक्षित और अप्रचलित ::save-state का उपयोग खोजें |
| yaml/github-actions/security/set-output | YAML | Github-Actions | असुरक्षित और अप्रचलित ::set-output का उपयोग खोजें |
| yaml/kubernetes/audit/network-policy-ingress-any | YAML | Kubernetes | Ingress Permit ANY के साथ NetworkPolicy वाले कंटेनर specs खोजें |
| yaml/kubernetes/audit/privileged-container | YAML | Kubernetes | security context privileged वाले कंटेनर specs खोजें |
| yaml/kubernetes/security/allow-privileged-escalation | YAML | Kubernetes | init कंटेनरों सहित ऐसे कंटेनर specs खोजें जो privilege escalation की अनुमति देते हैं (allowPrivilegeEscalation) |
| yaml/kubernetes/security/no-security-context | YAML | Kubernetes | बिना security context वाले कंटेनर specs खोजें; pod या कंटेनर security context पर विचार करता है। |
| yaml/kubernetes/security/run-as-non-root | YAML | Kubernetes | ऐसे कंटेनर specs खोजें जो root के रूप में चलने की अनुमति देते हैं ( अनुपलब्ध), pod और कंटेनर security context पर विचार करता है |
ये नियम दिलचस्प व्यवहार की पहचान करके या entrypoints की गणना करके मैन्युअल स्रोत कोड समीक्षा में सहायता करने के लिए उपयोगी हैं।
| नियम पथ | भाषा | प्रौद्योगिकी | विवरण |
|---|---|---|---|
| c/lang/security/audit/exec | C | प्रक्रियाओं के निष्पादन का पता लगाएँ | |
| csharp/dotnet/security/audit/entrypoints/apsnet-controller | C# | ASP.NET | ASP.NET REST entrypoints खोजें |
| java/jackson/polymorphic-typing | Java | Jackson | कमज़ोर Jackson deserialisation समस्याओं का पता लगाने में सहायता के लिए polymorphic typing खोजें। |
| java/jackson/type-resolver-override | Java | Jackson | TypeResolveBuilder का उपयोग करने वाली polymorphic typing खोजें |
| java/jax-rs/security/audit/entrypoints/ | Java | JAX-RS | JAX-RS REST entrypoints खोजें |
| java/lang/security/audit/processbuilder | Java | ProcessBuilder के साथ प्रक्रियाओं के निष्पादन का पता लगाएँ | |
| java/spring/security/audit/entrypoints/ | Java | Spring | Spring REST entrypoints खोजें |
| java/struts2/security/audit/devmode/ | Java | Struts2 | devMode के उपयोग का पता लगाएँ |
| java/struts2/security/audit/dmi/ | Java | Struts2 | Dynamic Method Invocation के उपयोग का पता लगाएँ |
| java/struts2/security/audit/entrypoints/ | Java | Struts2 | Struts2 REST entrypoints खोजें |
| java/xstream/security/audit/fromxml | Java | XStream | XStream.fromXML(...) के उपयोग का पता लगाएँ |
| kotlin/spark/security/audit/entrypoints/ | Kotlin | Spark | Spark REST entrypoints खोजें |
| python/flask/security/audit/entrypoints/ | Python | Flask | Flask REST entrypoints खोजें |
runAsNonRoot| yaml/kubernetes/security/run-as-non-root-unsafe-value | YAML | Kubernetes | ऐसे कंटेनर specs खोजें जो स्पष्ट रूप से root के रूप में चलने की अनुमति देते हैं (runAsNonRoot: false), pod और कंटेनर security context पर विचार करता है PR |