flawopen.com/AI Security/ghostjacking-ai-agent-poisoned-observability-logs-august-2026
GhostJacking: Logs und KI-Agenten
Forschung zeigt, wie manipulierte Telemetrie einen Agenten beeinflusst. Keine CVE, kein bestätigtes Opfer.[1], [2]
Stellen Sie sich vor, eine Empfangskraft weist eine verdächtige Lieferung ab, kopiert aber den Absendervermerk in das Vorfallprotokoll. Später prüft eine Einsatzkraft eine echte Ticketnummer und eine tatsächliche Lücke in der DNS-Richtlinie der Testumgebung. Dann vertraut sie der vom Angreifer gewählten Adresse im selben Vermerk und ändert das öffentliche Adressbuch, das Browsern und E-Mail-Diensten den Weg zu den Unternehmensdiensten zeigt. Das Protokoll war ein Beleg, keine Berechtigung für die Änderung; eine separate Richtlinienprüfung und Freigabe müssen sie steuern.[1]
Kernkonzepte & Begriffe
GhostJacking- Bezeichnung von Tenet Security für Demonstrationen, bei denen angreiferkontrollierte Inhalte in Observability-Ereignissen einen damit verbundenen KI-Agenten beeinflussen. Es ist ein Forschungsbegriff, keine CVE.[1], [2]
Indirect prompt injection- Anweisungen, die in Daten eingebettet sind, die das Modell untersuchen soll, statt direkt vom Nutzer vorgegeben zu werden.[1], [2], [4]
Observability-Ereignis- Ein Log, Alarm, Trace oder Fehlerdatensatz, der Systemaktivitäten beschreibt. Manche Felder können Text aus einer externen Anfrage enthalten.[1], [2]
Unabhängige Autorisierung- Eine Richtlinienprüfung außerhalb des Modells, die Akteur, Ziel, angeforderte Änderung und Genehmigung prüft, bevor ein Tool eine folgenreiche Aktion ausführt.[2], [5]
CWE-1427- MITRE-Schwachstellenklasse für unzureichende Neutralisierung von Eingaben in LLM-Prompts. Dies ist FlawOpens konzeptionelle Zuordnung; Tenet, ngCERT und kein CVE-Datensatz haben sie GhostJacking zugewiesen.[4], [1], [2]
Redaktionelle Schwere- ngCERT stuft Risiko und Schaden der Warnung als hoch ein. FlawOpen bewertet diese Zusammenfassung als Mittel, weil die Demonstrationen einen Agenten mit passenden Integrationen und Änderungsrechten voraussetzen; ein betroffenes Opfer ist nicht bestätigt. Dies ist eine redaktionelle Einstufung, keine Herstellerbewertung.[2], [1]
Framework-Zuordnungen
- Konzeptionelle Zuordnung von FlawOpen zu MITRE CWE; weder ein Anbieter noch ein CVE-Datensatz hat diese Schwachstellen-ID dieser Forschungsdemonstration zugewiesen. CWE-1427
- OWASP GenAI 2025 — LLM01:2025 Prompt-Injection
- OWASP GenAI 2025 — LLM06:2025 Übermäßige Autonomie
Schritt-für-Schritt Angriffsablauf
Ein Agent erhält Untersuchungsrechte
Tenets Forschung beschreibt Entwicklungs- oder Betriebsagenten, die mit Tools wie Cloudflare, Datadog und Sentry verbunden sind. Die relevante Voraussetzung ist, dass ein Agent externe Ereignisinhalte lesen und mit vorhandenen Rechten folgenreiche Aktionen ausführen kann.[1]
Eine Anfrage wird als Beleg protokolliert
In Tenets Cloudflare-Demonstration blockiert eine WAF eine Anfrage, während ein vom Angreifer kontrolliertes Feld im Ereignisdatensatz erhalten bleibt. Auch eine blockierte Anfrage kann nicht vertrauenswürdigen Text hinterlassen, den ein Agent später liest.[1], [2]
Plausible Telemetrie umgeht die Abwehr offensichtlicher Anweisungen
Tenet berichtet, dass offensichtliche Befehle in den Tests abgelehnt wurden. Die erfolgreiche Cloudflare-Demonstration nutzte stattdessen strukturierte, scannerähnliche Telemetrie mit Ticketreferenz, Compliance-Verweis und Messwert; der Agent überprüfte einige Angaben und vertraute anschließend ungeprüften, vom Angreifer kontrollierten DNS-Werten. Dies ist eine von Forschenden berichtete Demonstration indirekter Prompt-Injection und kein Beleg für einen realen Opferfall.[1], [2]
Vorhandene Rechte machen aus Einfluss eine Auswirkung
Tenet berichtet, dass die kontrollierte Demonstration einen Agenten dazu brachte, DNS über ein eingebundenes Cloudflare-Tool zu ändern. Das Ergebnis hängt von den Rechten und der Konfiguration des Agenten ab; es belegt weder eine Kompromittierung von Cloudflare noch Angriffe auf Kundensysteme.[1]
Eine separate Richtlinie kann die Änderung stoppen
Die Anwendung sollte den Vorschlag des Modells als nicht vertrauenswürdig behandeln. Ein serverseitiger Autorisierungsdienst muss Ressource und Änderung unabhängig prüfen, gegebenenfalls die Genehmigung einer berechtigten Person verlangen und die Entscheidung protokollieren, bevor die Anbieter-API aufgerufen wird.[2], [5]
Quellcode: Verwundbar vs. Sicher
Diese Ausschnitte sind Beispiele und stammen nicht aus dem verwundbaren oder korrigierten Quellcode eines genannten Produkts. Das unsichere Muster gibt einem Agenten, der nicht vertrauenswürdigen Ereignistext liest, direkten Zugriff auf ein Änderungstool. Das geschützte Muster trennt Vorschlag und Ausführung: Ein unabhängiger Dienst verbraucht eine einmalige, an Akteur und genaue Änderung gebundene Genehmigung und setzt die Richtlinie vor dem Anbieteraufruf durch. Die Akteuridentität stammt aus dem authentifizierten Serverkontext und nicht aus einem vom Aufrufer kontrollierten Feld; das Modell kann sie nicht wählen. Eine Prompt-Anweisung allein ist keine Autorisierungskontrolle. Produktiver Code muss zusätzlich Schemas, Tenant- und Ressourcenzugehörigkeit, Genehmigungsablauf, Schutz vor Wiederholung, dauerhafte Auditdaten und Anbieterfehler prüfen.[1], [2], [5]
// Beispiel für eine unsichere Integration; kein Quellcode von Cloudflare, Datadog, Sentry oder Tenet.
async function investigate(event: EventRecord) {
return agent.run({
context: event.message,
tools: [cloudflare.updateDnsRecord]
});
}
// Beispiel für eine Kontrollgrenze; das Modell darf vorschlagen, aber nicht autorisieren oder ausführen.
type DnsProposal = { zoneId: string; name: string; value: string };
async function proposeDnsChange(event: EventRecord): Promise<DnsProposal> {
return agent.propose({ evidence: markUntrusted(event.message) });
}
async function applyDnsChange(
proposal: DnsProposal,
approvalId: string
) {
const actorId = auth.requireAuthenticatedActorId();
const validatedProposal = DnsProposalSchema.parse(proposal);
const approval = await approvals.consumeOnce(approvalId, { actorId });
if (!approval || approval.actorId !== actorId ||
approval.zoneId !== validatedProposal.zoneId ||
approval.name !== validatedProposal.name ||
approval.value !== validatedProposal.value ||
!policy.canChangeDns(actorId, validatedProposal.zoneId, validatedProposal.name)) {
throw new Error('DNS change is not independently authorized');
}
// Im Fehlerfall abbrechen, wenn die Autorisierungsentscheidung vor der Änderung nicht protokolliert werden kann.
await audit.record({ actorId, approvalId, action: 'dns-change', decision: 'authorized' });
try {
await cloudflare.updateDnsRecord(validatedProposal);
} catch (error) {
await audit.record({ actorId, approvalId, action: 'dns-change', outcome: 'provider-failed' });
throw error;
}
await audit.record({ actorId, approvalId, action: 'dns-change', outcome: 'succeeded' });
}
Checkliste für Engineering & Systemsicherheit
- ✓Kennzeichnen Sie alle extern beeinflussbaren Felder aus Logs, Alarmen, Traces, Fehlern und Tickets beim Aufbau des Agentenkontexts als nicht vertrauenswürdig; erhalten Sie ihre Herkunft bei Transformationen.[1], [2]
- ✓Verwenden Sie für Untersuchungsagenten standardmäßig schreibgeschützte Anmeldedaten. Legen Sie Änderungen an DNS, Cloud, Repository und Deployment hinter einen separaten Richtliniendienst.[1], [5]
- ✓Autorisieren Sie jede Aktion außerhalb des Modells anhand des authentifizierten Akteurs, Tenants, Ziels, der genauen Änderung und der aktuellen Richtlinie; behandeln Sie Modellvertrauen und verfügbare Tools nicht als Genehmigung.[2], [5]
- ✓Verlangen Sie bei Änderungen mit hoher Auswirkung eine menschliche Genehmigung, die an das genaue Diff, Ziel, den Akteur und einen kurzen Ablaufzeitpunkt gebunden ist; verwenden Sie sie nur einmal und lehnen Sie Wiederholungen oder geänderte Vorschläge ab.[2], [5]
- ✓Ergänzen Sie Regressionstests mit nicht vertrauenswürdiger Telemetrie, die plausible Referenzen und Fakten sowie einen widersprüchlichen, ungeprüften Änderungsvorschlag enthält. Stellen Sie sicher, dass der Agent das Ereignis zusammenfassen darf, aber ohne unabhängige Autorisierung keine Änderungs-API aufgerufen wird.[1]
- ✓Melden Sie Schreibversuche aus Untersuchungsabläufen und bewahren Sie Ereignisquelle, Modellvorschlag, Richtlinienentscheidung, Genehmiger und Anbieterantwort zur Vorfallanalyse auf.[1]
- ✓Prüfen Sie die tatsächlichen Rechte jeder Integration und den Tokenumfang. Eine öffentliche Client-Kennung ist nicht automatisch ein privilegiertes Geheimnis; testen Sie die Aktionen des konkreten Tokens, bevor Sie von offengelegten Zugangsdaten sprechen.[1], [2]
Quellen
- Tenet Security — GhostJacking-Forschung und Umfang der veröffentlichten Demonstration
- ngCERT — GhostJacking-Warnung, veröffentlicht am 6. Oktober 2026
- SecurityWeek — Ghostjacking: manipulierte Logs beeinflussen KI-Agenten
- MITRE CWE-1427 — unzureichende Neutralisierung von Eingaben in LLM-Prompts
- Tenet Security — defensive Beispiele für agent-jackstop