Sicheres Programmieren und Codeschutz
Tutorial
Der wichtigste Faktor bei der sicheren Softwareentwicklung ist die Erweiterung des eigenen Softwareentwicklungs¬prozesses um zusätzliche sicherheitsspezifische Aktivitäten. Solche zusätzlichen Aktivitäten gibt es in allen Phasen des Softwareentwicklungsprozesses. Sie sind unabhängig vom eingesetzten Entwicklungsmodell. So gibt es auch in der Coding- Phase einige Aktivitäten, die dazu beitragen, dass Softwareprodukte mit möglichst keinen Schwachstellen entwickelt werden, so dass das Produkt im Betrieb nicht angreifbar ist. Die Teilnehmer des Tutorials lernen typische Schwachstellen wie Cross-Site Scripting oder Injections bzw. Ursachen für diese Schwachstellen kennen und natürlich auch wie sie zu vermeiden sind. Es werden einige Best Practice Empfehlungen gegeben, was bei der sicheren Programmierung beachtet werden muss. Außerdem werden die Risiken erläutert, die durch Code-Manipulationen entstehen. Die Teilnehmer lernen grundlegende Code-Schutzmaßnahmen kennen, u.a. Code-Signaturen, die für Sicherheit in der Deployment-Phase sorgen.
In praktischen Übungen lernen die Teilnehmer die „Design by Contract“-Technik für Software¬engineering kennen. „Design by Contract“ geht auf Konzepte von Bertrand Meyer zurück, die schließlich auch in die von ihm entwickelte Programmiersprache Eiffel eingingen. Hierbei werden die Datentypen um Vor- und Nachbedingungen sowie Invarianten erweitert. Anhand eines vorgegeben Szenarios sollen die Teilnehmer selber Vor- und Nach¬bedingun¬gen sowie Invarianten formulieren, die bei allen Methodenaufrufen gelten müssen. Außerdem experimentieren die Teilnehmer mit Code-Signaturen und erstellen dabei auch eigene Code-Signaturen.
Das halbtägige Tutorial setzt sich zur Hälfte aus Vorträgen und zu anderen Hälfte aus Hands-on Workshops zusammen.
Die Hardware für die Übung ist von den Teilnehmern zu stellen. Die virtuelle Maschine wird als Image für VirtualBox oder VMware von Secorvo gestellt. Die Teilnehmerzahl ist auf 16 begrenzt.
Für das Tutorial sind grundlegende Kenntnisse zur Sicherheit bei den Teilnehmern ausreichend („basic“).