Vor ein paar Tagen habe ich meine Prüfung zum Certified Application Security Engeneer (Java) geschafft. Neben dem verlinkten Onlinekurs habe ich auch einige Bücher gelesen, die sich mit dem Thema sichere Softwareentwicklung oder dem kompletten Livecycle einer Anwendung beschäftigen.
Vier dieser Bücher möchte ich an dieser Stelle empfehlen, weil sie jeweils einen speziellen Fokus auf Entwicklung oder Betrieb legen.
Iron-Clad Java: Building Secure Web Applications
Das Buch ist von Jim Manico und August Detlefsen und wurde bei Oracle Press veröffentlicht. Dieses Buch hat den Untertitel Best Practises for Secure Java Web Application Development und kann diesen Anspruch auch erfüllen.
Neben den Grundlagen für sichere Webanwendungen gibt es unter anderem sehr ausführliche Kapitel zu Cross Site Scripting, Cross Site Request Forgery, SQL Injection, sicheren Dateiuploads und Authentifizierung. Auch der Lifecycle einer Webanwendung wird betrachtet und wie dabei die Sicherheit gefördert werden kann. Mit dem Inhalt des Buches kann man alle Themen aus der OWASP Top 10 abdecken.
Was mir besonders gut gefällt, sind die Negativbeispiele, anhand deren man lernen kann, Lücken im Code zu erkennen. Danach folgen ein oder mehrere Beispiele mit sicheren Implementierungen. Dieses Vorgehen ist sehr hilfreiche, wenn man selbst Code Reviews durchführt oder im Pair Programing den Code mitliest. Aber auch für eigene Refactorings oder neuen Code sind die Best Practices sehr hilfreich.
Die ISBN ist 978-0071835886.
Securing DevOps
Julien Vehent hat dieses Buch bei Manning Publications veröffentlicht. Schwerpunkt ist Cloud Security bzw. die Absicherung der Phasen, die nach dem Schreiben des Codes kommen. Also Build, Deployment und Monitoring.
Die Kapitel erläutern die Absicherung der Anwendungen selbst, aber vor allem der Infrastruktur und der Tools, die DevOps ermöglichen. Dabei wird alles anhand einer Beispielapplikation erläutert, die in AWS laufen soll. Nach und nach werden die beteiligten Systeme abgesichert, das Netzwerk durch Verschlüsselung geschützt, die CI/CD-Pipeline gehärtet und ein effektives Monitoring aufgesetzt, mit dem Einbrüche erkannt werden können. Dabei werden auch theoretische Aspekte und Hintergründe behandelt, mit denen man tiefer in die einzelnen Bereiche einsteigen kann.
Ich finde es gut, dass man durch die einzelnen Schritte geleitet wird und so Stück für Stück zu einem sichereren System kommt. Dadurch muss nicht alles auf einmal umgesetzt werden, sondern man kann iterativ vorgehen.
Die ISBN ist 978-1617294136.
Site Reliability Engeneering
Dieses Buch wurde von Betsy Beyer, Chris Jones, Jennifer Petoff und Niall Richard Murphy bei O’Reilly herausgebracht. Zusammen mit zahlreiche weiteren AutorInnen haben sie beleuchtet, wie Google mit Verfügbarkeit als Ziel, Software entwickelt und betreibt.
Einzelne Geschichten aus der Entwicklung und dem Betrieb bei Google erzählen, wie der Begriff Site Reliability Engeneering überhaupt entstanden ist und welche Methoden und Tools Googel dabei halfen, Software-Engeneering auf die Infrastruktur und den Betrieb anzuwenden. Das Google damit erfolgreich war, sieht man daran, dass viele Menschen zum testen der Internetverbindung google.com aufrufen.
Dabei werden viele Themen behandelt, die mit IT-Security nur indirekt zu tun haben. Aber sie alle zahlen darauf ein, ein stabiles System zu betreiben, dass die Integrität und Verfügbarkeit von Daten und Services garantiert. Und das sind zwei der drei Elemente der CIA Triade: Confidentiality, Integrity und Availability.
Die ISBN ist 978-1491929124.
Agile Application Security
Mit diesem Buch decken Laura Bell, Michael Brunton-Spall, Rich Smith und Jim Bird eine besondere Nische der IT-Sicherheit ab, die meiner Meinung nach in Zukunft eine immer größere Rolle spielen wird. Wie kann man Sicherheit in agilen Prozessen integrieren?
Das Problem ist, dass viele Methoden der sicheren Softwareentwicklung auf klassischen Vorgehen wie dem Wasserfallmodell beruhen. Es wird vorab eine ausführliche Anforderungsliste an Sicherheitsmerkmalen definiert, diese werden dann in einer sicheren Softwarearchitektur eingeplant und am Schluss kann man das ganze wochenlang manuell prüfen und testen. Doch wenn neue Versionen der Software am Ende jedes Sprints oder sogar mehrmals täglich released werden, müssen andere Ansätze her. In dem Buch werden mit Beispielen Security- oder Abuser-Stories vorgestellt, um Sicherheitsanforderungen so zu erfassen, wie sie SCRUM-Teams gewohnt sind. Durch Security-Testautomatisierung können manuelle Tests auf den neuen Code reduziert und ein Basisniveau an Sicherheit erreicht werden. Es geht auch darum, eine Sicherheitskultur in den Teams zu etablieren und Verständnis für Angriffe und Abwehrtechniken zu schaffen.
Mir gefällt der agile und ganzheitliche Ansatz des Buches. Vieles davon habe ich auch in meine Arbeit als Software Developer integriert.
Das Buch ist bei O’Reilly erschienen und hat die ISBN 978-1491938843.
Weitere Empfehlungen?
Das waren die vier Bücher, die mir in letzter Zeit am besten gefallen haben. Habt ihr auch Bücher, die ihr super findet und empfehlen könnt? Schreibt mir doch auf Twitter, von was ihr begeistert seid.
Bis bald,
seism0saurus