rules:-id:use-string-equalsmessage:In Java, do not use == with strings. Use String.equals() instead.pattern-either:-pattern:if ($X == "...") ...-pattern:if ("..." == $X) ...
Semgrep Limit Match:
rules:-id:subprocess-callpatterns:-pattern:subprocess.call(...)# This says never match if first argument is a string
-pattern-not:subprocess.call("...", ...)
rules:-id:tm24-ruyaml-deserialization-problemmessage:"Insecure deserialization (called pickling in Python) is when
user-controllable data is deserialized by an application. "severity:ERRORlanguages:-pythonmode:taintpattern-sources:-label:USER_INPUTpattern:self-path-label:TYP_UNSAFEpattern:ruyaml.yaml.YAML(..., typ="unsafe", ...)-label:TOOOpattern:TOOOpattern-sinks:-requires:USER_INPUT and TYP_UNSAFEpattern:$YML.load(...)
rules:-id:use-decimalfield-for-moneypatterns:-pattern-inside:| class $M(...):
...
-pattern:$F = django.db.models.FloatField(...)-metavariable-regex:metavariable:'$F'regex:'.*(price|fee|salary).*'message:Found a FloatField used for variable $F. Use DecimalField for currency fields to avoid float-rounding errors.languages:[python]severity:ERROR
Inverse Regex Match:
rules:-id:invalid-base-urlmessage:The 'baseURL' is invalid. This may cause links to not work if deployed. Include the scheme (e.g., https://).patterns:-pattern:baseURL = "..."-pattern-not-regex:http(s)?://.*languages:[generic]
Integer Condition:
rules:-id:use-of-weak-rsa-keymessage:RSA keys should be at least 2048 bits based on NIST recommendation.patterns:-pattern:| KeyPairGenerator $KEY = $G.getInstance("RSA");
...
$KEY.initialize($BITS);
-metavariable-comparison:comparison:$BITS < 2048metavariable:$BITSlanguages:[java]severity:WARNING
Make a Fix to the code: Apply a Fix to the Code:
rules:
id: use-sys-exit
pattern: exit($X)
message: |
Use “sys.exit” over the python shell “exit” built-in. “exit” is not available on all Python implementations.
languages: [python]
severity: WARNING
fix: sys.exit($X)