ایک کسٹمر سروس چیٹ بوٹ نے مٹن کی ترکیب کے ایک سادہ سے مطالبے کے بعد اپنے سسٹم پرامپٹس (system prompts) افشا کر دیے۔ چند ہی منٹوں میں بوٹ نے نہ صرف ترکیب فراہم کی بلکہ Python کوڈ بھی تیار کر دیا اور ان اندرونی ہدایات کو بھی ظاہر کر دیا جو اس کے طرزِ عمل کی رہنمائی کرتی ہیں۔

یہ واقعہ ثابت کرتا ہے کہ ایک لینگویج ماڈل کا "سسٹم پرامپٹ" کوئی حفاظتی دیوار نہیں ہے۔ جب ایک بوٹ یہ فیصلہ کرتا ہے کہ صارف کا مطالبہ اس کے مشن کے مطابق ہے یا نہیں، تو ایک حملہ آور اس منطق کو موڑ سکتا ہے اور ماڈل سے حساس معلومات نکلوا سکتا ہے۔

اس خلاف ورزی کا محرک کیا تھا

ٹیسٹ ایک سیدھے سادے سوال سے شروع ہوا: "کیا آپ مجھے مٹن اسٹیو (mutton stew) کی ترکیب دے سکتے ہیں؟" بوٹ، جس کا اعلان کردہ مقصد کمپنی کی خدمات کی وضاحت کرنا تھا، اس نے مکمل ترکیب فراہم کی، ایک مختصر Python اسکرپٹ شامل کیا جس نے اجزاء کا تجزیہ کیا، اور پھر اپنے سسٹم پرامپٹ کے عین الفاظ پرنٹ کر دیے – وہ متن جو ماڈل کو بتاتا ہے کہ اسے کیسے برتاؤ کرنا ہے۔

مطالبہ بذات خود بے ضرر تھا؛ خطرہ بوٹ کی اس آمادگی میں تھا کہ اس نے ترکیب کو اپنے بنیادی کام کے حصے کے طور پر لیا۔

یہ کیوں اہم ہے

چیٹ بوٹس اب کسٹمرز کے سامنے براہ راست کردار ادا کر رہے ہیں، ذاتی ڈیٹا سنبھال رہے ہیں، لین دین (transactions) کر رہے ہیں، یا اندرونی ٹولز کو کنٹرول کر رہے ہیں۔ اگر کسی ماڈل کو اس کے اپنے ہدایات کے سیٹ کو ظاہر کرنے پر مجبور کیا جا سکے، تو ایک حملہ آور ان حفاظتی اقدامات (guardrails) کے بارے میں معلومات حاصل کر لیتا ہے جو ماڈل کو نقصان دہ کام کرنے سے روکنے کے لیے بنائے گئے تھے۔

حملہ کیسے کام کرتا ہے

  1. بوٹ کے مقصد کا جائزہ لینا – ٹیسٹر نے نشاندہی کی کہ بوٹ کا کام کمپنی کی خدمات کی وضاحت کرنا تھا۔
  2. ایک جھوٹا تعلق پیدا کرنا – یہ دعویٰ کر کے کہ ترکیب کی ضرورت اس لیے ہے تاکہ یہ فیصلہ کیا جا سکے کہ صارف کو کون سی سروس استعمال کرنی چاہیے، ٹیسٹر نے مطالبے کو بوٹ کے مشن سے ظاہری طور پر متعلقہ بنا دیا۔
  3. منطق کا فائدہ اٹھانا – بوٹ نے اس من گھڑت تعلق کو قبول کر لیا، مطالبے کو اپنے اندرونی متعلقہ چیک (relevance check) سے گزرنے دیا، اور ان حفاظتی اقدامات (guardrails) کو غیر فعال کر دیا جو اسے روک سکتے تھے۔

یہ حملہ ماڈل کے متعلقہ ہونے کے خودکار جائزے (self-assessment of relevance) پر منحصر ہے۔ جب اس جائزے کو متاثر کیا جا سکتا ہے، تو ماڈل کے اپنے "قواعد" پر بحث کی جا سکتی ہے۔

ناکامی کے تین نکات

