Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
modelscan — Schutz vor Modell-Serialisierungsangriffen | Kitploit
Tools/GitHubGitHub/protectai/modelscan
DefensivwerkzeugeStatische AnalyseSchwachstellenscannerDevSecOpsLieferkettensicherheitMaschinelles LernenKI-Sicherheit
GitHubprotectai/modelscan

modelscan

Schutz vor Modell-Serialisierungsangriffen

Repository anzeigen
765162vor 6 MonatenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Webseite

ModelScan Banner bandit build black mypy tests Supported Versions pypi Version License: Apache 2.0 pre-commit

ModelScan: Schutz vor Modell-Serialisierungsangriffen

Modelle des maschinellen Lernens (ML) werden öffentlich über das Internet, innerhalb von Teams und teamübergreifend geteilt. Der Aufstieg der Foundation Models hat dazu geführt, dass öffentliche ML-Modelle zunehmend für weiteres Training beziehungsweise Fine-Tuning verwendet werden. ML-Modelle werden immer häufiger eingesetzt, um kritische Entscheidungen zu treffen und geschäftskritische Anwendungen zu betreiben. Trotzdem werden Modelle noch nicht mit der gleichen Sorgfalt gescannt wie eine PDF-Datei in Ihrem Posteingang.

Das muss sich ändern, und die richtigen Werkzeuge sind der erste Schritt.

ModelScan-Vorschau

ModelScan ist ein Open-Source-Projekt von Protect AI, das Modelle scannt, um festzustellen, ob sie unsicheren Code enthalten. Es ist das erste Modell-Scan-Tool, das mehrere Modellformate unterstützt. ModelScan unterstützt derzeit die Formate H5, Pickle und SavedModel. Das schützt Sie bei der Verwendung von PyTorch, TensorFlow, Keras, Sklearn, XGBoost – weitere folgen.

TL;DR

Wenn Sie bereit sind, mit dem Scannen Ihrer Modelle zu beginnen, ist es einfach:

root@kitploit:~
pip install modelscan

Nach der Installation scannen Sie ein Modell:

root@kitploit:~
modelscan -p /path/to/model_file.pkl

Warum Sie Modelle scannen sollten

Modelle werden oft von automatisierten Pipelines erstellt, andere stammen möglicherweise vom Laptop eines Data Scientists. In beiden Fällen muss das Modell von einer Maschine zur anderen bewegt werden, bevor es verwendet wird. Dieser Prozess des Speicherns eines Modells auf der Festplatte wird als Serialisierung bezeichnet.

Ein Model-Serialization-Angriff liegt vor, wenn schädlicher Code während der Serialisierung (Speichern) vor der Verteilung zu den Inhalten eines Modells hinzugefügt wird – eine moderne Version des Trojanischen Pferdes.

Der Angriff nutzt den Speicher- und Ladevorgang von Modellen aus. Wenn Sie ein Modell mit model = torch.load(PATH) laden, öffnet PyTorch den Inhalt der Datei und beginnt, den darin enthaltenen Code auszuführen. In dem Moment, in dem Sie das Modell laden, ist der Exploit bereits ausgeführt.

Ein Model-Serialization-Angriff kann verwendet werden, um Folgendes auszuführen:

  • Diebstahl von Zugangsdaten (Cloud-Zugangsdaten zum Schreiben und Lesen von Daten auf anderen Systemen in Ihrer Umgebung)
  • Datendiebstahl (die an das Modell gesendete Anfrage)
  • Datenvergiftung (die Daten, die gesendet werden, nachdem das Modell seine Aufgabe erfüllt hat)
  • Modellvergiftung (Veränderung der Ergebnisse des Modells selbst)

Diese Angriffe sind unglaublich einfach auszuführen, und funktionierende Beispiele finden Sie in unserem 📓-Ordner notebooks.

Durchsetzung und Automatisierung der Modellsicherheit

ModelScan bietet ein robustes Open-Source-Scanning. Wenn Sie umfassende KI-Sicherheit benötigen, ziehen Sie Guardian in Betracht. Es ist unser Unternehmensprodukt für das Scannen von Modellen.

Guardian-Übersicht

Die Funktionen von Guardian:

  1. Modernste Scan-Technologie: Zugriff auf unsere neuesten Scanner, breitere Modellunterstützung und automatische Erkennung von Modellformaten.
  2. Proaktive Sicherheit: Definieren und durchsetzen Sie Sicherheitsanforderungen für Hugging-Face-Modelle, bevor sie in Ihre Umgebung gelangen – ohne Codeänderungen.
  3. Unternehmensweite Abdeckung: Setzen Sie eine kohärente Sicherheitsstrategie in Ihrem gesamten Unternehmen um, die sich nahtlos in Ihre CI/CD-Pipelines integriert.
  4. Umfassender Audit-Trail: Erhalten Sie volle Transparenz über alle Scans und Ergebnisse, um Bedrohungen effektiv zu identifizieren und zu entschärfen.

Erste Schritte

Wie ModelScan funktioniert

Wenn das Laden eines Modells mit Ihrem Machine-Learning-Framework den Angriff automatisch ausführt, wie prüft ModelScan den Inhalt, ohne den bösartigen Code zu laden?

