Bei einer sicherheitsorientierten Code-Review ist es entscheidend, sich auf häufige Schwachstellen und Sicherheitsprobleme zu konzentrieren, die die Anwendung erheblichen Risiken aussetzen könnten. Zu diesen Schwachstellen gehören unter anderem Cross-Site Scripting (XSS), SQL-Injection, Session-Tracking, Authentifizierung, Autorisierung, Logging und Informationsverlust.
Hier erfahren Sie, wie Sie diese Probleme bei der Code-Review angehen:
Cross-Site Scripting (XSS)
XSS tritt auf, wenn eine Anwendung das Einschleusen schädlicher Skripte in Daten ermöglicht, die Benutzern angezeigt werden. Um XSS zu verhindern, ist es entscheidend, alle Benutzereingaben zu validieren und zu filtern sowie Daten vor der Anzeige korrekt zu kodieren.
SQL-Injection
SQL-Injection tritt auf, wenn Benutzereingaben ohne angemessene Bereinigung in SQL-Abfragen verwendet werden, was es Angreifern ermöglicht, beliebige Befehle auf der Datenbank auszuführen. Es ist grundlegend, parametrisierte Abfragen oder Stored Procedures zu verwenden, um den SQL-Code von den Benutzerdaten zu trennen und so das Einschleusen bösartiger Befehle zu verhindern.
Session-Tracking
Das Session-Tracking ist unerlässlich, um die Sicherheit des Benutzers während der Navigation zu gewährleisten. Es muss sichergestellt werden, dass Session-IDs sicher generiert und nach Beendigung der Sitzung ordnungsgemäß ungültig gemacht werden. Zudem müssen Sitzungen gegen Session-Fixation- und Session-Hijacking-Angriffe geschützt werden.
Authentifizierung und Autorisierung
Diese beiden Aspekte sind entscheidend, um sicherzustellen, dass nur berechtigte Benutzer auf die entsprechenden Ressourcen zugreifen können. Die Authentifizierung sollte robust sein, vorzugsweise unter Verwendung einer Multi-Faktor-Authentifizierung, während die Autorisierung streng durchgesetzt werden muss, um sicherzustellen, dass Benutzer nur auf Daten und Funktionen zugreifen können, für die sie autorisiert sind.
Logging und Informationsverlust
Das Logging muss so implementiert sein, dass keine sensiblen Informationen preisgegeben werden. Die protokollierten Daten sollten auf das für Überwachung und Diagnose notwendige Maß beschränkt und vor unbefugtem Zugriff geschützt werden. Es ist zudem wichtig zu vermeiden, dass Protokolle sensible Daten wie Passwörter oder unmaskierte personenbezogene Daten (PII) enthalten.
Programmiersprachenspezifische Prüfungen
Jede Programmiersprache hat ihre eigenen Besonderheiten und typischen Schwachstellen. Beispielsweise können Sprachen wie C und C++ anfällig für Buffer Overflows sein, während Sprachen wie Java und C# aufgrund ihrer Speicherverwaltung weniger anfällig für diese Art von Angriffen sind. Während der Überprüfung ist es wichtig, die spezifischen Schwachstellen der verwendeten Sprache zu kennen und Best Practices anzuwenden, um die damit verbundenen Risiken zu mindern.
Kontextueller Ansatz und manuelle Überprüfung
Während statische Analysetools dabei helfen können, Schwachstellen im Code zu identifizieren, ist immer eine manuelle Überprüfung erforderlich, um den Kontext der Anwendung zu verstehen und die tatsächliche Schwere der Schwachstellen zu bewerten. Diese menschliche Überprüfung ist entscheidend, um spezifische Risiken zu identifizieren und die angemessensten Minderungsmaßnahmen vorzuschlagen.
🔙 Zurück zur Mini-Serie der ISGroup SRL zum Thema Code-Review!
Leave a Reply