Schwachstellen
Von SQL Injection bis SSRF: was es ist, wie ein Angriff abläuft und wie Sie es beheben.
A01:2021Broken Access Control14 Artikel
- Broken Access ControlBroken Access Control erklärt: horizontale und vertikale Rechteausweitung, Forced Browsing und warum Deny by Default serverseitig gehört.
- Privilege EscalationPrivilege Escalation erklärt: wie Angreifer über ein Rollenfeld aus der Anfrage oder eine ungeschützte Admin-Route zum Administrator werden.
- Unzureichende Autorisierung auf FunktionsebeneEine nur aus dem Menü entfernte Verwaltungsfunktion bleibt über eine direkte Anfrage erreichbar. Lesen Sie, wie Sie Autorisierung je Funktion erzwingen.
- Unzureichende Autorisierung auf Objektebene in APIsEine API, die nur prüft, ob Sie angemeldet sind, nicht aber, ob dieser Datensatz Ihnen gehört, gibt fremde Daten preis. Lesen Sie, wie Sie das erzwingen.
- API-Antworten enthalten zu viele DatenEine API, die vollständige Datensätze zurückgibt und das Filtern dem Frontend überlässt, gibt Felder preis, die niemand sehen sollte.
- Cross-Site WebSocket HijackingEine WebSocket-Verbindung fällt nicht unter die Same-Origin-Policy. Ohne Origin-Prüfung kann eine fremde Seite mitlesen und mitsenden.
- Information DisclosureInformation Disclosure erklärt: wie Stack Traces, .git-Verzeichnisse, Source Maps und zu großzügige API-Antworten Daten preisgeben.
- Insecure Direct Object Reference (IDOR)IDOR erklärt: Wie Angreifer über manipulierte IDs in URLs oder APIs fremde Daten einsehen oder ändern - und wie Sie die Schwachstelle finden und beheben.
- IP-Adresse aus einem Header vertrautLeitet Ihre Anwendung die IP-Adresse aus einem Header ab, bestimmt der Client diese Adresse. Lesen Sie, wie das Limits und Zugriffsregeln umgeht.
- Mass AssignmentWer einen ganzen Anfragekörper auf ein Modell bindet, macht isAdmin oder guthaben beschreibbar. Lesen Sie, wie eine Positivliste das verhindert.
- Path Traversal (Directory Traversal)Path Traversal (Directory Traversal) erklärt: Wie Angreifer mit ../ aus dem Zielverzeichnis ausbrechen und sensible Dateien lesen, und wie Sie es verhindern.
- Sitzung bleibt nach dem Löschen eines Kontos gültigEin gesperrtes oder gelöschtes Konto mit aktiver Sitzung behält häufig seinen Zugang. Lesen Sie, warum das geschieht und wie Sie es erzwingen.
- Cross-Site Request Forgery (CSRF)Cross-Site Request Forgery (CSRF) erklärt: wie Angreifer den Browser angemeldeter Nutzer für ungewollte Aktionen missbrauchen und wie Sie das verhindern.
- Open RedirectOpen Redirect erklärt: wie ein returnUrl-Parameter Besucher auf eine Phishing-Seite schickt, welche Umgehungen funktionieren und wie Sie sicher weiterleiten.
A02:2021Cryptographic Failures5 Artikel
- Unsichere Speicherung von PasswörternMD5, SHA-1 und Verschlüsselung eignen sich nicht für Passwörter. Lesen Sie, welche Verfahren gehören und wie Sie ohne Aufwand für Nutzer migrieren.
- Cryptographic FailuresCryptographic Failures erklärt: MD5 für Passwörter, ECB-Modus, feste IVs und selbstgebaute Krypto, und warum Argon2id und AES-GCM es besser machen.
- Unsicherer Transport und schwaches TLSUnsicherer Transport erklärt: Plain HTTP, fehlendes HSTS, veraltete TLS-Versionen und Cookies ohne Secure, und wie Sie HTTPS überall erzwingen.
- Fehlende HTTP Strict Transport SecurityOhne HSTS kann die erste Anfrage eines Nutzers unverschlüsselt hinausgehen. Lesen Sie, wie ein Downgrade-Angriff abläuft und wie Sie den Header richtig setzen.
- Schwacher DKIM-SchlüsselEin DKIM-Schlüssel von 1024 Bit oder kürzer lässt sich mit heutigen Mitteln brechen. Lesen Sie, wie Sie auf 2048 Bit wechseln und warum Rotation dazugehört.
A03:2021Injection12 Artikel
- NoSQL InjectionNoSQL Injection erklärt: wie Angreifer über eine JSON-Anfrage MongoDB-Operatoren wie $ne einschleusen und wie Sie das mit Schemavalidierung verhindern.
- OS Command InjectionOS Command Injection erklärt: wie Shell-Sonderzeichen in einen Systemaufruf gelangen, was ein Angreifer erreicht und wie Argumentlisten das verhindern.
- Remote Code Execution (RCE)Remote Code Execution (RCE) erklärt: wie Angreifer über ungefilterte Eingaben eigene Befehle oder Code auf Ihrem Server ausführen und wie Sie es verhindern.
- Server-Side Template Injection (SSTI)Server-Side Template Injection (SSTI) erklärt: wie Eingaben in die Template-Engine gelangen, zu Remote Code Execution führen und wie Sie es verhindern.
- SQL InjectionSQL Injection erklärt: wie Angreifer über ungefilterte Eingaben Ihre Datenbank auslesen oder verändern und wie Sie es mit Prepared Statements verhindern.
- CRLF Injection und HTTP Response SplittingCRLF Injection erklärt: wie ein Zeilenumbruch in einem HTTP-Header die Antwort spaltet oder ein Set-Cookie fälscht und wie Sie das verhindern.
- Cross-Site Scripting über Datei-UploadEine hochgeladene SVG- oder HTML-Datei von Ihrer eigenen Domain führt Skriptcode in Ihrem Ursprung aus. Lesen Sie, wie Sie das schließen.
- Cross-Site-Scripting (XSS)Cross-Site-Scripting (XSS) schleust schädliche Skripte in Webseiten ein, die im Browser der Besucher laufen. So funktioniert XSS und so verhindern Sie es.
- CSV-Injection in ExportdateienEine exportierte CSV kann Formeln enthalten, die Excel auf dem Rechner Ihrer Kollegen ausführt. Lesen Sie, wie das abläuft und wie Sie es verhindern.
- Host Header InjectionBaut Ihre Anwendung Links aus dem Host-Header, bestimmt der Angreifer, wohin diese zeigen. Lesen Sie, wie das eine Passwortwiederherstellung kapert.
- LDAP InjectionLDAP Injection erklärt: wie Angreifer mit Filterzeichen die Anmeldung umgehen und wie Sie das mit RFC-4515-Escaping und einem echten Bind verhindern.
- Prototype PollutionPrototype Pollution erklärt: wie __proto__ über eine rekursive Merge-Funktion in Object.prototype gelangt und wie Sie das wirksam verhindern.
A04:2021Insecure Design4 Artikel
- Unbeschränkter Datei-UploadEine Uploadfunktion ohne Beschränkungen kann zur Codeausführung auf Ihrem Server führen. Lesen Sie, welche Prüfungen nötig sind und welche nicht genügen.
- Eingabevalidierung fehlt auf dem ServerValidierung, die nur in JavaScript stattfindet, lässt sich mit einer direkten Anfrage umgehen. Lesen Sie, warum der Server jeden Wert erneut prüfen muss.
- Hochladen schädlicher Dateien möglichEine Upload-Funktion ohne Inhaltsprüfung macht Ihre Plattform zum Träger von Schadsoftware, wobei Ihr Domainname die Glaubwürdigkeit liefert.
- Keine Ratenbegrenzung auf der APIOhne Ratenbegrenzung lässt sich eine API endlos abfragen. Lesen Sie, wie das zu Datendiebstahl, Kostenmissbrauch und Ausfällen führt.
A05:2021Security Misconfiguration23 Artikel
- Debugmodus in der Produktion eingeschaltetEin aktiver Debugmodus oder Profiler zeigt Konfiguration, Abfragen und mitunter eine Konsole. Lesen Sie, wie das missbraucht wird und wie Sie es abschalten.
- Quellcode öffentlich erreichbarEin mitveröffentlichter .git-Ordner oder eine Sicherungsdatei gibt Ihren gesamten Quellcode preis, samt Passwörtern aus alten Commits.
- Standarddateien des Webservers erreichbarBeispielseiten, Verwaltungskonsolen und Installationsdateien, die nach der Einrichtung stehen bleiben, verraten Ihre Plattform und sind mitunter missbrauchbar.
- Unnötige Dienste aus dem Internet erreichbarDatenbanken, Verwaltungsports und Überwachungsoberflächen am Internet werden binnen Minuten gefunden. Lesen Sie, wie Sie diese Fläche verkleinern.
- E-Mail im Namen Ihrer Domain versendenOhne korrekte SPF-, DKIM- und DMARC-Einträge kann jeder E-Mails im Namen Ihrer Domain versenden. Lesen Sie, wie Sie das schließen.
- GraphQL-Introspektion und ungeschützte FelderIntrospektion gibt Ihr vollständiges GraphQL-Schema preis, einschließlich Feldern, die Ihr Frontend nie abfragt. Lesen Sie, wie Sie das abdecken.
- Security MisconfigurationSecurity Misconfiguration erklärt: wie Standardpasswörter, Debug-Modi und offene Cloud-Buckets Angreifern Zugang geben, und wie Sie sich schützen.
- Unsichere CORS-KonfigurationEine CORS-Richtlinie, die jede Herkunft spiegelt, gibt fremden Seiten Zugriff auf Ihre API im Namen angemeldeter Nutzer. Lesen Sie, wie Sie sie richtig setzen.
- Veraltete API-Versionen bleiben erreichbarEine alte API-Version, die neben der neuen weiterläuft, entbehrt der später ergänzten Prüfungen. Lesen Sie, wie Angreifer diesen Umweg nutzen.
- Verzeichnisstruktur sichtbarBei eingeschaltetem Directory Listing zeigt der Webserver den Inhalt jedes Ordners ohne Indexdatei. Lesen Sie, was ein Angreifer dort findet.
- XML External Entity Injection (XXE)XML External Entity Injection (XXE) erklärt: Wie Angreifer über einen XML-Parser Dateien lesen und interne Systeme erreichen, und wie Sie es verhindern.
- ClickjackingClickjacking erklärt: Wie ein Angreifer Ihre Website unsichtbar in einen Frame lädt und Klicks Ihrer Nutzer abfängt, und welche Header das blockieren.
- CSP erlaubt Inline-Skripte und evalEine CSP mit unsafe-inline oder unsafe-eval hält Cross-Site Scripting nicht mehr auf. Lesen Sie warum, und wie Sie mit Nonces und Hashes davon loskommen.
- Detaillierte FehlermeldungenStacktraces und Datenbankfehler verraten Technik, Pfade und Abfragen. Lesen Sie, was ein Angreifer daraus zieht und wie Sie Fehler behandeln.
- Fehlende Content Security PolicyOhne Content Security Policy lädt der Browser Skripte aus jeder Quelle. Lesen Sie, was eine CSP leistet und welche Fehler sie entwerten.
- Metadaten in veröffentlichten DateienDokumente und Fotos tragen verborgene Angaben mit sich: Namen, interne Pfade, Software und mitunter Standorte. Lesen Sie, wie Sie diese entfernen.
- MIME-Sniffing nicht abgeschaltetOhne X-Content-Type-Options darf der Browser selbst raten, was eine Datei ist. Lesen Sie, wie ein hochgeladenes Bild so als Skript ausgeführt wird.
- Sensible Daten an Analysedienste weitergegebenAnalyse- und Fehlerberichtsskripte übermitteln Seitentitel, URLs und mitunter Formularinhalte. Lesen Sie, was unbeabsichtigt mitgeht.
- Unsichere HTTP-Methoden zugelassenTRACE, PUT und DELETE an einem Webserver werden selten gebraucht und sind mitunter missbrauchbar. Lesen Sie, welche Methoden Sie abschalten.
- Fehlende Permissions-PolicyMit einer Permissions-Policy legen Sie fest, welche Browserfunktionen Ihre Website nutzen darf. Lesen Sie, wie Sie Kamera und Standort abschalten.
- Fehlende Referrer-PolicyOhne Referrer-Policy gibt der Browser die vollständige URL Ihrer Seite an jede externe Website weiter. Lesen Sie, was dabei ausläuft.
- Interne IP-Adressen und Hostnamen offengelegtInterne Adressen und Servernamen in Headern, Fehlermeldungen oder Weiterleitungen zeichnen einem Angreifer Ihr Netz. Lesen Sie, wo sie nach außen gelangen.
- Versionsinformationen in HTTP-HeadernHeader wie Server und X-Powered-By nennen genau, welche Software Sie einsetzen. Lesen Sie, warum das gezieltes Scannen erleichtert.
A06:2021Vulnerable and Outdated Components1 Artikel
A07:2021Identification and Authentication Failures19 Artikel
- Broken AuthenticationBroken Authentication erklärt: wie Angreifer über Brute Force, geleakte Passwörter und vorhersagbare Session-Tokens Konten übernehmen und was dagegen hilft.
- JWT-Schwachstellenalg:none, HS256/RS256-Verwechslung, ungeprüfte Signaturen und fehlende Claim-Prüfungen. Lesen Sie, wie Sie ein JWT sicher überprüfen.
- Anwendung nutzt Basic AuthenticationBasic Authentication sendet das Passwort bei jeder Anfrage in einer umkehrbaren Kodierung mit. Lesen Sie die Risiken und die Alternativen.
- Brute Force und Credential StuffingAngreifer raten Passwörter oder spielen geleakte Anmeldedaten erneut ein. Lesen Sie, welche Grenzen und welcher zweite Faktor beides stoppen.
- JWT bleibt nach dem Abmelden gültigEin JWT gilt bis zu seinem Ablaufdatum und kümmert sich nicht um das Abmelden. Lesen Sie, wie Sie Token dennoch widerrufen können.
- Keine erneute Authentifizierung bei sensiblen ÄnderungenWer E-Mail-Adresse oder Passwort ohne Abfrage des aktuellen Passworts ändern kann, macht aus jeder gekaperten Sitzung eine dauerhafte Übernahme.
- Mehrfaktorauthentifizierung fehltOhne zweiten Faktor genügt ein geleaktes Passwort für vollen Zugriff. Lesen Sie, welche MFA-Formen Schutz bieten und welche nicht.
- Mehrfaktorauthentifizierung ohne Verifizierung abschaltbarEin zweiter Faktor, der sich mit einem Klick abschalten lässt, schützt nur vor Angreifern, die nicht daran denken. Lesen Sie, wie Sie das schließen.
- Mehrfaktorauthentifizierung wird nicht erzwungenMFA, die verfügbar, aber nicht verpflichtend ist, wird von wenigen Nutzern eingeschaltet. Lesen Sie, wie Sie sie erzwingen, ohne Nutzer auszusperren.
- Session FixationSession Fixation erklärt: wie ein Angreifer eine Session ID im Voraus festlegt, warum sie nach dem Login gültig bleibt und wie Rotation das verhindert.
- Sitzungskennung in der URLEine Session-ID in der URL landet in Protokolldateien, im Browserverlauf und in Referrer-Headern. Lesen Sie, warum das Sitzungen preisgibt.
- Authentifizierungscookie mit zu langer GültigkeitEin Session-Cookie, das monatelang gilt, macht aus jedem gestohlenen Token einen dauerhaften Schlüssel. Lesen Sie, wie Angemeldet-bleiben sicher wird.
- Ermitteln gültiger BenutzernamenUnterschiedliche Fehlermeldungen beim Anmelden verraten, welche Konten existieren. Lesen Sie, wie Angreifer das nutzen und wie Sie die Antworten angleichen.
- Schwache Anforderungen an PasswörterKomplexitätsregeln liefern schwächere Passwörter als Länge und eine Sperrliste. Lesen Sie, welche Anforderungen nach heutigem Stand wirklich wirken.
- Sitzung bleibt nach dem Abmelden gültigEin Abmelden, das nur das Cookie löscht, lässt das Token serverseitig bestehen. Lesen Sie, wie eine erbeutete Sitzung dann einfach weiter funktioniert.
- Sitzungen laufen nicht abEine Sitzung ohne Ablaufzeit bleibt unbegrenzt nutzbar. Lesen Sie, warum das gestohlene Token wertvoll macht und wie Sie ein sinnvolles Zeitlimit setzen.
- Ungeschütztes AuthentifizierungscookieEin Session-Cookie ohne HttpOnly, Secure und SameSite ist auslesbar, abfangbar und missbrauchbar. Lesen Sie, was jedes Attribut genau abdeckt.
- Passwortfelder werden automatisch ausgefülltDas automatische Ausfüllen von Passwörtern ist auf einem Anmeldeformular erwünscht, aber nicht in jedem Feld. Lesen Sie, wo es Aufmerksamkeit verlangt.
- SameSite-Attribut auf Lax statt StrictSameSite=Lax lässt Cookies bei Navigation von externen Seiten weiterhin mitgehen. Lesen Sie, wann das ein Risiko ist und wann Strict die bessere Wahl ist.