Python-Code-Scanning: Code-Sicherheitsschwachstellen-Scanning auf Unternehmensebene, Bandit

Inhaltsverzeichnis

Was ist Bandit?

Merkmale

Installation und Konfiguration

Bandit konfigurieren

Externe Pycharm-Konfigurationstools

Nutzen Sie die Übung

Befehlszeilenparameter

Überprüfen Sie eine einzelne Datei

Überprüfen Sie das gesamte Verzeichnis

Scannen einer einzelnen Datei oder eines Projektverzeichnisses in PyCharm

ein Anwendungsfall

Anwendungsszenarien

Zusammenfassen

Verweise


Hinweis: Nachfolgende Technologiefreigaben, sofortige Updates sowie zeitnahere technische Informationen und technische Lernmaterialien werden auf dem offiziellen Konto CTO Plus veröffentlicht . Bitte folgen Sie dem offiziellen Konto: CTO Plus

Im vorherigen Artikel haben wir Bandit als Tool vorgestellt, das speziell zum Scannen von Sicherheitslücken in Python-Code verwendet wird. Das Scannen von Sicherheitslücken im Code ist einer der wichtigen Schritte zur Gewährleistung der Softwaresicherheit. Während des Softwareentwicklungsprozesses gibt es viele potenzielle Sicherheitslücken. Um diese Schwachstellen rechtzeitig zu entdecken und zu beheben, müssen wir professionelle Sicherheitsscan-Tools verwenden. Bandit kann uns dabei helfen, potenzielle Sicherheitsrisiken im Code zu überprüfen, z Injektion, XSS-Angriffe, SQL-Injektion und Verlust vertraulicher Informationen usw.

In diesem Artikel werde ich dieses beliebte Tool zum Scannen von Code-Sicherheitslücken, Bandit, unter der Python 3.11-Version vorstellen. Ich werde die Eigenschaften, Verwendungs- und Anwendungsszenarien von Bandit in Projekten vorstellen und seine Verwendung anhand eines praktischen Falls demonstrieren. und Wirkung.

Dieser Artikel „Python-Code-Scanning: Code Security Vulnerability Scanning Bandit auf Unternehmensebene“ ist der letzte Artikel in der Reihe „Codestandards und Scanning“. Sie können die vorherigen Artikel entsprechend Ihrer eigenen Situation lesen. Gleichzeitig weiterverfolgen Artikel aus dem öffentlichen Account CTO Plus

Statisches Scannen von Python-Code auf Unternehmensebene – Einführung in Codespezifikationen, Logik, Grammatik, Sicherheitsprüfungen und automatische Codeanordnung

Lesen Sie die Python PEP8-Codespezifikation durch

Python-Code-Scanning: Python-Linter-Tool der neuen Generation Ruff

Python-Code-Scanning: Ein Artefakt zur Verbesserung der Qualität des Python-Codes – ausführliche Erklärung und Nutzungsanleitung für Pylint

Python-Code-Scanning: Leichtes Python-Tool zur statischen Code-Analyse Pyflakes

Python-Code-Scanning: ein leistungsstarkes Tool zur Python-Codespezifikation und Fehlerprüfung – flake8 ausführliche Erklärung und Übung

Python-Code-Scanning: Die beste Wahl für die statische Typprüfung von Mypy

Python-Code-Scanning: Redundanz im Python-Code automatisch entfernen – Tipps und Beispiele zur Verwendung von Autoflake

Python-Code-Scanning: ein leistungsstarkes Tool zur Formatierung von Python-Code – ausführliche Erklärung und Best Practices

Scannen von Python-Code: Die schwarze Magie der Formatierung von Python-Code mit einem Klick – Tutorial zur schwarzen Verwendung

Python-Code-Scannen: Leitfaden zur automatischen Sortierung von Importanweisungen und isor-Nutzungsanleitungen und Beispielen

Python-Code-Scanning: ein Tool zur automatischen Reparatur des Python-Codestils – autopep8 ausführliche Erklärung und Beispiele

