MCP سیکیورٹی: 95 پروڈکشن آؤٹیجز کے بعد میں نے کیا سیکھا
میں سمجھتا تھا کہ سیکیورٹی سادہ ہے۔ ڈیپینڈنسیز (dependencies) کو اپ ڈیٹ کریں۔ HTTPS استعمال کریں۔ سیکرٹس (secrets) کو ہارڈ کوڈ نہ کریں۔
میں غلط تھا۔
95 پروڈکشن آؤٹیجز اور 1,800 گھنٹوں کی ڈویلپمنٹ کے بعد، میں نے سیکھا کہ Model Context Protocol (MCP) کی سیکیورٹی مختلف ہے۔ یہ عام REST API سیکیورٹی جیسی نہیں ہے۔
MCP نئے خطرات پیدا کرتا ہے کیونکہ کلائنٹ ایک LLM ہے، انسان نہیں۔
اپنے MCP سرور کو محفوظ رکھنے کے لیے آپ کو یہ باتیں جاننا ضروری ہیں۔
1. MCP تھریٹ ماڈل (Threat Model)
REST میں، آپ کو بالکل معلوم ہوتا ہے کہ آپ کی API کو کون کال کر رہا ہے۔ MCP میں، LLM ایک درمیانی ذریعے (middleman) کے طور پر کام کرتا ہے۔ یہ سب کچھ بدل دیتا ہے:
- LLMs ٹول کالز یا پیرامیٹرز کے بارے میں غلط معلومات (hallucinate) دے سکتے ہیں۔
- صارفین براہ راست ٹولز کو کال نہیں کرتے۔ وہ LLM سے بات کرتے ہیں، اور LLM آپ کے سرور سے بات کرتا ہے۔
- بدنیتی پر مبنی کلائنٹس ڈسکوری کے دوران آپ کے سرور میں چھپے ہوئے ٹولز تلاش کرنے کی کوشش کر سکتے ہیں۔
آپ کا سب سے بڑا خطرہ صرف ایک ہیکر نہیں ہے۔ بلکہ ایک نیک نیتی والا LLM ہے جو غلطی سے ایسی غلطی کر دیتا ہے جس سے آپ کا سسٹم کریش ہو جاتا ہے۔
2. API Key مینجمنٹ
بہت سے ڈویلپرز کام کو آسان بنانے کے لیے query parameters میں API keys پاس کرتے ہیں۔ یہ ایک غلطی ہے۔ Query parameters ہر سرور لاگ اور پراکسی میں نظر آتے ہیں۔
ان اصولوں پر عمل کریں:
- ہیڈر آتھنٹیکیشن (Authorization: Bearer) استعمال کریں۔
- JSON باڈی میں کیز (keys) پاس کرنے سے گریز کریں۔
- ہر کلائنٹ کے لیے ایک الگ API key جاری کریں۔ اس سے آپ کو استعمال کو ٹریک کرنے اور سب کچھ خراب کیے بغیر رسائی ختم کرنے میں مدد ملتی ہے۔
3. سخت ان پٹ ویلیڈیشن (Strict Input Validation)
LLMs غلط اندازہ لگائیں گے۔ وہ غلط ٹائپس اور اضافی پیرامیٹرز بھیجیں گے۔ آپ کو ہر کال کو ویلیڈیٹ کرنا ہوگا:
- پہلے چیک کریں کہ ٹول کا نام آپ کی لسٹ میں موجود ہے۔
- اضافی پیرامیٹرز والی کالز کو مسترد کر دیں۔ انہیں صرف نظر انداز نہ کریں۔
- پیرامیٹر ٹائپس کا بالکل درست ہونا یقینی بنائیں۔ ڈیٹا ٹائپس کو زبردستی تبدیل (coerce) نہ کریں۔
- میموری کریش سے بچنے کے لیے اسٹرنگز (strings) اور ایرےز (arrays) پر سخت سائز کی حدود مقرر کریں۔
- ڈائریکٹری ٹریورسل (directory traversal) سے بچنے کے لیے تمام فائل پاتھز کو صاف (sanitize) کریں۔
4. تہوں پر مشتمل ریٹ لمٹنگ (Layered Rate Limiting)
صارف کا ایک پرامپٹ ایک ساتھ دس ٹول کالز کو ٹرگر کر سکتا ہے۔ یہ سیکنڈوں میں آپ کے کنکشن پول (connection pool) کو ختم کر سکتا ہے۔
دفاع کی تین تہیں استعمال کریں:
- کلائنٹ کے استعمال کو کنٹرول کرنے کے لیے فی-API-key حدود۔
- بروٹ فورس حملوں کو روکنے کے لیے فی-IP حدود۔
- اچانک آنے والے ٹریفک کے دوران اپنے سرور کو فعال رکھنے کے لیے کنکرنٹ کنکشن (concurrent connection) کی حدود۔
5. پرامپٹ انجیکشن کے خطرات (Prompt Injection Risks)
ایک صارف LLM کو دھوکہ دے کر کسی تباہ کن ٹول کو کال کرنے پر مجبور کر سکتا ہے۔ اگر کوئی صارف LLM کو تمام نوٹس ڈیلیٹ کرنے کا کہتا ہے، تو LLM واقعی ایسا کر سکتا ہے۔
اپنا تحفظ کریں:
- ریڈ (read) اور رائٹ (write) آپریشنز کو الگ رکھیں۔
- کسی بھی ڈیلیٹ یا اپ ڈیٹ ایکشن کے لیے صارف کی دستی تصدیق (manual confirmation) لازمی بنائیں۔
- اپنے ڈیٹا بیس صارف کے لیے 'پرنسپل آف لیس پر ویلیج' (principle of least privilege) کا استعمال کریں۔
سیکیورٹی ایک مسلسل عمل ہے۔ بہتر کی مینجمنٹ اور سخت ویلیڈیشن سے آغاز کریں۔ یہ اقدامات زیادہ تر مسائل حل کر دیتے ہیں۔
Optional learning community: https://t.me/GyaanSetuAi
