بث مباشر 18.11 · الدفعة 318 نوفمبر، 19:00 بتوقيت موسكو — ورشة عملية مجانية لوكلاء الذكاء الاصطناعي · الدفعة 3 تبدأ 23.11ورشة 18 نوفمبر ←الدفعة 3 (23.11)
إصداركود / SDK · جاهز للعملMachine Learning Mastery→ المصدر

كيف تحبس شيفرة وكيل الذكاء الاصطناعي: subprocess وDocker وmicroVM — ثلاثة مستويات من الحماية

إذا كان وكيل الذكاء الاصطناعي يكتب الشيفرة وينفّذها بنفسه، فإن الأمان كله يتوقف على المكان الذي تُشغَّل فيه هذه الشيفرة. يقارن تحليل منشور على Machine Learning Mastery بين ثلاثة حدود: subprocess مقيَّد، وحاوية Docker، وmicroVM من نوع Firecracker عبر E2B. وتُختبر الثلاثة بالبرامج «الضارة» نفسها: استنزاف المعالج والذاكرة، وإنتاج عدد كبير من العمليات، وقراءة الأسرار، والخروج إلى الشبكة. أما الوكيل فيرى أداة واحدة هي run_python ولا يعرف ما يقف خلفها.

معالج بواسطة الذكاء الاصطناعي من Machine Learning Mastery؛ بتحرير Hamidun News
كيف تحبس شيفرة وكيل الذكاء الاصطناعي: subprocess وDocker وmicroVM — ثلاثة مستويات من الحماية
المصدر: Machine Learning Mastery. كولاج: Hamidun News.
استمع للمقال
بطاقة الحقائق والأرقام
المعيارالتفاصيل
المصدر الأصليMachine Learning Mastery ↗
رئيس التحرير
حقيقة رئيسية #1subprocess هو الأسرع، لكنه يتشارك النواة والملفات مع المضيف
حقيقة رئيسية #2الحاوية بلا أعلام إضافية لا تقيّد الموارد؛ وفي عام 2025 حدثت عمليات هروب عبر runc
حقيقة رئيسية #3تمنح microVM كل بيئة معزولة نواتها الخاصة — فالحدّ هنا على مستوى المراقب (hypervisor)

لقد منحتَ الوكيل أداة «نفّذ شيفرة Python»، وفي تلك اللحظة لم يعد لديك مجرد مساعد، بل تنفيذ شيفرة عن بُعد، وإن كان بطلب من النموذج. فالنموذج قد يخطئ، وقد يتلقى تعليمات ضارة من صفحة أو ملف دُسَّ له. لذلك فالسؤال ليس «هل الوكيل ذكي»، بل «ما الذي يمكن أن يصل إليه برنامج سيئ عندما يبدأ التشغيل». يجيب مؤلفو التحليل المنشور على Machine Learning Mastery عن ذلك عمليًا: يبنون ثلاث بيئات معزولة (sandbox) ويُجرون على كل منها الهجمات نفسها.

أداة واحدة وواجهات خلفية قابلة للتبديل

البنية بسيطة. يعرف الوكيل أداة واحدة هي run_python: تستقبل سلسلة نصية تحتوي على الشيفرة وتعيد stdout وstderr ورمز الخروج. ولا تُنفَّذ شيفرة النموذج أبدًا داخل عملية الوكيل نفسه، بل تُرسَل إلى كائن البيئة المعزولة الذي يملك الدالة run(code)، ويصلح لذلك أي صنف يملك هذه الدالة. ولهذا فإن تغيير مستوى العزل لا يتطلب المساس بمنطق الوكيل: يكفي استبدال الواجهة الخلفية. ويُعلَّم رمز الإرجاع المختلف عن الصفر على أنه خطأ، فيراه النموذج ويستطيع تصحيح نفسه.

ومن مبادئ مدونة Docker المهمة، والتي يطبقها المؤلفون على كل المستويات: الوصول إلى الملفات وسياسة الشبكة والأسرار تحدَّد بواسطة البنية التحتية قبل تشغيل الوكيل، لا بواسطة الوكيل نفسه.

ثلاثة حدود

Subprocess هو الخيار الأخف. وهو عملية فرعية مع حدود على زمن المعالج والذاكرة (فضاء العناوين) وحجم الملفات المكتوبة. وحوله:

  • التشغيل في الوضع المعزول python -I داخل مجلد مؤقت؛
  • بيئة نظيفة بلا مفاتيح API ولا مجلد منزلي؛
  • unshare --net، أي شبكة خاصة فارغة؛
  • توجيه المخرجات إلى ملفات، ليحمي حدّ حجم الملف أيضًا من سيل print؛
  • عند انتهاء المهلة تُقتل مجموعة العمليات بأكملها.

وإذا تعذّر على المُنشئ تفعيل عزل الشبكة فإنه يفشل مع خطأ بدل أن يترك الشبكة مفتوحة بصمت. وتحت صلاحيات root تُخفَّض صلاحيات الشيفرة أولًا إلى المستخدم nobody.

لكن لهذا المستوى تحفظًا صريحًا: تبقى النواة ونظام الملفات للمضيف. فالشيفرة تعمل باسمك على نظام ملفاتك ولا تُخفي ملفاتك. أما حدّ عدد العمليات فيحتسب جميع عمليات المستخدم، ولذلك لا معنى له إلا لمستخدم منفصل، ويُتجاوَز على الحاسوب المحمول العادي.

