लोकल LLM द्वारा मॉनिटरिंग रिपोर्ट के आंकड़ों को गढ़ने की घटना और उसका समाधान

लोकल LLM द्वारा मॉनिटरिंग रिपोर्ट के आंकड़ों को गढ़ने की घटना और उसका समाधान

6 min read

2026.04 / Tech Blog / BASTION

लोकल LLM ने मॉनिटरिंग रिपोर्ट में आंकड़े गढ़ दिए — और हमने इसे कैसे ठीक किया #

BASTION की AI मॉनिटरिंग रिपोर्ट में लिखा था “639 authentication failures”। असल में यह संख्या 0 थी। लोकल LLM से सिक्योरिटी मॉनिटरिंग में अपरिहार्य hallucination की समस्या को हमने spot check और मल्टी-लेयर fallback मैकेनिज्म से कैसे संभाला — उसका रिकॉर्ड।

जब AI झूठ बोलता है #

BASTION हर 15 मिनट में लोकल LLM से इंफ्रास्ट्रक्चर लॉग्स का एनालिसिस करके Slack पर रिपोर्ट भेजता है। एक दिन रिपोर्ट में यह लिखा आया:

incoming-webhook 17:08

Windows AD में कई authentication failures और account lockouts हो रहे हैं, लेकिन Kerberos कंप्यूटर अकाउंट्स और LDAP इंटीग्रेशन की वजह से ये सामान्य हैं। VPN में OpenVPN से 239 authentication failures हुए।

639 authentication failures। 239 VPN authentication errors। सिर्फ इन आंकड़ों को देखकर आप इन्हें “असामान्य” मान सकते हैं।

लेकिन जब हमने असली लॉग्स को सीधे एग्रीगेट किया, तो authentication failures सिर्फ 81 और VPN authentication errors सिर्फ 102 थे। और गहराई से जांच करने पर पता चला कि LLM को दिए गए इनपुट डेटा में लिखा था “authentication failures: 0 times” और “VPN errors: none”। LLM ने इनपुट के “0” को बदलकर “639” कर दिया था।

Spot-Check तरीका #

रिपोर्ट के आंकड़े सही हैं या नहीं, यह वेरिफाई करने के लिए हमने असली लॉग्स को सीधे एग्रीगेट करके रिपोर्ट किए गए मानों से मिलान करते हुए spot check किए।

Inspection procedure:
1. Extract numerical values in the report by item
2. Obtain actual measured values by directly grep/counting actual logs on the AI-SLOG server
3. Calculate the deviation rate between reported and measured values
4. Judgment: within ±10% is "pass," beyond that is "requires investigation"

8 आइटम्स की जांच के नतीजे:

आइटम रिपोर्ट किया गया मान असली मान निर्णय
FW ब्लॉक (विशिष्ट IP) 477 केस 489 केस ✅ पास (+2.5%)
Authentication Failures 639 केस 81 केस ❌ गढ़ा हुआ (-87%)
Account Lockouts 669 केस 66 केस ❌ गढ़ा हुआ (-90%)
Authentication Errors 239 केस 102 केस ❌ गढ़ा हुआ (-57%)
क्लाउड ऐप के सभी आइटम N/A 0 केस ✅ पास

8 में से 4 आइटम्स में hallucination (आंकड़ों की गढ़ंत) पकड़ी गई।

दो रूट कॉज़ एक साथ मौजूद थे #

कारणों को अलग-अलग करने के लिए हमने “LLM को देने से पहले का इनपुट डेटा” जांचा।

रूट कॉज़ A: स्क्रिप्ट गलत डेटा पास कर रही थी। एक लॉग-समराइजेशन स्क्रिप्ट कुछ डिवाइसेज के लिए LLM को “पिछले 60 मिनट” की बजाय “अब तक की पूरी अवधि का संचित डेटा” पास कर रही थी। चूंकि वह फाइल की कुल लाइनों की गिनती कर रही थी, कई महीनों का संचित डेटा “पिछले 60 मिनट” बनकर पास हो रहा था।
रूट कॉज़ B: LLM ने “0 केस” को बदलकर “639 केस” कर दिया। इनपुट डेटा में साफ लिखा होने के बावजूद — “authentication failures: 0 times” और “VPN errors: none” — LLM पूरी तरह गढ़े हुए आंकड़े जनरेट कर रहा था: 639, 669 और 239। temperature=0.2 पर भी यह रुका नहीं।

रूट कॉज़ A एक स्क्रिप्ट बग है (डिटर्मिनिस्टिक तरीके से ठीक हो सकता है)। रूट कॉज़ B LLM की बुनियादी सीमा है।

उपाय: 3-लेयर Fallback #

LLM के hallucination को “रोकने” की बजाय हमने उन्हें “डिटेक्ट करके रिप्लेस करने” का तरीका अपनाया।

लेयर 1: इनपुट डेटा की सटीकता सुनिश्चित करें #

हमने स्क्रिप्ट का बग ठीक किया और उसे बदला ताकि LLM को पूरी अवधि का संचित डेटा नहीं, सिर्फ पिछले 60 मिनट का डेटा जाए। इनपुट सही हो तो LLM के सही आउटपुट देने की संभावना बढ़ जाती है।

लेयर 2: Prompt से आंकड़े गढ़ने पर पाबंदी #

हमने LLM prompt में निम्न नियम जोड़े:

【Absolute Rules for Numerical Values】
- Do not write any numerical values not present in the input data anywhere in the output
- Items marked as "0 cases" in the input must also be marked as 0 cases in the output
- Numerical values in the evidence section are permitted only as direct transcription from input data
- Speculation, completion, and approximation are prohibited

लेयर 3: आउटपुट के आंकड़ों की इनपुट से तुलना करके गड़बड़ी पकड़ें #

