DEV.2.6 — Widerstandsfähigkeit gegen gängige Angriffsmuster

SOLLTE Security level: normal-SdT Effort 3 BSI-Stand-der-Technik-Kernel
Statement (Anforderung)

Entwicklung für Anwendungen SOLLTE Schutzfunktionen gegen gängige Angriffsmuster installieren.

Guidance (Erläuterung)

Gängige Angriffsmuster sind wiederkehrende Vorgehensweisen von Angreifenden, die in der Praxis häufig auftreten, z. B. SQL-Injection, Cross-Site-Scripting (XSS) oder Pufferüberläufe. Welche Angriffsmuster für die konkrete Anwendung gängig sind, hängt von Funktionalität und Architektur der Anwendung ab, z.B. Prompt Injection bei generativer KI. Die Vorschrift zielt darauf ab, dass Produkte bereits in der Entstehung so gestaltet werden, dass typische Schwachstellen systematisch erschwert werden. Ohne entsprechende Vorkehrungen könnte ein Angreifer etwa durch manipulierte Eingaben vertrauliche Daten auslesen oder unautorisiert Funktionen steuern. Werden Schutzfunktionen frühzeitig eingebaut, kann die Stabilität des Produkts erhöht, die Angriffsfläche reduziert und das Vertrauen der Nutzenden gestärkt werden. Zur Umsetzung können etablierte Programmierpraktiken wie das Verwenden sicherer Standardbibliotheken, das Einschränken von Nutzerrechten im Code oder das Einführen von Fallback-Mechanismen bei fehlerhaften Eingaben verwendet werden. Ergänzend kann die Institution Secure Coding Guidelines nutzen, die häufige Angriffsmuster adressieren und Entwickelnden praxisnahe Hilfen bieten.

