flawopen.com/AI Security/ghostjacking-ai-agent-poisoned-observability-logs-august-2026
GhostJacking: लॉग और AI एजेंट
शोध दिखाता है कि दूषित टेलीमेट्री जुड़े एजेंट को प्रभावित कर सकती है। कोई CVE या पुष्ट पीड़ित नहीं है।[1], [2]
कल्पना करें कि रिसेप्शन पर कोई संदिग्ध डिलीवरी रोक देता है, लेकिन भेजने वाले की टिप्पणी को घटना-लॉग में ज्यों का त्यों लिख देता है। बाद में, जाँच करने वाला व्यक्ति असली टिकट नंबर और परीक्षण विन्यास की DNS नीति में वास्तविक कमी की पुष्टि करता है, फिर उसी टिप्पणी में हमलावर द्वारा चुने गए पते पर भी भरोसा करके सार्वजनिक पता-सूची बदल देता है, जो ब्राउज़र और ईमेल को बताती है कि कंपनी की सेवाएँ कहाँ मिलेंगी। लॉग सबूत था, बदलाव की अनुमति नहीं; अलग नीति-जाँच और स्वीकृति से ही यह बदलाव नियंत्रित होना चाहिए।[1]
इस पेज के मुख्य शब्द
GhostJacking- Tenet Security का नाम उन प्रदर्शनों के लिए जिनमें ऑब्ज़र्वेबिलिटी घटनाओं में हमलावर-नियंत्रित सामग्री उनसे जुड़े AI एजेंट को प्रभावित करती है। यह शोध का नाम है, CVE नहीं।[1], [2]
अप्रत्यक्ष प्रॉम्प्ट इंजेक्शन- ऐसी निर्देशात्मक सामग्री जो मॉडल को जाँचने के लिए दिए गए डेटा में छिपी हो, उपयोगकर्ता द्वारा सीधे दी गई न हो।[1], [2], [4]
ऑब्ज़र्वेबिलिटी घटना- सिस्टम गतिविधि बताने वाला लॉग, अलर्ट, ट्रेस या त्रुटि रिकॉर्ड। कुछ फ़ील्ड में बाहरी अनुरोध से आया पाठ हो सकता है।[1], [2]
स्वतंत्र प्राधिकरण-जाँच- मॉडल से बाहर की नीति-जाँच, जो टूल द्वारा प्रभावकारी कार्रवाई से पहले कर्ता, लक्ष्य, माँगा गया बदलाव और स्वीकृति जाँचती है।[2], [5]
फ्रेमवर्क मैपिंग
- MITRE CWE के लिए FlawOpen की वैचारिक मैपिंग; किसी विक्रेता या CVE रिकॉर्ड ने इस शोध प्रदर्शन को यह कमजोरी ID नहीं दी है। CWE-1427
- OWASP GenAI 2025 — LLM01:2025 प्रॉम्प्ट इंजेक्शन
- OWASP GenAI 2025 — LLM06:2025 अत्यधिक एजेंसी
हमले का चरण-दर-चरण प्रवाह
एजेंट को जाँच का अधिकार मिलता है
Tenet के शोध में Cloudflare, Datadog और Sentry जैसे टूलों से जुड़े कोडिंग या ऑपरेशन एजेंट बताए गए हैं। मुख्य पूर्वशर्त यह है कि एजेंट बाहरी घटना-सामग्री पढ़ सके और अपने मौजूदा अधिकारों से प्रभावकारी कार्रवाई कर सके।[1]
विश्वसनीय दिखने वाली टेलीमेट्री स्पष्ट निर्देशों वाली सुरक्षा को पार करती है
Tenet के अनुसार, उसके परीक्षण में स्पष्ट आदेश अस्वीकार कर दिए गए थे। सफल Cloudflare प्रदर्शन में इसके बजाय स्कैनर-जैसी संरचित टेलीमेट्री इस्तेमाल हुई, जिसमें टिकट संदर्भ, अनुपालन उद्धरण और माप शामिल थे; एजेंट ने कुछ दावों की पुष्टि की, फिर हमलावर द्वारा नियंत्रित अपुष्ट DNS मानों पर भरोसा किया। यह शोधकर्ताओं द्वारा बताई गई अप्रत्यक्ष prompt injection की प्रदर्शन-आधारित जाँच है, वास्तविक पीड़ित के उल्लंघन का प्रमाण नहीं।[1], [2]
मौजूदा अधिकार प्रभाव पैदा करते हैं
Tenet के अनुसार, नियंत्रित प्रदर्शन में एजेंट ने एकीकृत Cloudflare टूल के ज़रिए DNS बदला। परिणाम एजेंट के अधिकार और कॉन्फ़िगरेशन पर निर्भर है; इससे यह सिद्ध नहीं होता कि Cloudflare से समझौता हुआ या ग्राहक प्रणालियों पर हमला हुआ।[1]
सोर्स कोड: कमज़ोर बनाम सुरक्षित कार्यान्वयन
ये उदाहरणात्मक एप्लिकेशन स्निपेट हैं, किसी बताए गए उत्पाद के असुरक्षित या सुधारे गए स्रोत कोड नहीं। असुरक्षित ढाँचा ऐसे एजेंट को सीधे बदलाव करने का टूल देता है जो अविश्वसनीय घटना-पाठ पढ़ता है। सुरक्षित ढाँचा प्रस्ताव और निष्पादन अलग करता है: स्वतंत्र सेवा कर्ता और सटीक बदलाव से बँधी एक-बार की स्वीकृति उपयोग करती है, फिर प्रदाता को कॉल करने से पहले नीति लागू करती है। कर्ता की पहचान प्रमाणित सर्वर संदर्भ से ली जाती है, अनुरोधकर्ता के नियंत्रण वाले फ़ील्ड से नहीं; मॉडल इसे चुन नहीं सकता। केवल prompt में निर्देश देना प्राधिकरण नियंत्रण नहीं है। उत्पादन कोड में स्कीमा, tenant और संसाधन का स्वामित्व, स्वीकृति की समय-सीमा, पुनःप्रयोग से बचाव, स्थायी audit रिकॉर्ड और प्रदाता त्रुटियों की भी जाँच करें।[1], [2], [5]
// असुरक्षित एकीकरण का उदाहरण; यह Cloudflare, Datadog, Sentry या Tenet का स्रोत कोड नहीं है।
async function investigate(event: EventRecord) {
return agent.run({
context: event.message,
tools: [cloudflare.updateDnsRecord]
});
}
// नियंत्रण सीमा का उदाहरण; मॉडल प्रस्ताव दे सकता है, पर स्वीकृति या बदलाव लागू नहीं कर सकता।
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');
}
// बदलाव से पहले authorization निर्णय दर्ज न हो सके तो कार्रवाई रोक दें।
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' });
}
इंजीनियरिंग और सिस्टम सुरक्षा चेकलिस्ट
- ✓एजेंट का संदर्भ बनाते समय बाहरी प्रभाव वाले लॉग, अलर्ट, ट्रेस, त्रुटि और टिकट फ़ील्ड को अविश्वसनीय चिह्नित करें; रूपांतरणों के दौरान उनका स्रोत बनाए रखें।[1], [2]
- ✓जाँच एजेंटों को सामान्यतः केवल-पठन क्रेडेंशियल दें। DNS, क्लाउड, रिपॉज़िटरी और डिप्लॉयमेंट बदलावों को अलग नीति-लागू करने वाली सेवा के पीछे रखें।[1], [5]
- ✓मॉडल से बाहर हर कार्रवाई को प्रमाणित कर्ता, tenant, संसाधन, सटीक बदलाव और वर्तमान नीति के अनुसार अधिकृत करें; मॉडल पर भरोसे या टूल उपलब्ध होने को स्वीकृति न मानें।[2], [5]
- ✓उच्च प्रभाव वाले बदलावों के लिए सटीक diff, संसाधन, कर्ता और कम समय-सीमा से जुड़ी मानव स्वीकृति माँगें; स्वीकृति एक बार उपयोग करें और दोहराव या बदले हुए प्रस्ताव अस्वीकार करें।[2], [5]
- ✓ऐसी अविश्वसनीय टेलीमेट्री के साथ रिग्रेशन टेस्ट जोड़ें जिसमें विश्वसनीय दिखने वाले संदर्भ और तथ्य हों, साथ ही एक विरोधाभासी अपुष्ट बदलाव प्रस्ताव भी हो। सत्यापित करें कि एजेंट घटना का सार बता सकता है, लेकिन स्वतंत्र अनुमति के बिना कोई बदलाव API कॉल नहीं करता।[1]
- ✓जाँच कार्यप्रवाह से लिखने के प्रयासों पर अलर्ट करें और घटना-समीक्षा हेतु मूल घटना, मॉडल प्रस्ताव, नीति निर्णय, स्वीकर्ता और प्रदाता प्रतिक्रिया सुरक्षित रखें।[1]
- ✓हर एकीकरण के वास्तविक अधिकार और token का दायरा जाँचें। सार्वजनिक client identifier अपने आप विशेषाधिकारयुक्त secret नहीं होता; उसे उजागर credential कहने से पहले उस token के अनुमत कार्य जाँचें।[1], [2]
स्रोत
- Tenet Security — GhostJacking शोध और प्रकाशित प्रदर्शन का दायरा
- ngCERT — GhostJacking चेतावनी, 6 अक्टूबर 2026 को प्रकाशित
- SecurityWeek — दूषित लॉग से AI एजेंटों को प्रभावित करने वाला Ghostjacking
- MITRE CWE-1427 — LLM प्रॉम्प्ट इनपुट का अपर्याप्त न्यूनीकरण
- Tenet Security — agent-jackstop रक्षात्मक उदाहरण