LLM आउटपुट जनरेट होने के बाद, हमने एक fallback मैकेनिज्म लागू किया जो उसे इनपुट डेटा से मिलाकर विरोधाभास पकड़ता है। अगर इनपुट में “0 times” लिखा आइटम आउटपुट में नॉन-जीरो वैल्यू के साथ दिखे, तो उसे अपने आप सुरक्षित टेक्स्ट से रिप्लेस कर दिया जाता है।

Input: "authentication failures: 0 times"
LLM output: "639 authentication failures occurred"
  → Verification: Input is 0 times but output is 639 → Mismatch detected
  → Replacement: Automatically replaced with safe text

सुधार के नतीजे #

3-लेयर fallback लागू करने के बाद हमने उन्हीं शर्तों में दोबारा वेरिफिकेशन किया।

आइटम फिक्स से पहले फिक्स के बाद
Authentication Failures (इनपुट: 0 केस) ❌ 639 केस (गढ़ा हुआ) ✅ 0 केस (सटीक)
Lockouts (इनपुट: 0 केस) ❌ 669 केस (गढ़ा हुआ) ✅ 0 केस (सटीक)
Authentication Errors (इनपुट: none) ❌ 239 केस (गढ़ा हुआ) ✅ 0 केस (सटीक)
Hallucination डिटेक्शन fallback सिर्फ नए गढ़े शब्द और सिंबल पकड़ता था अब आंकड़ों की गढ़ंत भी पकड़ सकता है

LLM ने prompt के नियमों का पालन करते हुए जीरो वैल्यू बरकरार रखीं, और hallucination डिटेक्शन fallback एक्टिवेट नहीं हुआ। इनपुट सटीकता (लेयर 1) और मजबूत prompt (लेयर 2) के कॉम्बिनेशन ने लेयर 3 के डिटेक्शन fallback पर निर्भर होने से पहले ही समस्या सुलझा दी।

Hallucination को पूरी तरह खत्म नहीं किया जा सकता #

इस उपाय से आंकड़ों की गढ़ंत तो दब गई, लेकिन 14B-पैरामीटर के लोकल model के साथ hallucination को पूरी तरह रोकना असंभव है। असली कुंजी है LLM पर “भरोसा” करना नहीं, बल्कि डिजाइन के जरिए LLM को “सीमित” करना। इनपुट सटीकता → prompt कंस्ट्रेंट्स → आउटपुट पोस्ट-वेरिफिकेशन के 3-लेयर fallback से LLM की गलत जजमेंट पूरे सिस्टम में फैलने से रुक जाती है।

नियमित Spot Check अनिवार्य हैं #

यह hallucination सबसे पहले spot check से ही पकड़ में आया। LLM का आउटपुट व्याकरण की दृष्टि से सही और संदर्भ के हिसाब से स्वाभाविक होता है — सिर्फ पढ़कर आप नहीं बता सकते कि वह झूठ है। लॉग्स को रिपोर्ट से मिलाने वाले नियमित spot check को ऑपरेशंस में शामिल करना AI मॉनिटरिंग सिस्टम की क्वालिटी एश्योरेंस के लिए अनिवार्य है।

एजेंट वर्कफ़्लो का डिजाइन ही सब कुछ तय करता है #

BASTION में हम LLM की भूमिका “लॉग पैटर्न क्लासिफिकेशन जजमेंट” तक सीमित रखते हैं, जबकि firewall ऑपरेशंस, आंकड़ों का एग्रीगेशन और ब्लॉक एग्जीक्यूशन सब shell स्क्रिप्ट और Python से होते हैं। LLM आंकड़े गढ़ भी दे, तो असली ब्लॉक का फैसला स्क्रिप्ट साइड की threshold वैल्यू से होता है, इसलिए बिजनेस इम्पैक्ट सिर्फ गलत नोटिफिकेशन टेक्स्ट तक सीमित रहता है। अगर हमने LLM को सीधे firewall रूल्स लिखने दिए होते, तो हो सकता था कि काल्पनिक अटैक्स के लिए असली IP ब्लॉक हो रहे होते।

सारांश #

लोकल LLM से सिक्योरिटी मॉनिटरिंग में LLM ने इनपुट के “0 केस” को गढ़कर “639 केस” बना दिया — एक hallucination। रूट कॉज़ थे: स्क्रिप्ट बग (पूरी अवधि का संचित डेटा मिल जाना) और LLM की आंकड़े गढ़ने की प्रवृत्ति, दोनों एक साथ।

उपाय के तौर पर हमने 3-लेयर fallback लागू किया: इनपुट डेटा की सटीकता → prompt से आंकड़ों पर कंस्ट्रेंट → आउटपुट पोस्ट-वेरिफिकेशन डिटेक्शन। फिक्स के बाद दोबारा वेरिफिकेशन में पुष्टि हुई कि LLM ने जीरो वैल्यू सटीक बनाए रखीं और hallucination डिटेक्शन fallback एक्टिवेट नहीं हुआ — यानी हमारा उपाय कारगर रहा।

AI मॉनिटरिंग अचूक नहीं है। AI के आउटपुट पर भरोसा करने की बजाय उसे सीमित करना, वेरिफाई करना और fallback तैयार रखना — यही कुंजी है। यही डिजाइन फिलॉसफी लोकल LLM से व्यावहारिक सिक्योरिटी मॉनिटरिंग साकार करने की आधारशिला है।

BASTION क्लोज्ड नेटवर्क में AI सिक्योरिटी मॉनिटरिंग साकार करता है।

BASTION सर्विस पेज
हमसे संपर्क करें

Updated on 2026 वर्ष 6 माह 10 दिन

What are your feelings

  • Happy
  • Normal
  • Sad