Code Review: Methodik und Techniken

Das Code-Review ist eine grundlegende Komponente zur Gewährleistung der Anwendungssicherheit. Die während dieser Phase eingesetzte Methodik und die Techniken müssen gut strukturiert sein, um die Effektivität des Prozesses zu maximieren und die Wahrscheinlichkeit zu minimieren, dass kritische Schwachstellen unentdeckt bleiben.

Lassen Sie uns vertiefen, wie eine solide Methodik und spezifische Techniken angewendet werden können, um dieses Ziel zu erreichen.

Strukturierung des Code-Reviews

Die Methodik für das Code-Review muss so konzipiert sein, dass sie sich nahtlos in den Softwareentwicklungszyklus integriert. Diese Integration erfolgt durch eine Reihe klar definierter Schritte, die die Planung der Überprüfung, die Analyse des Codes und das Reporting der Ergebnisse umfassen. Jeder Schritt muss systematisch ausgeführt werden, um sicherzustellen, dass alle relevanten Bereiche des Codes angemessen untersucht werden.

1. Planung des Code-Reviews

Das Code-Review beginnt mit einer Planungsphase. Während dieser Phase werden die Softwaremodule oder Funktionen identifiziert, die eine gründliche Überprüfung erfordern. Diese Auswahl wird häufig durch eine Risikobewertung geleitet, die Faktoren wie die Kritikalität der Funktionen, die Anfälligkeit für potenzielle Angriffe und die Auswirkungen, die eine Schwachstelle auf die gesamte Anwendung haben könnte, berücksichtigt.

Die Planung sollte Folgendes beinhalten:

  • Zuweisung der Prüfer: Identifizierung von Personen mit den erforderlichen Kompetenzen, einschließlich spezifischer Kenntnisse der verwendeten Programmiersprache und Sicherheitstechniken.
  • Zeitplan: Festlegung, wann und wie häufig die Überprüfungen durchgeführt werden, insbesondere in einem agilen Entwicklungsumfeld mit kurzen Iterationen.

2. Durchführung der Überprüfung

Das Code-Review kann mit verschiedenen Techniken durchgeführt werden, die je nach Kontext und spezifischen Projektzielen variieren. Zu den wichtigsten Techniken gehören:

  • Manuelle Überprüfung: Beinhaltet die direkte Analyse des Codes durch einen oder mehrere Prüfer. Diese Technik ermöglicht es, Schwachstellen zu identifizieren, die automatisierten Tools entgehen könnten, wie z. B. Logikfehler, Implementierungsfehler und Mängel im spezifischen Kontext der Anwendung. Die manuelle Überprüfung ist besonders effektiv bei der Erkennung komplexer Probleme wie fehlender Zugriffskontrollen auf Funktionsebene oder Problemen bei der Sitzungsverwaltung.
  • Statische Code-Analyse: Besteht in der Verwendung automatisierter Tools zur Analyse des Quellcodes, ohne diesen auszuführen. Diese Tools können bekannte Schwachstellenmuster wie Buffer Overflows, Injection-Fehler und andere häufige Probleme identifizieren. Die statische Analyse ist nützlich, um große Teile des Codes schnell abzudecken, muss jedoch immer von einer manuellen Überprüfung begleitet werden, um Fehlalarme (False Positives) zu verifizieren und die Ergebnisse zu kontextualisieren.
  • Code Crawling: Eine spezifischere Technik, die die automatisierte Analyse des Code-Flusses beinhaltet, um nachzuvollziehen, wie sich Daten durch eine Anwendung bewegen. Dies hilft dabei, mögliche Eintrittspunkte für Angriffe zu identifizieren, wie z. B. nicht validierte Benutzereingaben, die zu Schwachstellen wie SQL-Injection oder Cross-Site Scripting (XSS) führen könnten.
  • Threat Modeling: Obwohl es im Allgemeinen vor dem Code-Review durchgeführt wird, kann das Bedrohungsmodellierung (Threat Modeling) den Überprüfungsprozess direkt beeinflussen, indem es die Schlüsselbereiche identifiziert, die detaillierter untersucht werden müssen. Dies ermöglicht es den Prüfern, sich auf die aus Sicherheitssicht kritischsten Teile des Codes zu konzentrieren.

3. Reporting und Follow-up

Sobald das Code-Review abgeschlossen ist, müssen die Ergebnisse klar und detailliert dokumentiert werden. Ein guter Code-Review-Bericht enthält:

  • Beschreibung der Schwachstellen: Jede identifizierte Schwachstelle muss klar beschrieben werden, mit Hinweisen darauf, wie sie entdeckt wurde und welche potenziellen Auswirkungen sie hat.
  • Priorisierung: Die Schwachstellen müssen nach ihrem Schweregrad und dem Risiko, das sie für die Anwendung darstellen, klassifiziert werden. Dies hilft dem Entwicklungsteam zu verstehen, welche Probleme dringend behoben werden müssen.
  • Empfehlungen: Vorschläge zur Behebung der identifizierten Schwachstellen, einschließlich spezifischer Code-Änderungen oder der Implementierung zusätzlicher Sicherheitskontrollen.
  • Feedback und Zusammenarbeit: Es ist wichtig, einen offenen Dialog zwischen Prüfern und Entwicklern aufrechtzuerhalten, um sicherzustellen, dass die Korrekturen verstanden und korrekt implementiert werden.

Spezifische Techniken

Einige spezifische Techniken, die während der Überprüfung eingesetzt werden können, umfassen:

  • Source-to-Sink-Analyse: Diese Technik besteht darin, den Datenpfad vom Ursprung (Source) bis zum Ziel (Sink) zu verfolgen und Punkte zu identifizieren, an denen Daten auf gefährliche Weise manipuliert werden können. Sie ist besonders nützlich, um Schwachstellen wie SQL-Injection oder XSS zu erkennen.
  • Verwendung von Checklisten: Die Verwendung von Checklisten während des Code-Reviews kann dazu beitragen, sicherzustellen, dass alle kritischen Sicherheitsaspekte untersucht werden. Checklisten können an die spezifischen Sicherheitsanforderungen der Anwendung angepasst werden und Aspekte wie Authentifizierungsmanagement, Verschlüsselung, Fehlerbehandlung und Sicherheitskonfiguration abdecken.
  • Überprüfung von Drittanbieter-Komponenten: Ein oft übersehener Teil des Code-Reviews ist die Untersuchung der in der Anwendung verwendeten Drittanbieter-Komponenten. Diese Komponenten können Schwachstellen einführen, wenn sie nicht aktualisiert werden oder nicht sorgfältig ausgewählt wurden.

🔙 Zurück zur Miniserie von ISGroup SRL zum Thema Code Review!

Leave a Reply

Your email address will not be published. Required fields are marked *