Thread Sicherheit von @ARGV
(43 answers)
Opened by bianca at 2020-01-15 18:01 2020-01-21T07:45:03 rosti Gerade habe ich etwas konkretes dazu auf meinem System (Debian Buster) entdeckt. PostgreSQL kommt mit einigen Administrationsprogrammen, und einige davon, zum Beispiel pg_lsclusters, sind in Perl geschrieben. Bei denen findet sich ein -T in der Shebang-Zeile. Ohne das -T wären diese Skripten dadurch angreifbar, dass man über die Umgebungsvariable PERL5LIB (oder vor Perl 5.26, also in allen älteren Debian-Versionen, im aktuellen Verzeichnis des Prozesses) manipulierte Bibliotheken ablegt, die das Skript dann anstelle derer vom System oder von PostgreSQL benutzt. Das zugehörige Modul PgCommon macht einige Checks, auf die man natürlich auch so draufkommen könnte. Der Taint-Check stellt schon in der Entwicklungsphase sicher, dass man's nicht übersieht: Das Putzen von $ENV{PATH} ist so ein Fall. Das Modul benutzt auch zwei Dinge, die ich genannt habe: Es ändert die Benutzerkennung, unter der der Prozess läuft, und es startet weitere Prozesse mit backticks und system. |