Product SiteDocumentation Site

Kapitel 9. Der gute Umgang von Entwicklern mit der Sicherheit des OS

9.1. Das richtige Vorgehen für die Nachprüfung der Sicherheit und deren Gestaltung
9.2. Benutzer und Gruppen für Software-Daemons erstellen
Dieses Kapitel handelt von einigen der anerkannten Vorgehensweisen für sicheres Programmieren, wenn Entwickler Pakete für Debian erstellen. Wenn Sie sehr an sicherheitsbewusster Programmierung interessiert sind, sollten Sie David Wheelers http://www.dwheeler.com/secure-programs/ und http://www.securecoding.org von Mark G. Graff und Kenneth R. van Wyk (O'Reilly, 2003) lesen.

9.1. Das richtige Vorgehen für die Nachprüfung der Sicherheit und deren Gestaltung

Entwickler, die Software in Pakete packen, sollten größte Anstrengung darauf verwenden sicherzustellen, dass die Installation der Software und ihre Verwendung keine Sicherheitsrisiken für das System oder seine Benutzer eröffnet.
Dazu sollten sie vor der Veröffentlichung der Software oder einer neuen Version den Quellcode des Pakets nachprüfen, um Fehler zu finden, die zu Sicherheitslücken führen können. Bekanntermaßen ist der Aufwand für die Fehlerbehebung in verschiedenen Stadien der Entwicklung unterschiedlich. So ist es leichter (und billiger), Fehler während der Entwicklung auszubessern als später, wenn die Software schon herausgegeben wurde und nur noch gewartet wird (einige Studien behaupten, dass die Kosten in dieser Phase 60 Mal höher sind). Es gibt Hilfsmittel, die versuchen, Fehler automatisch zu entdecken. Entwickler sollten dennoch die verschiedenen Sicherheitsfehler kennen, damit sie sie verstehen und sie so in eigenen (oder fremden) Programmcode entdecken können.
Programmierfehler, die typischerweise zu Sicherheitsproblemen führen, sind insbesondere: http://de.wikipedia.org/wiki/Puffer%C3%BCberlauf, Format-String-Überläufe, Heap-Überläufe und Integer-Überläufe (in C/C++-Programmen), vorübergehende http://de.wikipedia.org/wiki/Symlink-Schwachstelle (in Skripten), http://de.wikipedia.org/wiki/Directory_Traversal, die Einschleusung von Befehlen (auf Servern) und http://de.wikipedia.org/wiki/Cross-Site_Scripting sowie http://de.wikipedia.org/wiki/SQL-Injektion (bei web-orientierten Anwendungen). Eine ausführliche Liste von Sicherheitsfehlern finden Sie in Fortifys http://vulncat.fortifysoftware.com/.
Einige dieser Probleme können Sie nur erkennen, wenn Sie ein Experte in der verwendeten Programmiersprache sind. Aber andere können leicht entdeckt und behoben werden. Zum Beispiel kann eine Symlink-Schwachstelle auf Grund einer falschen Verwendung von temporären Verzeichnissen ohne Weiteres entdeckt werden, indem Sie grep -r "/tmp/" . ausführen. Diese Verweise sollten überprüft werden und fest einprogrammierte Dateinamen in temporären Verzeichnissen in Shell-Skripten mit mktemp oder tempfile, in Perl-Skripten mit File::Temp(3perl) und in C/C++ mit tmpfile(3) ersetzt werden.
Es stehen Ihnen einige Werkzeuge zur Verfügung, die Sie dabei unterstützen, den Quellcode auf Sicherheitsprobleme hin zu überprüfen. Dazu zählen rats, flawfinder und pscan. Weitere Informationen finden Sie in der http://www.de.debian.org/security/audit/tools.
Beim Paketieren von Software sollten Entwickler darauf achten, dass sie allgemein anerkannte Sicherheitsprinzipien einhalten. Dazu gehören:
Falls Sie diese Prinzipien nicht einhalten können, sollten Sie sichergehen, dass das Programm, das mit umfangreicheren Rechten läuft, auf Sicherheitsprobleme überprüft wurde. Wenn Sie sich nicht sicher sind oder Hilfe benötigen, sollten Sie sich mit dem http://www.de.debian.org/security/audit/ in Verbindung setzen. Wenn Binaries setuid/setgid verwenden, sollten Sie die Richtlinie von Debian zu http://www.debian.org/doc/debian-policy/ch-files#s10.9 beachten.
Für weitere Informationen, insbesondere hinsichtlich Sicherheitsfragen, sollten Sie das http://www.dwheeler.com/secure-programs/ und das https://buildsecurityin.us-cert.gov/portal/ Portal lesen (oder den Programmautor darauf hinweisen).