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
                Bits und so by Undsoversum GmbH

                Bits und so

                25 Listeners

                WRINT: Wer redet ist nicht tot by Holger Klein

                WRINT: Wer redet ist nicht tot

                15 Listeners

                Methodisch inkorrekt! by Methodisch inkorrekt!

                Methodisch inkorrekt!

                14 Listeners

                Apfelfunk by Malte Kirchner & Jean-Claude Frick

                Apfelfunk

                8 Listeners

                Das Wissen | SWR by SWR

                Das Wissen | SWR

                114 Listeners

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

                c’t uplink - der IT-Podcast aus Nerdistan

                6 Listeners

                Stay Forever - Retrogames & Technik by Stay Forever Team

                Stay Forever - Retrogames & Technik

                34 Listeners

                Logbuch:Netzpolitik by Metaebene Personal Media - Tim Pritlove

                Logbuch:Netzpolitik

                5 Listeners

                Computer und Kommunikation by Deutschlandfunk

                Computer und Kommunikation

                10 Listeners

                Der KI-Podcast by ARD

                Der KI-Podcast

                12 Listeners

                KI-Update – ein heise-Podcast by Isabel Grünewald, heise online

                KI-Update – ein heise-Podcast

                2 Listeners

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

                Passwort - der Podcast von heise security

                3 Listeners

                Geschichten aus der Mathematik by detektor.fm – Das Podcast-Radio

                Geschichten aus der Mathematik

                2 Listeners

                UNFASSBAR – ein Simplicissimus Podcast by Simplicissimus

                UNFASSBAR – ein Simplicissimus Podcast

                25 Listeners

                Darknet Diaries Deutsch by heise online

                Darknet Diaries Deutsch

                0 Listeners