Zum Inhalt
wannacode

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?

1. Ein Kunde ändert die Nummer in der Adresse seiner Bestellseite und sieht eine fremde Bestellung mit Adresse und Telefonnummer.
2. Ein Kunde ändert den Produktpreis in der Anfrage, die der Browser sendet, und zahlt 1 € für Kopfhörer im Wert von 89 €.
3. Ein Mitarbeiter ändert die Lieferadresse einer Bestellung, und niemand kann sagen, wer es war.
4. Jemand probiert 10.000 Gutscheincodes pro Minute, bis er einen trifft, der funktioniert.

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: de
Funktionalitä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?

1. Story: „Als Kunde möchte ich meinen Gutscheincode benutzen.“ Welches ist das Szenario des böswilligen Benutzers?
2. Story: „Als Kunde möchte ich ein Produkt innerhalb von 14 Tagen nach Erhalt zurückgeben.“ Welches ist das Szenario des böswilligen Benutzers?
3. Story: „Als Lagermitarbeiter möchte ich die bezahlten Bestellungen sehen.“ Was muss unmö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.

Test

Teste dich

1. Was ist ein Missbrauchsfall (abuse case)?
2. Warum fangen die funktionalen Tests die Bestellung des anderen Kunden nicht?
3. Was ist eine Sicherheitsanforderung, die sich prüfen lässt?
4. Wer sollte an böswillige Szenarien denken?

Erstellt von Ivo Gergov im Rahmen der Kampagne von Evo Tech für zugängliche Programmierausbildung ·