Python-Code-Scanning: Code-Sicherheitslücken-Scanning-Bandit auf Unternehmensebene

Was ist Bandit?

Bandit ist ein auf Python basierendes Tool zum Scannen von Sicherheitslücken im Code, mit dem Sicherheitsprobleme in Python-Code erkannt werden. Es kann Entwicklern helfen, Sicherheitslücken im Code schnell zu erkennen und zu beheben und die Softwaresicherheit zu verbessern. Bandit verwendet das AST-Modul in der Standardbibliothek, um Python-Quellcode in einen Baum zu analysieren, der aus Python-Syntaxknoten besteht. Mit Bandit können Benutzer benutzerdefinierte Tests schreiben. Nach Abschluss der Tests erstellt Bandit einen Sicherheitsbericht für den Quellcode.

Merkmale

Python Bandit hat die folgenden Eigenschaften:

1. Statische Code-Analyse: Python Bandit sucht durch statische Analyse des Quellcodes nach Sicherheitslücken und kann potenzielle Sicherheitsprobleme finden, ohne den Code auszuführen.

2. Benutzerdefinierte Regeln (Regeln zur Erkennung mehrerer Schwachstellen): Python Bandit bietet eine Reihe von Standardregeln. Die integrierten Regeln zur Erkennung mehrerer Schwachstellen umfassen Code-Injection, XSS-Angriffe, SQL-Injection usw. und unterstützen auch benutzerdefinierte Regeln. Wir können unsere eigenen Regeln basierend auf den Anforderungen des Projekts definieren, um spezifische Sicherheitsanforderungen zu erfüllen.

3. Erweiterte Erkennung: Python Bandit kann eine Vielzahl häufiger Sicherheitsprobleme erkennen, z. B. Code-Injection, XSS-Angriffe, Verlust vertraulicher Informationen, schwache Passwörter usw. Es verwendet eine Reihe von Algorithmen und Mustervergleichstechniken, um die Erkennungsgenauigkeit zu verbessern.

4. Berichtserstellung: Python Bandit kann detaillierte Berichte erstellen, einschließlich Beschreibung, Standort und empfohlenen Korrekturen für jedes Sicherheitsproblem. Mithilfe dieser Berichte können wir Sicherheitsprobleme schnell lokalisieren und beheben.

5. Einfache Integration und flexible Konfigurationsoptionen: Bandit kann in andere Tools (z. B. CI/CD-Tools, Editor-Plug-Ins – PyCharm usw.) integriert werden, um das automatisierte Scannen zu erleichtern. Gleichzeitig bietet Bandit eine Fülle von Konfigurationsmöglichkeiten, die je nach Projektanforderungen angepasst werden können.

Ich werde später eine detaillierte Analyse des Quellcodes und der Prinzipien dieses Tools durchführen. Artikel, die dem offiziellen CTO Plus- Konto folgen, sind willkommen. Wenn Sie Fragen haben, hinterlassen Sie bitte eine Nachricht im Hintergrund.

Installation und Konfiguration

Die Verwendung von Python Bandit ist sehr einfach. Befolgen Sie einfach diese Schritte:

1. Python Bandit installieren: Python Bandit kann über den Befehl pip installiert werden, wie unten gezeigt:

pip install bandit

Nachdem die Installation abgeschlossen ist, sehen Sie eine ausführbare Datei bandit.exe im Verzeichnis D:\env311\Scripts.

Bandit konfigurieren

Bandit erfordert standardmäßig keine Konfiguration. Wenn wir eine Konfiguration gemäß den tatsächlichen Anforderungen unseres Projekts vornehmen müssen, können wir eine Konfigurationsdatei mit dem Namen bandit.yaml übergeben. Wir können die Datei im Projektstammverzeichnis erstellen und die Regeln und festlegen Regeln, die überprüft werden müssen. Weitere Konfigurationsmöglichkeiten. Hier ist ein einfaches Beispiel für eine Konfigurationsdatei:

include:
  - "*.py"

exclude:
  - "tests/*"

plugins:
  blacklist_calls:  # 检测黑名单函数调用
    functions:
      - os.system
      - subprocess.Popen

In der obigen Konfigurationsdatei gibt „include“ die Dateien an, die überprüft werden müssen, „exclude“ gibt die Dateien oder Verzeichnisse an, die von der Überprüfung ausgeschlossen werden müssen, und „plugins“ gibt die Regeln und Blacklist-Funktionsaufrufe an, die überprüft werden müssen.

Externe Pycharm- Konfigurationstools

Bandit kann als externes Tool in PyCharm installiert werden. Öffnen Sie „Einstellungen“ und navigieren Sie zu „Extras“ > „Externe Tools“. Fügen Sie dort ein neues Tool mit der folgenden Konfiguration hinzu. Weitere Konfigurationsoptionen finden Sie in der offiziellen Dokumentation. Hier sind meine Konfigurationsoptionen:

Nachdem die Konfiguration abgeschlossen ist, können wir das Autopep8-Tool in PyCharm verwenden

Nutzen Sie die Übung

Hier sind einige Best Practices, die Sie berücksichtigen sollten, wenn Sie Bandit zum Scannen nach Sicherheitslücken im Code verwenden:

1. Kombiniert mit Versionskontrolle: Es wird empfohlen, den Scanvorgang von Bandit in Verbindung mit einem Versionskontrollsystem zu verwenden. Dies kann Scanvorgänge vor der Codeübermittlung oder in einer kontinuierlichen Integrationsumgebung durchführen und uns dabei helfen, Sicherheitsprobleme im Code rechtzeitig zu erkennen und zu beheben.

2. Zusammenarbeit mit Editor-Plug-Ins: Bandit bietet Plug-In-Integration mit vielen gängigen Editoren (wie VS Code, PyCharm usw.). Durch die Installation des entsprechenden Plug-Ins können Sie im Editor in Echtzeit Sicherheitslücken im Code prüfen und zeitnah Feedback geben, um die Codequalität zu verbessern.

3. Regelmäßiges Scannen und Aktualisieren: Sicherheitslücken im Code sind ein dynamisches Problem, und es entstehen ständig neue Schwachstellen und Angriffsmethoden. Daher wird empfohlen, Bandit regelmäßig zum Scannen von Sicherheitslücken im Code zu verwenden und die Bandit-Tools und -Regeln rechtzeitig zu aktualisieren, um die Sicherheit des Codes zu gewährleisten.

4. Mit anderen Tools kombinieren: Bandit ist ein hervorragendes Tool zum Scannen von Sicherheitslücken im Code, aber nicht die einzige Option. Im tatsächlichen Einsatz kann es mit anderen Sicherheitsscan-Tools (wie OWASP ZAP, SonarQube usw.) kombiniert werden, um umfassende Scans durchzuführen und die Sicherheit des Codes weiter zu verbessern. Ich werde diese anderen Sicherheitsüberprüfungstools später im Entwicklungsprozess des SDLC-Produkts ausführlich vorstellen. Bitte bleiben Sie auf dem Laufenden für die technischen Artikel hinter CTO Plus .

Befehlszeilenparameter

Hier fasse ich einige häufig verwendete Befehlszeilenparameter des Bandit-Tools zusammen. Weitere Informationen finden Sie in der offiziellen Dokumentation:

--recursive: Alle Dateien im Verzeichnis rekursiv verarbeiten.

--exclude=<Muster>: Auszuschließende Datei- oder Verzeichnismuster festlegen.

--configfile=<Datei>: Geben Sie die Konfigurationsdatei an.

Als Nächstes stellen wir verschiedene Verwendungsmethoden und ein Beispiel vor.

Überprüfen Sie eine einzelne Datei

Mit dem folgenden Befehl kann eine einzelne Python-Datei auf Sicherheitslücken überprüft werden:

bandit /path/to/file.py