Einfach: Es liest den Inhalt der Datei Byte für Byte wie eine Zeichenkette und sucht nach unsicheren Codesignaturen. Das macht es unglaublich schnell – Modelle werden in der Zeit gescannt, die Ihr Computer benötigt, um die gesamte Dateigröße von der Festplatte zu verarbeiten (in den meisten Fällen Sekunden). Außerdem ist es sicher.

ModelScan stuft den unsicheren Code wie folgt ein:

  • CRITICAL
  • HIGH
  • MEDIUM
  • LOW

ModelScan-Flussdiagramm

Wenn ein Problem erkannt wird, wenden Sie sich sofort an die Autoren des Modells, um die Ursache zu ermitteln.

In einigen Fällen kann Code in das Modell eingebettet sein, um die Reproduktion als Data Scientist zu erleichtern, aber das macht Sie angreifbar. Nutzen Sie Ihr Ermessen, um zu entscheiden, ob das für Ihre Arbeitslasten angemessen ist.

Welche Modelle und Frameworks werden unterstützt?

Dies wird kontinuierlich erweitert. Achten Sie also auf Änderungen in unseren Versionshinweisen.

Derzeit unterstützt ModelScan jedes von Pickle abgeleitete Format und viele weitere:

Installation

ModelScan wird als Python-Paket auf Ihren Systemen installiert (Python 3.9 bis 3.12 werden unterstützt). Wie oben gezeigt, können Sie es installieren, indem Sie Folgendes in Ihrem Terminal ausführen:

root@kitploit:~
pip install modelscan

Um es zu den Abhängigkeiten Ihres Projekts hinzuzufügen und es so für alle verfügbar zu machen, fügen Sie es wie folgt zu Ihrer requirements.txt oder pyproject.toml hinzu:

root@kitploit:~
modelscan = ">=0.1.1"

Scanner für Tensorflow- oder HD5-Modelle erfordern eine Installation mit Zusatzoptionen:

root@kitploit:~
pip install 'modelscan[ tensorflow, h5py ]'

Verwenden von ModelScan über die CLI

ModelScan unterstützt die folgenden Argumente über die CLI:

Denken Sie daran: Modelle sind wie jede andere Form digitaler Medien – Sie sollten Inhalte aus jeder nicht vertrauenswürdigen Quelle vor der Verwendung scannen.

CLI-Exit-Codes

Die Exit-Statuscodes der CLI sind:

  • 0: Scan erfolgreich abgeschlossen, keine Schwachstellen gefunden
  • 1: Scan erfolgreich abgeschlossen, Schwachstellen gefunden
  • 2: Scan fehlgeschlagen, modelscan hat während des Scans einen Fehler ausgelöst
  • 3: Es wurden keine unterstützten Dateien an das Tool übergeben
  • 4: Verwendungsfehler, der CLI wurden ungültige oder unvollständige Optionen übergeben

ModelScan programmatisch in Python verwenden

ModelScan kann zwar bequem über die CLI verwendet werden, Sie können es aber auch direkt in Ihre Python-Anwendungen oder Workflows integrieren.

root@kitploit:~
from modelscan.modelscan import ModelScan
from modelscan.settings import DEFAULT_SETTINGS

# Initialize ModelScan with default settings
scanner = ModelScan(settings=DEFAULT_SETTINGS)

# Scan a model file or directory 
results = scanner.scan("/path/to/model_file.pkl")

# Check if issues were found
if scanner.issues.all_issues:
    print(f"Found {len(scanner.issues.all_issues)} issues!")
    
    # Access issues by severity
    issues_by_severity = scanner.issues.group_by_severity()
    for severity, issues in issues_by_severity.items():
        print(f"{severity}: {len(issues)} issues")
        
# Generate a report (default is console output)
scanner.generate_report()

Sie können das Scan-Verhalten mit Ihren eigenen Einstellungen anpassen:

root@kitploit:~
# Start with default settings and customize
custom_settings = DEFAULT_SETTINGS.copy()

# Update settings as needed
custom_settings["reporting"]["module"] = "modelscan.reporting.json_report.JSONReport"
custom_settings["reporting"]["settings"]["output_file"] = "scan_results.json"

# Initialize with custom settings
scanner = ModelScan(settings=custom_settings)

Die Ergebnisse verstehen

Wenn ein Problem gefunden wurde, sehen Sie nach Abschluss eines Scans eine Ausgabe wie diese:

ModelScan-Scanausgabe

Hier haben wir ein Modell, das sowohl für ReadFile als auch für WriteFile einen unsicheren Operator enthält. Natürlich wollen wir nicht, dass unsere Modelle willkürlich Dateien lesen und schreiben. Wir würden uns nun an den Ersteller dieses Modells wenden, um zu klären, was er sich davon erwartet hat. In diesem speziellen Fall ermöglicht es einem Angreifer, unsere AWS-Zugangsdaten zu lesen und an einen anderen Ort zu schreiben.

Das ist ein klares NEIN für die Verwendung.