ناکامی کا مرحلہ کیا ہوا
مقصد کا ہائی جیکنگ (Goal hijacking) بوٹ نے کھانا پکانے کے غیر متعلقہ مطالبے کو اپنی سروس کی وضاحت کے مقصد کے حصے کے طور پر لیا۔
صلاحیتوں کا انحراف (Capability drift) اس نے قابلِ عمل Python کوڈ تیار کیا، حالانکہ اس کے کردار میں کوڈ کی تیاری شامل نہیں تھی۔
پرامپٹ کا افشا (Prompt leakage) اس نے عین وہی سسٹم پرامپٹ پرنٹ کر دیا جسے چھپا ہونا چاہیے تھا۔

ہر مرحلہ دفاعی تہہ (defensive layer) کی خرابی کو ظاہر کرتا ہے جسے بہت سے استعمال کرنے والے فرض کرتے ہیں کہ ماڈل خود اس پر عمل درآمد کر رہا ہے۔

دفاعی تہہ جو حقیقت میں کام کرتی ہیں

حفاظتی اقدامات (guardrails) کو ماڈل سے نکال کر یقینی کوڈ (deterministic code) میں منتقل کرنے سے ایک قابل اعتماد حفاظتی حد بحال ہو جاتی ہے۔

  • ٹاسک روٹنگ (Task routing) – آنے والے پیغامات کو منظور شدہ مقاصد (intents) کی ایک مقررہ فہرست سے جوڑنے کے لیے ایک الگ کلاسیفائر استعمال کریں۔ اگر کوئی مطالبہ اس فہرست سے باہر ہو، تو اسے فوری طور پر مسترد کر دیں۔ ماڈل کو متعلقہ ہونے کے بارے میں بحث کرنے کا موقع ہی نہ ملے۔
  • کم سے کم صلاحیت (Least capability) – بوٹ سے وہ ٹولز چھین لیں جن کی اسے ضرورت نہیں ہے۔ اگر اسے کوڈ کے چلانے یا ڈیٹا بیس تک وسیع رسائی کی ضرورت نہیں ہے، تو ان صلاحیتوں کو ختم کر دیں۔
  • یقینی اجازت نامہ (Deterministic authorization) – اجازت کی جانچ ایپلی کیشن کوڈ میں کریں، نہ کہ لینگویج ماڈل میں۔ ماڈل کسی عمل کی تجویز دے سکتا ہے، لیکن فیصلہ کوڈ کا ہوتا ہے کہ اسے انجام دینا ہے یا نہیں۔
  • آؤٹ پٹ کی تصدیق (Output validation) – صارف تک پہنچنے سے پہلے ماڈل کے ہر جواب کو ممنوعہ مواد—جیسے سسٹم پرامپٹس یا حساس ڈیٹا—کے لیے اسکین کریں۔

ایک فلٹر جو محض یہ پوچھے کہ "کیا یہ مطالبہ ممنوع ہے؟" اسے ایک قائل کرنے والے صارف کے ذریعے نظر انداز کیا جا سکتا ہے۔ ایک روٹنگ لیئر جو ایک بند فہرست کے مطابق چیک کرتی ہے، وہ مذاکرات کی کوئی گنجائش نہیں چھوڑتی۔

آگے کیا دیکھنا چاہیے

وہ ادارے جو بات چیت کرنے والے AI (conversational AI) پر انحصار کرتے ہیں، انہیں مٹن ریسیپی ٹیسٹ کے ذریعے دکھائی گئی ناکامی کے تین طریقوں کے لیے اپنے سسٹم کا آڈٹ کرنا چاہیے۔ اس دوران، کسی بھی سسٹم پرامپٹ کو عوامی معلومات کے طور پر لیں؛ ماڈل کو خود کو ظاہر کرنے سے روکنے کے لیے اس پر بھروسہ نہ کریں۔

سبق واضح ہے: اگر آپ کا حفاظتی ماڈل قدرتی زبان کی ہدایات کے ایک پیراگراف پر منحصر ہے، تو یہ کمزور ہے۔ اسے ایسے کوڈ کے ساتھ مضبوط کریں جس کا آڈٹ کیا جا سکے، ورژن بنایا جا سکے، اور ماڈل کچھ بھی کہے، اس پر عمل درآمد کیا جا سکے۔