Entwicklung & Code
Erfolgreiche Jailbreak-Angriffe auf GenAI arbeiten mit schädlichen Prompts
Das Model Context Protocol (MCP) ist noch recht jung, vom November 2024, und seit einiger Zeit tauchen immer häufiger Sicherheitslücken in Verbindung damit auf – und zwar sowohl server- als auch clientseitig. Umgekehrt gibt es Tausende von MCP-Quellen im Netz, die sich mit wenigen Klicks in die eigene KI-Anwendung einbinden lassen.
Eine lange, kuratierte Liste findet sich auf GitHub. Umgekehrt hat Docker eine Liste mit Angriffspunkten und Sicherheitsproblemen gesammelt. Konkrete Beispiele sind ein Angriff über Repositories auf den MCP-Server GitHub oder eine Attacke auf die Cursor IDE via MCP. Mirko Ross, Gründer und CEO der Sicherheitsfirma asvin spricht mit heise developer über die Sicherheit des als „USB-C der KI“ bezeichneten Protokolls.
Mirko, Du beschäftigst Dich schon länger mit der Sicherheit von KI und MCP, wo liegen denn die Hauptschwachstellen Deiner Meinung nach?
MCP ist in Hinblick auf eine einfache Verknüpfung von Applikationen mit GenAI-Modellen hin entworfen worden, das Ganze in einem sich schnell entwickelnden AI-Tech-Umfeld. Die Schwachstelle liegt in der Genese des Protokolls: Das Design von MCP ist auf eine einfache und schnelle Integration ausgelegt, was zulasten der Protokoll- und Systemsicherheit geht. Zudem haben wir generell noch viel zu wenig die Cybersicherheit-Schwachstellen von GenAI-Systemen umfassend begriffen. Wir sehen in einem täglichen Rhythmus, wie Angreifer sich neue Muster und Jailbreak-Attacken ausdenken und anwenden, mit denen die angegriffenen Systeme aus den Sicherheitsschranken ausbrechen. MCP hat im Protokoll keine wirksamen Sicherheitselemente zur Abwehr solcher Angriffe.
Gibt es Risiken, die ihre Ursachen nicht im Protokoll haben, aber bei der Nutzung von MCP dennoch eine Rolle spielen?
Ja, insbesondere Angriffe in der Softwarelieferkette sind eine Gefahr. Angreifer publizieren Bibliotheken für MCP-Clients und Server, die Schadcode enthalten, in öffentlichen Code-Repositorys. Gerade unerfahrene Entwicklerinnen und Entwickler, die nach einem Einstieg in MCP und KI-Agentensystem suchen, sind hier potenzielle Opfer der Angreifer. Ist eine solche Bibliothek einmal integriert, kann der darin enthaltene Schadcode in Firmennetzwerken ausgeführt werden – beispielsweise als Einfallstor für Ransomware-Angriffe.
Mit Void Programming, also wenn GenAI Programmcode für KI-Agenten oder MCP-Services erzeugt, ergeben sich zusätzliche Sicherheitsprobleme: Bereits jetzt kopieren Angreifer populäre Softwarebibliotheken, kompromittieren sie mit Schadcode und publizieren sie unter ähnlich lautenden Namen. Ziel ist es, dass GenAI bei der Codeerzeugung nicht die Originalbibliothek referenziert, sondern die ähnlich benannte schädliche Kopie. Daher gelten auch bei Void Programming die Grundregeln: erstens jede extern eingebundene Quelle auf Vertrauenswürdigkeit prüfen und zweitens den erzeugten Code auf Schadcode scannen, bevor dieser in eine Produktivumgebung gelangt.
(Bild: Titima Ongkantong/Shutterstock)
Am 30. September und 1. Oktober findet die heise devSec 2025 in Regensburg statt. Auf der von iX, heise Security und dpunkt.verlag ausgerichteten Konferenz stehen in Themen wie Threat Modeling, Software Supply Chain, OAuth, ASPM, Kubernetes und der Einfluss von GenAI auf Security im Programm.
Eine erste Korrektur des Protokolls, die Authentifizierung betreffend, gab es Ende April. Hätte man das Protokoll gleich von Anfang an mehr auf Sicherheit optimieren sollen?
MCP wurde in einem aufgeheizten Markt unter hohem Zeitdruck konzipiert. Dabei spielt der Gedanke des MVP – Minimal Viable Product – eine Rolle. Also die schnelle Einführung von Grundfunktionen, die von Anwendern angenommen werden. Aus Sicht der Cybersecurity bedeutet MVP allerdings „Most vulnerability possibilities“.
Es gibt von der OWASP seit kurzem Empfehlungen für den MCP-Einsatz. Bieten sie umfassende Sicherheit für Server- und Client-Anbieter?
Wer sich an die OWASP-Empfehlungen hält, ist sich zumindest der Risiken einer MCP-Integration bewusst und kann damit die entsprechenden technischen Schutzmaßnahmen aufbauen. Einen umfassenden Schutz gibt es allerdings nicht – denn GenAI-Systeme sind leider grundlegend angreifbar und versierte Täter sind sehr kreativ im Design der Angriffe.
Wie kann sich ein Serveranbieter vor Angriffen am besten schützen?
Erstens gilt es, die Grundregeln der Softwareentwicklung zu beachten: Entwicklerinnen und Entwickler müssen alle verwendeten Bibliotheken per SBOM dokumentieren und auf Schadcode scannen. Zweitens müssen sie MCP-basierte Dienste über Authentifizierung einbinden. Dabei müssen die Identitäten der Authentifizierungen gemanagt werden. Und drittens gilt es, die MCP-Dienste in der Applikationsarchitektur von anderen IT-Diensten zu segmentieren und beispielsweise über Zero-Trust-Prinzipien abzusichern.
Inzwischen gibt es große Sammlungen an einsatzbereiten Servern, die jedermann mit ein paar Klicks einbinden kann. Welche Risiken bestehen denn für die Clients beim Anzapfen von MCP-Quellen?
Sehr erfolgreiche Jailbreak-Angriffe auf GenAI arbeiten mit schädlichen Prompts, die die Angreifer beispielsweise in Dateien verstecken. Soll beispielsweise eine GenAI eine Zusammenfassung einer Word- oder PowerPoint-Datei erstellen, wird der darin versteckte Prompt vom KI-Agenten ausgeführt. Wir müssen lernen, dass wir solche Dateien auf schädliche Prompts überprüfen, bevor wir sie der GenAI zur Bearbeitung übergeben.
Worauf sollte man achten, wenn man MCP-Quellen einbinden will?
Generell gilt: nur Quellen einbinden, die als vertrauensvoll gelten und über eine gute Reputation verfügen. Unbekannte Quellen sollte man nicht einbinden.
Mirko, vielen Dank für das Gespräch!
(who)
Entwicklung & Code
Android-Terminal: Hinweise auf GPU-Beschleunigung | heise online
In einer aktuellen Canary-Version von Android sind neue Hinweise auf eine GPU-Beschleunigung für Linux-Anwendungen aufgetaucht. Wie Android Authority berichtet, enthält Build 2509 eine bislang versteckte Option mit der Bezeichnung „Graphics Acceleration“, die einen Wechsel vom bekannten CPU-basierten Renderer (Lavapipe) auf eine GPU-beschleunigte Variante ermöglichen soll.
Die Funktion verweist offenbar auf gfxstream, ein in Android Open Source Project (AOSP) dokumentiertes Framework, das Grafikbefehle aus einer virtuellen Umgebung direkt an die Host-GPU weiterleiten kann. Auf diese Weise ließen sich Linux-Programme unter Android künftig deutlich flüssiger darstellen – etwa bei grafikintensiven Tools oder Anwendungen mit GUI-Oberfläche.
Im Praxistest zeigte sich die Funktion allerdings noch nicht einsatzbereit: Zwar ließ sich der versteckte Schalter aktivieren, eine tatsächliche GPU-Beschleunigung trat aber nicht ein. Auch von offizieller Seite gibt es bislang keine Bestätigung oder Details dazu, ob und wann die Neuerung in eine stabile Android-Version einfließen soll.
Die Funde deuten dennoch darauf hin, dass Google daran arbeitet, das Linux-Terminal auf Android langfristig leistungsfähiger zu machen – möglicherweise als Teil einer Strategie, Android stärker für klassische Desktop- und Entwicklerszenarien zu öffnen. Bis konkrete Informationen oder stabile Implementierungen vorliegen, bleibt die GPU-Beschleunigung allerdings ein experimentelles Feature mit unklarem Zeitplan.
(nb)
Entwicklung & Code
Rails-Entwicklerinnen und -Entwickler forken sich von Heinemeier Hansson weg
Eine Gruppe von Ruby-on-Rails-Entwicklerinnen und -Entwicklern ruft in einem offenen Brief dazu auf, einen Fork von Rails ins Leben zu rufen, der sich vom Gründer David Heinemeier Hansson (DHH) distanziert.
Der Aufruf an das Rails-Core-Team und die Community schlägt vor, die Zusammenarbeit mit Heinemeier Hansson abzubrechen, Rails mit einem neuen Namen zu forken und einen modernen Code of Conduct aufzustellen. Die Unterzeichnenden werfen Heinemeier Hansson private rassistische und transphobe Ansichten vor und berufen sich insbesondere auf zwei Blog-Einträge von ihm: „As I remember London“ und „Gender and Sexuality Alliances in primary school at CIS?!“.
Dass das Vorhaben der Rails-Gruppe sich vermutlich als schwierig erweist, sehen die Autoren selbst: „Wir erkennen an, dass das ein schwieriger Prozess ist … Wie auch immer, wissen wir es nicht, wenn wir es nicht probiert haben.“ Der Aufruf firmiert unter dem Namen Plan vert nach einer französischen Sabotagegruppe aus dem Zweiten Weltkrieg, die Anschläge auf Eisenbahneinrichtungen verübt hat.
David Heinemeier Hansson (DHH) antwortet bislang nur in einem X-Kommentar direkt auf den offenen Brief.
David Heinemeier Hansson hat bisher nur in einem X-Kommentar direkt auf den offenen Brief reagiert: „Das ist die gleiche Handvoll hysterischer Individuen, die dieselben Riten und Rituale aufführen, wie sie es jedes Jahr machen“.
In den Tagen zuvor gab es schon Unruhe in der Ruby-on-Rails-Community, da Ruby Central Projekte wie RubyGems an sich gezogen hat, ohne andere Maintainer und die Community im Vorfeld in diese Schritte einzubinden.
Update
26.09.2025,
10:37
Uhr
Inzwischen gibt es ein X-Posting von Heinemeier Hansson: „Dieser dämliche Brief, der zu nichts führen wird, hat nicht einmal 50 Unterschriften gesammelt. Wer mit klarem Verstand würde auch so eine offensichtliche Selbstdeklaration als ‚Stell mich niemals ein‘ unterschreiben.“
(who)
Entwicklung & Code
Künstliche Neuronale Netze im Überblick 10: Graphneuronale Netzwerke
Neuronale Netze sind der Motor vieler Anwendungen in KI und GenAI. Diese Artikelserie gibt einen Einblick in die einzelnen Elemente. Der zehnte Teil der Serie stellt graphneuronale Netze vor.
Prof. Dr. Michael Stal arbeitet seit 1991 bei Siemens Technology. Seine Forschungsschwerpunkte umfassen Softwarearchitekturen für große komplexe Systeme (Verteilte Systeme, Cloud Computing, IIoT), Eingebettte Systeme und Künstliche Intelligenz.
Er berät Geschäftsbereiche in Softwarearchitekturfragen und ist für die Architekturausbildung der Senior-Software-Architekten bei Siemens verantwortlich.
Graphneuronale Netzwerke (Graph Neural Networks, GNN) erweitern das Konzept der neuronalen Berechnung von regulären Gitternetzen auf unregelmäßige Graphstrukturen und ermöglichen so Deep Learning für Daten, deren Beziehungen sich am besten durch Knoten und Kanten ausdrücken lassen. Ein Graph G besteht aus einer Menge von Knoten V und einer Menge von Kanten E zwischen diesen Knoten. Jeder Knoten i trägt einen Merkmalsvektor xᵢ, und das Muster der Kanten codiert, wie Informationen zwischen den Knoten fließen sollen.
Im Zentrum vieler GNNs steht ein Paradigma der Nachrichtenübermittlung. In jeder Schicht des Netzwerks sammelt jeder Knoten Informationen von seinen Nachbarn (aggregiert sie), transformiert diese aggregierte Nachricht und aktualisiert dann seine eigene Merkmalsdarstellung. Durch das Stapeln mehrerer Schichten können Knoten Informationen aus immer größeren Nachbarschaften einbeziehen.
Eine der einfachsten und am weitesten verbreiteten Formen der Graphfaltung ist das Graph Convolutional Network (GCN). Angenommen, wir haben N Knoten mit jeweils einem d-dimensionalen Merkmalsvektor, die in einer Matrix X ∈ ℝᴺˣᵈ gesammelt sind. Sei A ∈ ℝᴺˣᴺ die Adjazenzmatrix des Graphen, wobei Aᵢⱼ = 1 ist, wenn eine Kante vom Knoten i zum Knoten j besteht, und sonst Null. Um die eigenen Merkmale jedes Knotens einzubeziehen, addieren wir die Identitätsmatrix I zu A, wodurch à = A + I entsteht. Anschließend berechnen wir die Gradmatrix D̃, wobei D̃ᵢᵢ = Σⱼ Ãᵢⱼ ist. Eine einzelne GCN-Schicht transformiert X nach folgender Regel in neue Merkmale H ∈ ℝᴺˣᵈ′:
H = σ( D̃⁻½ · Ã · D̃⁻½ · X · W )
Hier ist W ∈ ℝᵈˣᵈ′ eine lernbare Gewichtungsmatrix und σ eine elementweise Nichtlinearität wie ReLU. Die symmetrische Normalisierung D̃⁻½ Ã D̃⁻½ stellt sicher, dass Nachrichten von Knoten mit hohem Grad diejenigen von Knoten mit niedrigem Grad nicht überlagern.
Nachfolgend steht eine minimale PyTorch-Implementierung einer einzelnen GCN-Schicht. Ich erkläre jeden Schritt ausführlich.
In diesem Code ist die Adjazenzmatrix ein dichter Tensor der Form (N, N). Zunächst fügen wir Selbstschleifen hinzu, indem wir mit der Identität summieren. Anschließend berechnen wir den Grad jedes Knotens, indem wir die Zeilen von à summieren. Durch Ziehen der inversen Quadratwurzel dieser Grade und Bilden einer Diagonalmatrix erhalten wir D̃⁻½. Multipliziert man D̃⁻½ mit beiden Seiten von Ã, erhält man die normalisierte Adjazenz. Die Knotenmerkmale X werden mit der Gewichtungsmatrix W multipliziert, um sie in einen neuen Merkmalsraum zu transformieren, und schließlich mischt die normalisierte Adjazenzmatrix diese transformierten Merkmale entsprechend der Graphstruktur. Eine ReLU-Aktivierung fügt Nichtlinearität hinzu.
import torch
import torch.nn as nn
class GCNLayer(nn.Module):
def __init__(self, in_features, out_features):
super(GCNLayer, self).__init__()
# Gewichtungsmatrix W der Form (in_features, out_features)
self.weight = nn.Parameter(torch.randn(in_features, out_features))
def forward(self, X, adjacency):
# Selbstschleifen hinzufügen, indem die Identitätsmatrix zur Adjazenz hinzugefügt wird
A_tilde = adjacency + torch.eye(adjacency.size(0), device=adjacency.device)
# Berechne die Gradmatrix von A_tilde
degrees = A_tilde.sum(dim=1)
# D_tilde^(-1/2) berechnen
D_inv_sqrt = torch.diag(degrees.pow(-0.5))
# Symmetrische Normalisierung: D^(-1/2) * A_tilde * D^(-1/2)
A_normalized = D_inv_sqrt @ A_tilde @ D_inv_sqrt
# Lineare Transformation: X * W
support = X @ self.weight
# Nachrichten weiterleiten: A_normalized * support
out = A_normalized @ support
# Nichtlinearität anwenden
return torch.relu(out)
Durch Stapeln mehrerer solcher Schichten verbessern sich die Ausgaben, zum Beispiel:
class SimpleGCN(nn.Module):
def __init__(self, input_dim, hidden_dim, output_dim):
super(SimpleGCN, self).__init__()
self.gcn1 = GCNLayer(input_dim, hidden_dim)
self.gcn2 = GCNLayer(hidden_dim, output_dim)
def forward(self, X, adjacency):
h1 = self.gcn1(X, adjacency)
# h1 dient als Eingabe für die nächste Schicht
h2 = self.gcn2(h1, adjacency)
return h2
Wir ermöglichen jedem Knoten, Informationen von Knoten zu sammeln, die bis zu zwei Hops entfernt sind. Für eine Klassifizierungsaufgabe, bei der jeder Knoten i ein Label yᵢ in {1,…,C} hat, können wir die endgültigen Ausgaben H ∈ ℝᴺˣᶜ mit einem Kreuzentropieverlust paaren, genau wie bei einer gewöhnlichen Klassifizierung, und durch Gradientenabstieg trainieren.
Über GCNs hinaus berechnen aufmerksamkeitsbasierte Graphennetzwerke kantenspezifische Gewichte, die einem Knoten mitteilen, wie stark er sich auf jeden Nachbarn konzentrieren soll. Das Graph Attention Network (GAT) führt lernbare Aufmerksamkeitskoeffizienten αᵢⱼ ein, die wie folgt definiert sind:
eᵢⱼ = LeakyReLU( aᵀ · [ W·xᵢ ∥ W·xⱼ ] )
αᵢⱼ = softmax_j( eᵢⱼ )
wobei ∥ die Verkettung bezeichnet, a ∈ ℝ²ᵈ′ ein lernbarer Vektor ist und softmax_j über alle Nachbarn von i normalisiert. Die Knotenaktualisierung lautet dann:
hᵢ′ = σ( Σⱼ αᵢⱼ · W·xⱼ ).
Die Implementierung einer GAT-Schicht von Grund auf folgt dem gleichen Muster der Nachrichtenübermittlung, erfordert jedoch die Berechnung von eᵢⱼ für jede Kante und anschließende Normalisierung. Bei großen Graphen verwendet man spärliche Darstellungen oder Bibliotheken wie PyTorch Geometric, um die Effizienz zu gewährleisten.
Graph Neural Networks eröffnen Anwendungsmöglichkeiten in der Chemie, der Analyse sozialer Netzwerke, Empfehlungssystemen und der kombinatorischen Optimierung. Sie bieten eine prinzipielle Möglichkeit, Darstellungen strukturierter Daten zu lernen, bei denen der Kontext jeder Entität durch ihre Beziehungen definiert ist.
Der nächste Teil der Serie beschäftigt sich mit Transformern, einer neuronalen Architektur, die vollständig auf Aufmerksamkeitsmechanismen basiert und ohne Rekursion und Faltung auskommt, um Sequenzen parallel zu verarbeiten.
(rme)
-
UX/UI & Webdesignvor 1 Monat
Der ultimative Guide für eine unvergessliche Customer Experience
-
UX/UI & Webdesignvor 4 Wochen
Adobe Firefly Boards › PAGE online
-
Social Mediavor 1 Monat
Relatable, relevant, viral? Wer heute auf Social Media zum Vorbild wird – und warum das für Marken (k)eine gute Nachricht ist
-
Entwicklung & Codevor 1 Monat
Posit stellt Positron vor: Neue IDE für Data Science mit Python und R
-
Entwicklung & Codevor 3 Wochen
EventSourcingDB 1.1 bietet flexiblere Konsistenzsteuerung und signierte Events
-
UX/UI & Webdesignvor 2 Wochen
Fake It Untlil You Make It? Trifft diese Kampagne den Nerv der Zeit? › PAGE online
-
Digital Business & Startupsvor 3 Monaten
10.000 Euro Tickets? Kann man machen – aber nur mit diesem Trick
-
Digital Business & Startupsvor 3 Monaten
80 % günstiger dank KI – Startup vereinfacht Klinikstudien: Pitchdeck hier