Integration von ModelScan in Ihre ML-Pipelines und CI/CD-Pipelines

Ad-hoc-Scans sind ein guter erster Schritt. Machen Sie es sich, Ihren Kollegen und Freunden zur Gewohnheit, dies jedes Mal zu tun, wenn sie ein neues Modell herunterladen, um es zu erkunden. Es reicht nicht aus, um die Sicherheit für Produktions-MLOps-Prozesse zu verbessern.

Das Scannen von Modellen muss mehr als einmal durchgeführt werden, um Folgendes zu erreichen:

  1. Scannen Sie alle vortrainierten Modelle, bevor Sie sie für weitere Arbeiten laden, um zu verhindern, dass ein kompromittiertes Modell Ihre Modellentwicklungs- oder Data-Science-Umgebungen beeinträchtigt.
  2. Scannen Sie alle Modelle nach dem Training, um einen Lieferkettenangriff zu erkennen, der neue Modelle kompromittiert.
  3. Scannen Sie alle Modelle vor der Bereitstellung auf einem Endpunkt, um sicherzustellen, dass das Modell nach der Speicherung nicht kompromittiert wurde.

Die roten Blöcke unten heben dies in einer herkömmlichen ML-Pipeline hervor. MLOps-Pipeline mit ModelScan

Die Prozesse wären dieselben für das Fine-Tuning oder jede Änderung von LLMs, Basismodellen oder externen Modellen.

Integrieren Sie Scans in die Bereitstellungsprozesse Ihrer CI/CD-Systeme, um die Nutzung auch dann abzusichern, wenn Modelle außerhalb Ihrer ML-Pipelines bereitgestellt werden.

Tiefer eintauchen

Im Ordner 📓notebooks finden Sie eine Reihe von Notebooks, die genau zeigen, wie Model-Serialization-Angriffe gegen verschiedene ML-Frameworks wie TensorFlow und PyTorch durchgeführt werden können.

Um tiefer in die Materie einzutauchen, wie genau diese Angriffe funktionieren, sehen Sie sich 🖹 Erklärung zu Model-Serialization-Angriffen an.

Wenn Sie auf andere Ansätze zur Bewertung von Modellen in einem statischen Kontext stoßen, melden Sie sich bitte – wir würden gerne mehr erfahren!

Lizenz

Copyright 2024 Protect AI

Lizenziert unter der Apache License, Version 2.0 (die „Lizenz"); Sie dürfen diese Datei nur in Übereinstimmung mit der Lizenz verwenden. Eine Kopie der Lizenz erhalten Sie unter

http://www.apache.org/licenses/LICENSE-2.0

Sofern nicht gesetzlich erforderlich oder schriftlich vereinbart, wird die unter der Lizenz verteilte Software auf einer „AS IS"-BASIS bereitgestellt, OHNE GEWÄHRLEISTUNGEN ODER BEDINGUNGEN JEGLICHER ART, weder ausdrücklich noch stillschweigend. Die Lizenz enthält die spezifischen Regelungen zu Genehmigungen und Einschränkungen.

Danksagungen

Wir haben uns stark von Matthieu Maitre inspirieren lassen, der PickleScan entwickelt hat. Wir schätzen diese Arbeit und haben sie mit ModelScan erheblich erweitert. ModelScan ist im gleichen Geist wie PickleScan als Open Source veröffentlicht.

Mitwirken

Wir freuen uns, wenn Sie zu unserem Open-Source-Projekt ModelScan beitragen. Wenn Sie mitwirken möchten, folgen Sie bitte den Details auf der Contributing-Seite.

Tool herunterladen
ML-BibliothekAPISerialisierungsformatModelScan-Unterstützung
Pytorchtorch.save() and torch.load()PickleJa
Tensorflowtf.saved_model.save()Protocol BufferJa
Keraskeras.models.save(save_format= 'h5')HD5 (Hierarchical Data Format)Ja
keras.models.save(save_format= 'keras')Keras V3 (Hierarchical Data Format)Ja
Klassische ML-Bibliotheken (Sklearn, XGBoost etc.)pickle.dump(), dill.dump(), joblib.dump(), cloudpickle.dump()Pickle, Cloudpickle, Dill, JoblibJa
VerwendungArgumentErläuterung
modelscan -h-h or --helpHilfe zur Verwendung anzeigen
modelscan -v-v or --versionVersionsinformationen anzeigen
modelscan -p /path/to/model_file-p or --pathEin lokal gespeichertes Modell scannen
modelscan -p /path/to/model_file --settings-file ./modelscan-settings.toml--settings-fileEin lokal gespeichertes Modell mit benutzerdefinierten Konfigurationen scannen
modelscan create-settings-file-l or --locationEine konfigurierbare Einstellungsdatei erstellen
modelscan -r-r or --reporting-formatFormat der Ausgabe. Optionen sind console, json oder custom (in der Einstellungsdatei zu definieren). Standard ist console
modelscan -r reporting-format -o file-name-o or --output-fileOptionaler Dateiname für den Ausgabebericht
modelscan --show-skipped--show-skippedEine Liste der Dateien ausgeben, die während des Scans übersprungen wurden