Dadurch werden Sicherheitslücken und potenzielle Risiken in der Datei ausgegeben.

Überprüfen Sie das gesamte Verzeichnis

Alle Python-Dateien im gesamten Verzeichnis können mit dem folgenden Befehl auf Sicherheitslücken überprüft werden:

bandit --recursive /path/to/directory

Dadurch wird das Verzeichnis rekursiv durchsucht und alle Python-Dateien auf Sicherheitslücken überprüft.

Scannen einer einzelnen Datei oder eines Projektverzeichnisses in PyCharm

Dadurch werden alle Python-Dateien unter dem angegebenen Pfad gescannt und ein entsprechender Sicherheitsbericht erstellt. Die Ausgabe von Bandit umfasst Informationen wie Schwachstellenstufe, Schwachstellentyp, Schwachstellenbeschreibung und Codespeicherort. Entwickler können anhand der Ausgabeergebnisse Sicherheitsprobleme im Code umgehend erkennen und beheben.

ein Anwendungsfall

Angenommen, wir haben eine Python-Datei namens example.py mit folgendem Inhalt:

import os

def execute_command(command):
    os.system(command)

command = input("Enter a command: ")
execute_command(command)

Dieser Code weist eine Sicherheitslücke auf, d. h. die vom Benutzer eingegebenen Befehle werden zur Ausführung direkt an die Funktion os.system übergeben und es besteht die Gefahr einer Codeinjektion.

Wir können Bandit verwenden, um den Code auf Sicherheitslücken zu scannen. Der Befehl lautet wie folgt:

Bandit example.py

Nach Ausführung des obigen Befehls gibt Bandit die folgenden Ergebnisse aus:

[main] INFO-Profil umfasst Tests/*,*.py,*.pyw,*.cgi,*.fcgi,*.pyi,*.rpy,*.wsgi,*.cpx,*.pxd,*.pyx, *.pyd,*.so,*.dll,*.pyc,*.pyo

[main] INFO mit config: .bandit

[main] INFO läuft unter Python 3.9.1

[main] INFO zum Laden von Plugins

[main] INFO-Plugins geladen: BanditBasics, BanditCall, BanditImports, BanditImportsBanned, BanditImportsBlacklist, BanditImportsEnvironment, BanditImportsStdlib, BanditNodeVisitor, BanditPreloader, BanditPythonVersion, BanditSecurityGuard, BanditSecurityNodeVisitor, BanditSecurityPreloader, BanditSecuritySyntax Check, BanditSyntaxCheck, BanditUast, BanditVisitor, BanditVisitorBase, BanditVisitorFactory, BanditVisitorPreloader

[main] INFO läuft auf dem Betriebssystem Posix

[main] INFO [bandit.core.manager] Problem [B607:blacklist_calls] Berücksichtigen Sie mögliche Sicherheitsauswirkungen im Zusammenhang mit dem Unterprozessmodul.

[main] INFO [bandit.core.manager] Problem [B607:blacklist_calls] Berücksichtigen Sie mögliche Sicherheitsauswirkungen im Zusammenhang mit der os.system-Funktion.

[main] INFO [bandit.core.manager] Problem [B701:blacklist] Verwendung einer möglicherweise unsicheren Funktion – erwägen Sie stattdessen die sicherere Verwendung von „subprocess.run“.

Wie aus den obigen Ergebnissen hervorgeht, hat Bandit Sicherheitslücken im Code erkannt und entsprechende Warnhinweise ausgegeben.

Anhand der Ausgabe von Bandit können wir erkennen, dass es im Code ein Problem mit Blacklist-Funktionsaufrufen gibt, und es wird empfohlen, stattdessen sicherere Funktionen zu verwenden.

Anwendungsszenarien

Python Bandit kann in vielen Projekten eingesetzt werden, insbesondere bei solchen, die Benutzereingaben und die Verarbeitung sensibler Daten beinhalten. Im Folgenden sind einige Anwendungsszenarien von Python Bandit aufgeführt, die ich zusammengefasst habe:

1. Webanwendungen: Bei in Python geschriebenen Webanwendungen kann uns Python Bandit dabei helfen, Sicherheitsprobleme wie XSS-Angriffe, SQL-Injection und Command-Injection im Code zu überprüfen.

2. Codeüberprüfung (Codesicherheit): Bei der Entwicklung und Bereitstellung von APIs kann Python Bandit uns dabei helfen, den Code auf Sicherheitslücken zu prüfen, wie z. B. den Verlust sensibler Informationen, Berechtigungsprobleme und Cross-Site Request Forgery (CSRF).

3. Datenverarbeitung: Bei Projekten, die sensible Daten wie Benutzerkennwörter und Kreditkarteninformationen verarbeiten, kann Python Bandit uns dabei helfen, Sicherheitsprobleme im Code zu überprüfen, um die Sicherheit der Daten zu gewährleisten.

4. Open-Source-Projekte: Bei in Python geschriebenen Open-Source-Projekten kann uns Python Bandit dabei helfen, Sicherheitsprobleme im Code zu überprüfen, um die Qualität und Zuverlässigkeit des Projekts zu verbessern.

Zusammenfassen

Python Bandit ist ein leistungsstarkes Tool, das uns bei der Suche nach Sicherheitslücken im Python-Code helfen kann. Es analysiert den Code statisch, um potenzielle Sicherheitsprobleme zu finden, und erstellt detaillierte Berichte. Mithilfe der Empfehlungen im Bericht können wir Sicherheitsprobleme im Code beheben und so die Qualität und Zuverlässigkeit des Codes verbessern. In Szenarien wie Webanwendungen, API-Entwicklung, Datenverarbeitung und Open-Source-Projekten kann Python Bandit eine wichtige Rolle dabei spielen, die Sicherheit unseres Codes zu gewährleisten.

Verweise

  1. Willkommen bei Bandit – Bandit-Dokumentation
  2. GitHub – PyCQA/bandit: Bandit ist ein Tool, das entwickelt wurde, um häufige Sicherheitsprobleme in Python-Code zu finden.
  3. Python-Codespezifikationen: Statisches Scannen von Code auf Unternehmensebene – Codespezifikationen, Logik, Syntax, Sicherheitsprüfungen und automatische Anordnung von Codespezifikationen (1)_pycharm Überprüfen Sie die Codespezifikationen_SteveRockets Blog-CSDN-Blog
  4. https://blog.csdn.net/zhouruifu2015/article/details/129877179

Python-Kolumne
https://blog.csdn.net/zhouruifu2015/category_5742543


Weitere Informationen · Durchsuchen Sie das öffentliche WeChat-Konto [ CTO Plus ] und folgen Sie ihm, um weitere Informationen zu erhalten. Lassen Sie uns gemeinsam lernen und kommunizieren.

Eine Beschreibung des öffentlichen Kontos finden Sie unter dem folgenden Link


Für weitere spannende Neuigkeiten folgen Sie meinem offiziellen Account und lernen und wachsen Sie gemeinsam.

Über Articulate „Seien Sie ein Träger von Wissen und Technologie. Seien Sie ein Enthusiast des lebenslangen Lernens. Seien Sie ein technischer Kreis mit Tiefe und Breite.“ Ich wollte schon immer Fähigkeiten im beruflichen Bereich entwickeln https://mp.weixin.qq. com icon-default.png?t=N7T8/ s?__biz=MzIyMzQ5MTY4OQ==&mid=2247484278&idx=1&sn=2b774f789b4c7a2ccf10e465a1b9def6&chksm=e81c2070df6ba966026fd7851efa824b5e2704e3fd34e 76228ca4ce64d93f7964cd4abe60f2b#rd

Standard-Bibliotheksreihe – empfohlene Lektüre:

Empfohlene
Lektüre:

Supongo que te gusta

Origin blog.csdn.net/zhouruifu2015/article/details/131264465
Recomendado
Clasificación