Tags: Security by Design
Statement properties
NameValue
target_object_categories Anwendungen
documentation Freigabeplan
result Schutzfunktionen gegen gängige Angriffsmuster
action_word installieren
modal_verb SOLLTE
Control properties
NameValue
alt-identifier 65ec8cf9-f2aa-4eb5-85a6-914c3da3e148
sec_level normal-SdT
effort_level 3
tags Security by Design
Sub-controls
Raw OSCAL JSON (complete control)
{
  "class": "BSI-Stand-der-Technik-Kernel",
  "controls": [
    {
      "class": "BSI-Stand-der-Technik-Kernel",
      "id": "DEV.2.6.1",
      "links": [
        {
          "href": "#KONF.12.1",
          "rel": "related"
        }
      ],
      "parts": [
        {
          "id": "DEV.2.6.1_stm",
          "name": "statement",
          "props": [
            {
              "name": "target_object_categories",
              "ns": "https://github.com/BSI-Bund/Stand-der-Technik-Bibliothek/tree/main/Dokumentation/namespaces/target_object_categories.csv",
              "value": "Anwendungen"
            },
            {
              "name": "documentation",
              "ns": "https://github.com/BSI-Bund/Stand-der-Technik-Bibliothek/tree/main/Dokumentation/namespaces/documentation_guidelines.csv",
              "value": "Freigabeplan"
            },
            {
              "name": "result",
              "ns": "https://github.com/BSI-Bund/Stand-der-Technik-Bibliothek/tree/main/Dokumentation/namespaces/result.csv",
              "value": "Eingabedaten"
            },
            {
              "name": "result_specification",
              "ns": "https://github.com/BSI-Bund/Stand-der-Technik-Bibliothek/tree/main/Dokumentation/namespaces/result.csv",
              "value": "auf eingeschleuste Befehle"
            },
            {
              "name": "action_word",
              "ns": "https://github.com/BSI-Bund/Stand-der-Technik-Bibliothek/tree/main/Dokumentation/namespaces/action_words.csv",
              "value": "testen"
            },
            {
              "name": "modal_verb",
              "ns": "https://github.com/BSI-Bund/Stand-der-Technik-Bibliothek/tree/main/Dokumentation/namespaces/modal_verbs.csv",
              "value": "SOLLTE"
            }
          ],
          "prose": "Entwicklung für Anwendungen SOLLTE Eingabedaten auf eingeschleuste Befehle testen."
        },
        {
          "id": "DEV.2.6.1_gdn",
          "name": "guidance",
          "prose": "Bei der Eingabevalidierung (Input Validation) wird getestet, ob die Eingabedaten eingeschleuste Befehle enthalten, z.B. SQL-Injection, Kommandozeilenbefehle oder Prompt Injection bei generativer KI.   Welche Eingaben betroffen sein könnten, kann durch eine Taint Analyse herausgefunden werden. Alternativ können auch alle Eingabedaten validiert werden (Server Side Validation)."
        }
      ],
      "props": [
        {
          "name": "alt-identifier",
          "value": "467ae9d3-922b-44eb-9527-d617416e5330"
        },
        {
          "name": "sec_level",
          "ns": "https://github.com/BSI-Bund/Stand-der-Technik-Bibliothek/tree/main/Dokumentation/namespaces/security_level.csv",
          "value": "normal-SdT"
        },
        {
          "name": "effort_level",
          "ns": "https://github.com/BSI-Bund/Stand-der-Technik-Bibliothek/tree/main/Dokumentation/namespaces/effort_level.csv",
          "value": "3"
        },
        {
          "name": "tags",
          "ns": "https://github.com/BSI-Bund/Stand-der-Technik-Bibliothek/tree/main/Dokumentation/namespaces/tags.csv",
          "value": "Security by Design, Produktbeschreibung"
        }
      ],
      "title": "Eingabevalidierung"
    },
    {
      "class": "BSI-Stand-der-Technik-Kernel",
      "id": "DEV.2.6.2",
      "parts": [
        {
          "id": "DEV.2.6.2_stm",
          "name": "statement",
          "props": [
            {
              "name": "target_object_categories",
              "ns": "https://github.com/BSI-Bund/Stand-der-Technik-Bibliothek/tree/main/Dokumentation/namespaces/target_object_categories.csv",
              "value": "Anwendungen"
            },
            {
              "name": "documentation",
              "ns": "https://github.com/BSI-Bund/Stand-der-Technik-Bibliothek/tree/main/Dokumentation/namespaces/documentation_guidelines.csv",
              "value": "Freigabeplan"
            },
            {
              "name": "result",
              "ns": "https://github.com/BSI-Bund/Stand-der-Technik-Bibliothek/tree/main/Dokumentation/namespaces/result.csv",
              "value": "eine Ausgabekodierung"
            },
            {
              "name": "action_word",
              "ns": "https://github.com/BSI-Bund/Stand-der-Technik-Bibliothek/tree/main/Dokumentation/namespaces/action_words.csv",
              "value": "ausführen"
            },
            {
              "name": "modal_verb",
              "ns": "https://github.com/BSI-Bund/Stand-der-Technik-Bibliothek/tree/main/Dokumentation/namespaces/modal_verbs.csv",
              "value": "SOLLTE"
            }
          ],
          "prose": "Entwicklung für Anwendungen SOLLTE eine Ausgabekodierung ausführen."
        },
        {
          "id": "DEV.2.6.2_gdn",
          "name": "guidance",
          "prose": "Ausgabekodierung (Output Encoding) ist wichtig, da sie spezielle Zeichen neutralisiert und so Angriffe wie Cross-Site Scripting (XSS) oder HTML-Injektionen verhindert, die ansonsten Schadcode ausführen könnten. Empfehlenswert ist kontextabhängiges Encoding und Escaping, basierend auf standardisierten Frameworks wie OWASP ESAPI."
        }
      ],
      "props": [
        {
          "name": "alt-identifier",
          "value": "dee85b12-b7f9-445e-802a-bbe13d67538e"
        },
        {
          "name": "sec_level",
          "ns": "https://github.com/BSI-Bund/Stand-der-Technik-Bibliothek/tree/main/Dokumentation/namespaces/security_level.csv",
          "value": "normal-SdT"
        },
        {
          "name": "effort_level",
          "ns": "https://github.com/BSI-Bund/Stand-der-Technik-Bibliothek/tree/main/Dokumentation/namespaces/effort_level.csv",
          "value": "3"
        },
        {
          "name": "tags",
          "ns": "https://github.com/BSI-Bund/Stand-der-Technik-Bibliothek/tree/main/Dokumentation/namespaces/tags.csv",
          "value": "Security by Design, Produktbeschreibung"
        }
      ],
      "title": "Ausgabekodierung"
    }
  ],
  "id": "DEV.2.6",
  "parts": [
    {
      "id": "DEV.2.6_stm",
      "name": "statement",
      "props": [
        {
          "name": "target_object_categories",
          "ns": "https://github.com/BSI-Bund/Stand-der-Technik-Bibliothek/tree/main/Dokumentation/namespaces/target_object_categories.csv",
          "value": "Anwendungen"
        },
        {
          "name": "documentation",
          "ns": "https://github.com/BSI-Bund/Stand-der-Technik-Bibliothek/tree/main/Dokumentation/namespaces/documentation_guidelines.csv",
          "value": "Freigabeplan"
        },
        {
          "name": "result",
          "ns": "https://github.com/BSI-Bund/Stand-der-Technik-Bibliothek/tree/main/Dokumentation/namespaces/result.csv",
          "value": "Schutzfunktionen gegen gängige Angriffsmuster"
        },
        {
          "name": "action_word",
          "ns": "https://github.com/BSI-Bund/Stand-der-Technik-Bibliothek/tree/main/Dokumentation/namespaces/action_words.csv",
          "value": "installieren"
        },
        {
          "name": "modal_verb",
          "ns": "https://github.com/BSI-Bund/Stand-der-Technik-Bibliothek/tree/main/Dokumentation/namespaces/modal_verbs.csv",
          "value": "SOLLTE"
        }
      ],
      "prose": "Entwicklung für Anwendungen SOLLTE Schutzfunktionen gegen gängige Angriffsmuster installieren."
    },
    {
      "id": "DEV.2.6_gdn",
      "name": "guidance",
      "prose": "Gängige Angriffsmuster sind wiederkehrende Vorgehensweisen von Angreifenden, die in der Praxis häufig auftreten, z. B. SQL-Injection, Cross-Site-Scripting (XSS) oder Pufferüberläufe. Welche Angriffsmuster für die konkrete Anwendung gängig sind, hängt von Funktionalität und Architektur der Anwendung ab, z.B. Prompt Injection bei generativer KI. Die Vorschrift zielt darauf ab, dass Produkte bereits in der Entstehung so gestaltet werden, dass typische Schwachstellen systematisch erschwert werden. Ohne entsprechende Vorkehrungen könnte ein Angreifer etwa durch manipulierte Eingaben vertrauliche Daten auslesen oder unautorisiert Funktionen steuern. Werden Schutzfunktionen frühzeitig eingebaut, kann die Stabilität des Produkts erhöht, die Angriffsfläche reduziert und das Vertrauen der Nutzenden gestärkt werden. Zur Umsetzung können etablierte Programmierpraktiken wie das Verwenden sicherer Standardbibliotheken, das Einschränken von Nutzerrechten im Code oder das Einführen von Fallback-Mechanismen bei fehlerhaften Eingaben verwendet werden. Ergänzend kann die Institution Secure Coding Guidelines nutzen, die häufige Angriffsmuster adressieren und Entwickelnden praxisnahe Hilfen bieten."
    }
  ],
  "props": [
    {
      "name": "alt-identifier",
      "value": "65ec8cf9-f2aa-4eb5-85a6-914c3da3e148"
    },
    {
      "name": "sec_level",
      "ns": "https://github.com/BSI-Bund/Stand-der-Technik-Bibliothek/tree/main/Dokumentation/namespaces/security_level.csv",
      "value": "normal-SdT"
    },
    {
      "name": "effort_level",
      "ns": "https://github.com/BSI-Bund/Stand-der-Technik-Bibliothek/tree/main/Dokumentation/namespaces/effort_level.csv",
      "value": "3"
    },
    {
      "name": "tags",
      "ns": "https://github.com/BSI-Bund/Stand-der-Technik-Bibliothek/tree/main/Dokumentation/namespaces/tags.csv",
      "value": "Security by Design"
    }
  ],
  "title": "Widerstandsfähigkeit gegen gängige Angriffsmuster"
}
View JSON API Download JSON