Ich habe ein Bash-Skript, das ich über procmail starte. Procmail geht im Thema und aus Feld aus einer E-Mail als Argument für den Bash-Skript. Da diese Werte in keiner Weise unmanipuliert sind, versuche ich herauszufinden, ob es in der bash irgendwelche Sicherheitslücken gibt, die jemand ausnutzen könnte, und wenn ja, was ich dagegen tun kann. Hier ist ein Beispielcode zu veranschaulichen, was los ist:Was, wenn überhaupt, Injektionsschwachstellen gibt es in bash und wie kann ich vor ihnen schützen?
#!/bin/bash
/usr/sbin/sendmail -t <<EOF
From: "myhost Administrator" <[email protected]>
To: [email protected]
Subject: An email subject
You've received a new email.
It has a subject of "$2"
It was sent from "$1".
EOF
Dieses Bash-Skript würde durch procmail mit einem .procmailrc Skript wie folgt aufgerufen werden:
:0
* ^From:\s*\/.*
{
FROM = "$MATCH"
}
:0
* ^Subject:\s*\/.*
{
SUBJECT = "$MATCH"
}
:0 c:
* ^To:.*@example.com
| /home/john_doe/examplescript.bash "$FROM" "$SUBJECT"
Die beiden Bereiche, die ich frage mich, über Injection-Schwachstellen für in der Instanziierung des Skripts:
/home/john_doe/examplescript.bash "$FROM" "$SUBJECT"
und die Verwendung der Variablen im Skript.
/usr/sbin/sendmail -t <<EOF
From: "myhost Administrator" <[email protected]>
To: [email protected]
Subject: An email subject
You've received a new email.
It has a subject of "$2"
It was sent from "$1".
EOF
Wenn Ihr neugierig, here is the actual use case that brought this question to my mind
Das klingt wie eine gute ganzheitliche Lösung, die alle möglichen Schwachstellen anspricht. Es ist mehr Arbeit, aber ich denke, Sie haben Recht, dass es Injektionsprobleme vermeiden wird. Vielen Dank! –