mirror of
https://github.com/cheikh2shift/godex.git
synced 2026-10-21 18:42:48 -05:00
Add new Semgrep rules for enhanced security detection in Go code
This commit is contained in:
1 parent
a318f93edb
commit
72d2c9b579
1 file changed
+156
@@ -128,3 +128,159 @@ rules:
|
||||
confidence: medium
|
||||
likelihood: medium
|
||||
impact: medium
|
||||
|
||||
- id: go-exec-shell-interpreter
|
||||
languages: [go]
|
||||
message: "Shell interpreter execution (bash/sh/cmd/powershell). Review for abuse of command interpreters."
|
||||
severity: WARNING
|
||||
pattern-either:
|
||||
- pattern: exec.Command("sh", "-c", ...)
|
||||
- pattern: exec.Command("bash", "-c", ...)
|
||||
- pattern: exec.Command("cmd", "/c", ...)
|
||||
- pattern: exec.Command("powershell", ...)
|
||||
- pattern: exec.Command("pwsh", ...)
|
||||
metadata:
|
||||
category: security
|
||||
confidence: medium
|
||||
likelihood: medium
|
||||
impact: high
|
||||
|
||||
- id: go-exec-shell-download
|
||||
languages: [go]
|
||||
message: "Shell command includes common download utilities (curl/wget/etc). Review for ingress tool transfer."
|
||||
severity: WARNING
|
||||
patterns:
|
||||
- pattern: exec.Command($SHELL, $FLAG, $CMD)
|
||||
- metavariable-regex:
|
||||
metavariable: $SHELL
|
||||
regex: "\"(sh|bash|cmd|powershell|pwsh)\""
|
||||
- metavariable-regex:
|
||||
metavariable: $FLAG
|
||||
regex: "\"(-c|/c)\""
|
||||
- metavariable-regex:
|
||||
metavariable: $CMD
|
||||
regex: "\".*(curl|wget|Invoke-WebRequest|iwr|certutil|bitsadmin).*\""
|
||||
metadata:
|
||||
category: security
|
||||
confidence: medium
|
||||
likelihood: medium
|
||||
impact: high
|
||||
|
||||
- id: go-write-then-exec
|
||||
languages: [go]
|
||||
message: "Writes a file and executes it in the same function. Review for dropper behavior."
|
||||
severity: WARNING
|
||||
patterns:
|
||||
- pattern-inside: |
|
||||
func $F(...) {
|
||||
...
|
||||
}
|
||||
- pattern-either:
|
||||
- pattern: os.WriteFile($PATH, ..., ...)
|
||||
- pattern: ioutil.WriteFile($PATH, ..., ...)
|
||||
- pattern: exec.Command($PATH, ...)
|
||||
metadata:
|
||||
category: security
|
||||
confidence: low
|
||||
likelihood: medium
|
||||
impact: high
|
||||
|
||||
- id: go-base64-decode-then-exec
|
||||
languages: [go]
|
||||
message: "Base64 decode combined with command execution in the same function. Review for encoded payload execution."
|
||||
severity: WARNING
|
||||
patterns:
|
||||
- pattern-inside: |
|
||||
func $F(...) {
|
||||
...
|
||||
}
|
||||
- pattern-either:
|
||||
- pattern: base64.StdEncoding.DecodeString(...)
|
||||
- pattern: base64.URLEncoding.DecodeString(...)
|
||||
- pattern: base64.RawStdEncoding.DecodeString(...)
|
||||
- pattern: base64.RawURLEncoding.DecodeString(...)
|
||||
- pattern-either:
|
||||
- pattern: exec.Command("sh", "-c", ...)
|
||||
- pattern: exec.Command("bash", "-c", ...)
|
||||
- pattern: exec.Command("cmd", "/c", ...)
|
||||
- pattern: exec.Command("powershell", ...)
|
||||
- pattern: exec.Command("pwsh", ...)
|
||||
metadata:
|
||||
category: security
|
||||
confidence: low
|
||||
likelihood: medium
|
||||
impact: high
|
||||
|
||||
- id: go-suspicious-persistence-path
|
||||
languages: [go]
|
||||
message: "Writes to common persistence locations (cron/systemd/LaunchAgents/Startup). Review for persistence."
|
||||
severity: WARNING
|
||||
patterns:
|
||||
- pattern-either:
|
||||
- pattern: os.WriteFile($PATH, ..., ...)
|
||||
- pattern: ioutil.WriteFile($PATH, ..., ...)
|
||||
- pattern: os.Create($PATH)
|
||||
- metavariable-regex:
|
||||
metavariable: $PATH
|
||||
regex: "\"(/etc/cron|/etc/systemd/system|/etc/init\\.d|/Library/LaunchAgents|/Library/LaunchDaemons|/Users/[^/]+/Library/LaunchAgents|/Users/[^/]+/Library/LaunchDaemons|/home/[^/]+/\\.config/systemd/user|/home/[^/]+/\\.config/autostart|C:\\\\\\\\Users\\\\\\\\[^\\\\\\\\]+\\\\\\\\AppData\\\\\\\\Roaming\\\\\\\\Microsoft\\\\\\\\Windows\\\\\\\\Start Menu\\\\\\\\Programs\\\\\\\\Startup).*\""
|
||||
metadata:
|
||||
category: security
|
||||
confidence: low
|
||||
likelihood: medium
|
||||
impact: high
|
||||
|
||||
- id: go-suspicious-cron-install
|
||||
languages: [go]
|
||||
message: "Uses cron/systemctl/launchctl to install persistence. Review for malicious persistence."
|
||||
severity: WARNING
|
||||
pattern-either:
|
||||
- pattern: exec.Command("crontab", ...)
|
||||
- pattern: exec.Command("systemctl", "enable", ...)
|
||||
- pattern: exec.Command("systemctl", "start", ...)
|
||||
- pattern: exec.Command("launchctl", "load", ...)
|
||||
- pattern: exec.Command("launchctl", "bootstrap", ...)
|
||||
metadata:
|
||||
category: security
|
||||
confidence: low
|
||||
likelihood: medium
|
||||
impact: high
|
||||
|
||||
- id: go-registry-run-key
|
||||
languages: [go]
|
||||
message: "Modifies Windows Run/RunOnce registry keys. Review for persistence."
|
||||
severity: WARNING
|
||||
patterns:
|
||||
- pattern-inside: |
|
||||
func $F(...) {
|
||||
...
|
||||
}
|
||||
- pattern: registry.OpenKey(..., $PATH, ...)
|
||||
- metavariable-regex:
|
||||
metavariable: $PATH
|
||||
regex: ".*Run(Once)?"
|
||||
metadata:
|
||||
category: security
|
||||
confidence: low
|
||||
likelihood: medium
|
||||
impact: high
|
||||
|
||||
- id: go-netcat-like-shell
|
||||
languages: [go]
|
||||
message: "Spawns shell and attaches to network connection. Review for reverse shell behavior."
|
||||
severity: WARNING
|
||||
patterns:
|
||||
- pattern-inside: |
|
||||
func $F(...) {
|
||||
...
|
||||
}
|
||||
- pattern: net.Dial(...)
|
||||
- pattern-either:
|
||||
- pattern: exec.Command("sh", "-c", ...)
|
||||
- pattern: exec.Command("bash", "-c", ...)
|
||||
- pattern: exec.Command("cmd", "/c", ...)
|
||||
- pattern: exec.Command("powershell", ...)
|
||||
metadata:
|
||||
category: security
|
||||
confidence: low
|
||||
likelihood: medium
|
||||
impact: high
|
||||
Reference in new issue
Block a user