حاوية Docker تضيف فضاءات الأسماء وcgroups، لكنها تظل عمليات على نواة المضيف. وتقول وثائق Docker صراحة إن الحاوية بلا إعدادات صريحة ليس لها حدود للموارد، ولذلك تُحدَّد في البيئة المعزولة الذاكرة وعدد المعالجات وعدد العمليات (في المثال: 256 ميغابايت ومعالج واحد و64 pid). وتحدث عمليات هروب فعلًا: ففي نوفمبر 2025 أتاحت ثلاث ثغرات في runc الخروج من الحاوية.

MicroVM على Firecracker (في المثال عبر E2B) تمنح كل بيئة معزولة نواتها الخاصة خلف مراقب (hypervisor). تسمّي Docker ذلك حدًّا عتاديًا، وتؤكد AWS أن النواة في Lambda على Firecracker لا تُشارك بين الجلسات. وهو الخيار الأغلى من حيث زمن الاستجابة، ويتطلب حساب E2B مع مفتاح.

ما العمل بهذا كله

يختبر المؤلفون كل مستوى ببرامج عدائية متطابقة: استنزاف المعالج والذاكرة والعمليات والقرص، ومحاولات قراءة الملفات والخروج إلى الشبكة. ثم يقيسون في bench.py ثمن تعزيز العزل من حيث زمن الاستجابة. ولا توجد أرقام للقياسات في الجزء المتاح من المادة، فشغّل الاختبار على جهازك: فالتأخير يعتمد بشدة على البيئة.

والمنطق العملي للاختيار كالتالي:

  • Subprocess يصلح للتجارب المحلية وللشيفرة التي تثق بها تقريبًا. يتطلب Linux أو WSL.
  • Docker بأعلام صارمة يناسب الأدوات الداخلية التي تقبل فيها مخاطرة الهروب.
  • MicroVM هي الخيار للمدخلات الغريبة غير الموثوقة وللمنتجات متعددة المستأجرين، حيث يعني الهروب حادثًا أمنيًا.

والأهم: لا تترك للوكيل قرار بيئته المعزولة. فالأسرار والشبكة والملفات يحدّدها من ينشر البنية التحتية. وإن أردتَ حلًّا جاهزًا لا مبنيًّا يدويًا، فلدى المؤلفين مقال منفصل عن خمس بيئات معزولة مستضافة؛ أما هنا فيُجمَّع كل شيء يدويًا ليتضح ما تفعله هذه المنصات فعلًا تحت الغطاء.

القصة

أسئلة وأجوبة حول الخبر

ما أبرز التفاصيل حول أداة واحدة وواجهات خلفية قابلة للتبديل؟

البنية بسيطة. يعرف الوكيل أداة واحدة هي run_python: تستقبل سلسلة نصية تحتوي على الشيفرة وتعيد stdout وstderr ورمز الخروج. ولا تُنفَّذ شيفرة النموذج أبدًا داخل عملية الوكيل نفسه، بل تُرسَل إلى كائن البيئة المعزولة الذي يملك الدالة run(code)، ويصلح لذلك أي صنف يملك هذه الدالة. ولهذا فإن تغيير مستوى العزل لا يتطلب المساس بمنطق الوكيل: يكفي استبدال الواجهة الخلفية. ويُعلَّم رمز الإرجاع المختلف عن الصفر على أنه خطأ، فيراه النموذج ويستطيع تصحيح نفسه.

ما أبرز التفاصيل حول ثلاثة حدود؟

Subprocess هو الخيار الأخف. وهو عملية فرعية مع حدود على زمن المعالج والذاكرة (فضاء العناوين) وحجم الملفات المكتوبة. وحوله: التشغيل في الوضع المعزول python -I داخل مجلد مؤقت؛ بيئة نظيفة بلا مفاتيح API ولا مجلد منزلي؛ unshare --net، أي شبكة خاصة فارغة؛ توجيه المخرجات إلى ملفات، ليحمي حدّ حجم الملف أيضًا من سيل print؛ عند انتهاء المهلة تُقتل مجموعة العمليات بأكملها. وإذا تعذّر على المُنشئ تفعيل عزل الشبكة فإنه يفشل مع خطأ بدل أن يترك الشبكة مفتوحة بصمت.

ما أبرز التفاصيل حول ما العمل بهذا كله؟

يختبر المؤلفون كل مستوى ببرامج عدائية متطابقة: استنزاف المعالج والذاكرة والعمليات والقرص، ومحاولات قراءة الملفات والخروج إلى الشبكة. ثم يقيسون في bench.py ثمن تعزيز العزل من حيث زمن الاستجابة. ولا توجد أرقام للقياسات في الجزء المتاح من المادة، فشغّل الاختبار على جهازك: فالتأخير يعتمد بشدة على البيئة. والمنطق العملي للاختيار كالتالي: Subprocess يصلح للتجارب المحلية وللشيفرة التي تثق بها تقريبًا. يتطلب Linux أو WSL. Docker بأعلام صارمة يناسب الأدوات الداخلية التي تقبل فيها مخاطرة الهروب.

ZK
جمال حميدون — مدير المنتجات في Alpina Digital ومدير منتج AlpinaGPT. يبني منتجات الذكاء الاصطناعي منذ 2019. بدأ Hamidun News كمشروع شخصي ثم أصبح مُجمِّعًا إنتاجيًا بأكثر من 6000 قارئ.
✦ Unified AI Workspace · Nomad

Test Frontier LLMs & Autonomous Agents in One Workspace

Run Claude Opus 5.5, GPT-6, Gemini 3.1, and DeepSeek side-by-side in Nomad AI (nomadnet.ai) — unified model routing, deep research, and multimodal workflows under one subscription.

Try Nomad AI →Launch Nomad Agent
ما رأيك؟
جارٍ تحميل التعليقات…