Schlüsseltechnologie

STP078: Common Weakness Enumeration (Teil 1)


Listen Later

Nachdem wir kurz über Alex' Feedback gesprochen haben, soll es heute mal wieder um Sicherheit gehen; diesmal speziell darum, was Personen die Software schreiben beachten sollten, um die bekantesten Fallstricke sicher zu umgehen.

Shownotes
  • Rückbezug STP049: CVE-Datenbank für bekannte Sicherheitslücken in bestimmten Programmen (z.B. Heartbleed ist CVE-2014-0160)

    • betrieben von dem privaten Forschungsinstitut Mitre Corporation auf Basis von Fördermitteln der US-Regierung
    • April 2025: kurzzeitige Verwirrung nach Aussetzen des Fördervertrages, dann einen Tag später Kommando zurück (Pentaradio berichtete)
    • neben CVE pflegt Mitre Corp. eine weniger bekannte Datenbank: CWE (Common Weakness Enumeration), ein Klassifizierungssystem für Arten von Sicherheitslücken
    • wir besprechen die jährliche Rangliste der CWE Top 25 mit Stand von 2024
    • wertvoll, weil man so als interessierter Laie oder Programmierer-Generalist ein Gefühl für wichtige Angriffsvektoren bekommt
    • Platz 1: CWE-79; fehlerhafte Neutralisierung von Eingaben während der Erzeugung von Webseiten ("Cross-Site Scripting", XSS)

      • siehe Beispielbild im Link
      • Webseiten können JavaScript-Code enthalten, der auf dem Browser des Endanwenders ausgeführt wird
      • wenn Webseiten aus Eingaben anderer Benutzer zusammengebaut werden, können diese Code einschleusen
      • Lösung: Escaping (Entfernen oder Ersetzen von Zeichen mit syntaktischer Bedeutung), kann durch Template Engines teilweise automatisiert werden
      • passend dazu Platz 7: CWE-78; fehlerhafte Neutralisierung von Eingaben während der Erzeugung von Befehlszeilen
      • außerdem Platz 13: CWE-77; dasselbe für alle anderen Befehlssprachen, die nicht JavaScript oder die System-Shell sind
      • allgemeiner als Platz 12: CWE-20; unzureichende Überprüfung von Eingaben
      • Lösung: "assume all input is malicious"; nur Eingaben akzeptieren, die strikten Formatvorgaben folgen (z.B. unter Einsatz von regulären Ausdrücken, siehe STP021)
      • Platz 2, 6 und 20: CWE-787 und CWE-125; Schreiben bzw. Lesen außerhalb des allokierten Speicherbereichs ("Out-of-Bounds Write/Read") sowie als übergeordnete Kategorie CWE-119; allgemeiner Pufferüberlauf ("Buffer Overflow")

        • und passend dazu Platz 8: CWE-416; Benutzung nach dem Freigeben ("Use after Free")
        • alle bereits besprochen in STP047
        • Lösung: speichersichere Programmiersprachen, Speicherprofiling-Tools wie Valgrind (siehe STP076)
        • Platz 3: CWE-89; SQL-Injektion

          • SQL siehe STP012: Abfragesprache für relationale Datenbanksysteme
          • Beispiel siehe XKCD 327
          • Lösung: Datenwerte von der Abfrage trennen (z.B. SELECT * FROM users WHERE name = 'Alice' -> SELECT * FROM users WHERE name = $1 mit Datensatz ["Alice"])
          • passend dazu Platz 11: CWE-94; Code-Injektion (dasselbe für Programmcode); Überlapp zu CWE-77
          • Platz 4: CWE-352; Cross-Site Request Forgery (CSRF)

            • Angreifer möchte im Namen des Opfers eine Aktion ausführen (z.B. auf Rechnung des Opfers in einem Webshop bestellen)
            • Angreifer schiebt dem Opfer ein manipuliertes HTML-Formular unter, dass beim Abschicken die gewünschte Aktion auslöst, aber mit den Cookies (und damit der Identität des Opfers)
            • Lösung: CSRF-Tokens (echte HTML-Formulare erhalten ein einmalig nutzbares Token, dass nicht vom Angreifer gefälscht werden kann)
            • passend dazu Platz 19: CWE-918; Server-Site Request Forgery (SSRF)
            • dabei manipuliert der Angreifer nicht ein menschliches Opfer oder einen Webclient, sondern einen Webserver, mit seinem privilegierten Zugriff andere Webserver abzufragen
            • Platz 5: CWE-22; Pfaddurchquerung ("Path Traversal")

              • z.B. bei Webservern mit statischen Inhalten: entsprechende Dateien liegen im Dateisystem in einem bestimmten Ordner
              • Dateien außerhalb dieses Ordners sollen eigentlich nicht zugreifbar sein, aber manchmal geht http://example.com/../../../etc/passwd oder dergleichen
              • Lösung: magische Pfadelemente wie .. (bei Pfaden) oder / (bei Dateinamen) ablehnen
              • Feedback zu STP063

                Alex schreibt:

                danke für den Podcast. Ich bin wie immer weit im Rückstand mit Hören, habe zu Folge 63 aber mal die Turing-Maschine für die Subtraktion neu gebastelt. [...] Den Input muss man mit folgender 0 eingeben, also 1110110 z.B.

                Gebaut habe ich das auf https://turingmachinesimulator.com/.

                //----------------------------------------------------------------------
                //Syntax:
                //-------CONFIGURATION
                name: sub
                init: q0
                accept: qe
                //-------DELTA FUNCTION:
                //[current_state],[read_symbol]
                //[new_state],[write_symbol],[>|<|-]
                // < = left
                // > = right
                // - = hold
                // use underscore for blank cells
                q0,1 // 1en 1.Op überspringen
                q0,1,>
                q0,0
                q1,0,>
                q1,0 // 0en überspringen
                q1,0,>
                q1,1
                q2,1,>
                q2,0 // mehr als eine 1 im 2. Op? Ja->q5, nein->q3
                q3,0,<
                q2,1
                q5,1,>
                q5,1 // 1en 2.Op überspringen, dann auf letzte 1 des 2.Op
                q5,1,>
                q5,0
                q6,0,<
                q6,1 // letzte 1 des 2. Op durch 0 ersetzen
                q7,0,<
                q7,1 // zurück, 1en 2. Op überspringen
                q7,1,<
                q7,0
                q8,0,<
                q8,0 // zurück, 0en überspringen
                q8,0,<
                q8,1 // letzte 1 des 1. Op auf 0 setzen, zurück zu q1
                q1,0,>
                q3,1 // letzte 1 des 2. Op auf 0 setzen
                q4,0,<
                q4,0 // zurück, 0en überspringen
                q4,0,<
                q4,1 // letzte 1 des 1.Op auf Null setzen, zum Ende
                qe,0,>
                ...more
                View all episodesView all episodes
                Download on the App Store

                SchlüsseltechnologieBy Xyrillian Noises


                More shows like Schlüsseltechnologie

                View all
                Freak Show by Metaebene Personal Media - Tim Pritlove

                Freak Show

                11 Listeners

                Methodisch inkorrekt! by Methodisch inkorrekt!

                Methodisch inkorrekt!

                16 Listeners

                Lage der Nation - der Politik-Podcast aus Berlin by Philip Banse & Ulf Buermeyer

                Lage der Nation - der Politik-Podcast aus Berlin

                228 Listeners

                c’t uplink - der IT-Podcast aus Nerdistan by c’t Magazin

                c’t uplink - der IT-Podcast aus Nerdistan

                9 Listeners

                Chaosradio by Chaos Computer Club Berlin

                Chaosradio

                7 Listeners

                heiseshow by heise online

                heiseshow

                3 Listeners

                Logbuch:Netzpolitik by Metaebene Personal Media - Tim Pritlove

                Logbuch:Netzpolitik

                6 Listeners

                Jung & Naiv by Tilo Jung

                Jung & Naiv

                44 Listeners

                Holger ruft an by Übermedien

                Holger ruft an

                2 Listeners

                Die Wochendämmerung - Der stabile Wochenrückblick by Katrin Rönicke und Holger Klein (hauseins)

                Die Wochendämmerung - Der stabile Wochenrückblick

                14 Listeners

                Sicherheitshalber by Der Podcast zur sicherheitspolitischen Lage in Deutschland, Europa und der Welt.

                Sicherheitshalber

                46 Listeners

                Bit-Rauschen: Der Prozessor-Podcast von c’t by c't Magazin

                Bit-Rauschen: Der Prozessor-Podcast von c’t

                0 Listeners

                Legion by rbb | NDR | Undone

                Legion

                7 Listeners

                Haken dran – das Social-Media-Update der c't by Gavin Karlmeier

                Haken dran – das Social-Media-Update der c't

                2 Listeners

                Passwort - der Podcast von heise security by Dr. Christopher Kunz, Sylvester Tremmel

                Passwort - der Podcast von heise security

                3 Listeners