Informationssicherheit als Anforderung
Kurz gesagt: Funktionale Tests prüfen, was der Kunde tun kann. Die Informationssicherheit fragt, was ein Mensch, der Schaden anrichten will, NICHT tun können darf. Deshalb wird eine Sicherheitsanforderung als Szenario mit einem böswilligen Benutzer geschrieben: wer, was er versucht und was stattdessen geschehen muss.
Problem
Alle Tests bestehen, und die Bestellungen gehören allen
Ein Kunde öffnet seine Bestellung: Die Adresse endet auf /orders/1042. Aus Neugier ändert er die Nummer in 1041. Er sieht eine fremde Bestellung: Name, Adresse, Telefon, was gekauft wurde.
Der Shop hat 400 Tests. Einer davon prüft, dass der Kunde seine eigene Bestellung sieht. Er besteht. Kein Test fragt, ob er auch eine fremde sieht, weil keine Anforderung sagt, dass er es nicht darf.
Die Idee
Informationssicherheit ist eine Anforderung wie jede andere
Im Qualitätsmodell aus dem ersten Modul ist die Informationssicherheit eines der neun Merkmale. Sie ist, wie gut das System Daten und Aktionen vor Menschen schützt, die kein Recht darauf haben. Die ISO/IEC 25010:2023 teilt sie in sechs auf:
| Teilmerkmal | Im Shop |
|---|---|
| Vertraulichkeit | Der Kunde sieht nur seine eigenen Bestellungen. |
| Integrität | Der Preis lässt sich nicht aus dem Browser ändern. |
| Nicht-Abstreitbarkeit | Der Kunde kann nicht behaupten, er habe die bezahlte Bestellung nicht aufgegeben. |
| Zurechenbarkeit | Jede Änderung der Adresse wird protokolliert: wer und wann. |
| Authentizität | Die angemeldete Person ist, wer sie zu sein behauptet. |
| Widerstandsfähigkeit | Der Shop hält 10.000 Gutscheincode-Versuchen pro Minute stand. |
Eine Sicherheitsanforderung wird wie jede nichtfunktionale geschrieben und abgenommen: mit Verhalten, das sich prüfen lässt, und mit einer Grenze.
Genauer, für Neugierige
Die Widerstandsfähigkeit ist neu in der Ausgabe von 2023: die Fähigkeit, die Arbeit auch während eines Angriffs zu erledigen. Die ISO/IEC 25010 beschreibt, was verlangt wird, nicht wie es erreicht wird. Wie es erreicht wird (Passwörter, Sitzungen, Token, nicht vertrauenswürdige Eingaben), steht im Modul Sicherheit für Programmierer des Kurses Softwaretechnik, mit Code.
Probier es aus
Welcher Teil der Informationssicherheit?
Die Idee
Der böswillige Benutzer
Eine Story sagt, was der ehrliche Kunde will. Die Informationssicherheit fragt nach einer anderen Rolle: einem Menschen, der Schaden anrichten will. Deshalb wird zu jeder Story auch das Gegenteil geschrieben:
- Story: „Als Kunde möchte ich meine Bestellungen sehen“;
- Missbrauchsfall (abuse case): „Als böswilliger Kunde möchte ich eine fremde Bestellung sehen, um an Adresse und Telefonnummer zu kommen“.
Der zweite sagt, was nicht möglich sein darf und was stattdessen geschieht. Er wird mit denselben Worten geschrieben wie die Akzeptanzkriterien:
# language: deFunktionalität: Die Bestellungen des Kunden
Szenario: Ein Kunde sieht keine fremde Bestellung Angenommen Kunde A ist in seinem Konto angemeldet Und Bestellung 1041 gehört Kunde B Wenn Kunde A Bestellung 1041 öffnet Dann sieht er „Keine solche Bestellung“ Und er sieht weder Name noch Adresse noch Telefonnummer von Kunde B Und der Versuch wird im Protokoll festgehalten„Keine solche Bestellung“, nicht „Du hast keinen Zugriff“: Das zweite verrät dem Angreifer, dass die Bestellung existiert.
Genauer, für Neugierige
Auf Englisch begegnen dir beide Namen: abuse case und misuse case, nach „Misuse cases“ von Sindre und Opdal (2005). OWASP führt Listen typischer Angriffe und prüfbarer Sicherheitsanforderungen für Webanwendungen (den Application Security Verification Standard, ASVS). Fehlerhafte Zugriffskontrolle, wie hier die Bestellung des anderen Kunden, steht in der Ausgabe 2021 der OWASP Top 10 auf Platz eins.
Probier es aus
Was darf nicht möglich sein?
Die Idee
Wer wie ein Angreifer denkt
Böswillige Szenarien sind nicht nur für ein Sicherheitsteam am Ende. Am billigsten findet man sie im selben Gespräch, in dem die Regeln der Story geschrieben werden. Beim Example Mapping stellst du neben Regeln, Beispielen und Fragen noch eine Frage: „Wer würde das missbrauchen wollen, und wie?“
- der Gutscheincode: zwei bezahlte Bestellungen gleichzeitig; Codes erraten;
- Rückgaben: eine fremde Bestellung; ein teureres Produkt zurückgeben als das gekaufte;
- der Warenkorb: ein im Browser geänderter Preis; eine negative Menge.
Das Risiko ordnet, welche zuerst geschrieben werden: die, bei denen Geld oder personenbezogene Daten verloren gehen.
Die Abnahme funktioniert wie bei der Leistung: Die Anforderungen werden vorher mit dem Geschäft vereinbart, und ihre Prüfung ist Teil des Abnahmetests. Ein Penetrationstest durch Außenstehende ist eine nützliche Ergänzung. Aber er findet, wonach niemand gefragt hat. Eine Anforderung macht die Informationssicherheit zu etwas, das jedes Mal geprüft wird.
Genauer, für Neugierige
Der CT-AcT v1.0, Kapitel 4, nimmt die Informationssicherheit in den Abnahmetest nichtfunktionaler Anforderungen auf: Die Anforderungen und Maße werden im Voraus vereinbart, und das Geschäft entscheidet, welche Risiken es akzeptiert. Wie Bedrohungsmodellierung systematisch gemacht wird (zum Beispiel STRIDE) und wie Angriffe mit Code geprüft werden, steht im Modul „Sicherheit für Programmierer“.
Übung
Eine Sicherheitsanforderung
1. Die Bestellungen. Prüfe die Sicherheitsanforderung für Bestellungen.
Markiere die Probleme in der Anforderung und wähle die Art jedes Problems.
Klicke auf die Wörter, die ein Problem sind; noch einmal, um die Markierung zu entfernen. Mit den Pfeiltasten geht es von Wort zu Wort.
Die Probleme im Text
- „vor Hackern geschützt“ nicht prüfbar: Vor welchen Angriffen, und wie wird es geprüft? Die Anforderung muss die Bedrohung und das Verhalten nennen: „Ein Kunde sieht keine fremde Bestellung, auch nicht, wenn er die Nummer in der Adresse ändert“.
- „berechtigte Benutzer“ mehrdeutig: Wer ist für welche Bestellung berechtigt? Der Kunde nur für seine eigene, das Lager für alle bezahlten, der Support nur lesend? Ohne das kann sich jeder, der angemeldet ist, als „berechtigt“ herausstellen.
- „mit AES verschlüsselt“ Lösung statt Bedarf: Das ist eine Lösung, und eine falsche: Passwörter werden nicht verschlüsselt, sie werden mit einem langsamen Hash und einem Salt gespeichert. Der Bedarf ist „das Passwort lässt sich aus der Datenbank nicht wiederherstellen, auch wenn sie jemand stiehlt“.
Der letzte Satz ist eine gute Anforderung: ein Verhalten und was protokolliert wird. Der erste ist ein Wunsch. Der zweite sagt nicht, wer für welche Bestellung berechtigt ist, und genau dort lag das Loch mit der Nummer in der Adresse. Der dritte ist eine Lösung, und eine falsche: Passwörter werden nicht verschlüsselt, sie werden mit einem langsamen Hash gespeichert.
Test
Teste dich
Verwandte Lektionen
Abschnitt „Verwandte Lektionen“- Baut auf: Akzeptanzkriterien · Teststufen · Testarten · Der Plan und risikobasiertes Testen
- Aufgaben zum Thema: Nichtfunktional