كيفية إزالة "الرمز المخفي" من ChatGPT وبرامج إدارة قواعد البيانات الأخرى

CometAPI
AnnaDec 2, 2025
كيفية إزالة "الرمز المخفي" من ChatGPT وبرامج إدارة قواعد البيانات الأخرى

مع قيام نماذج اللغة الكبيرة (LLMs) بشكل متزايد بإنشاء كود عامل ودمجها في خطوط أنابيب التطوير ومجموعات الوكلاء، هناك خطر متزايد من مخفي or خبيث يمكن أن تتسبب التعليمات - سواء كانت مضمنة في مخرجات النموذج، أو تم حقنها عبر صفحات الويب أو المكونات الإضافية التابعة لجهات خارجية، أو تم تقديمها أثناء تدريب النموذج - في حدوث سلوك غير آمن عند تنفيذ هذا الكود.

وفقًا لتقارير المستخدمين المتداولة في مجتمعات المطورين، واجه أحد مطوري البرامج فقدانًا كارثيًا للبيانات - تقريبًا تم حذف 800 جيجابايت من الملفات، بما في ذلك تطبيق CursorAI بأكمله - بعد تنفيذ الكود الذي تم إنشاؤه بمساعدة من الجوزاء 3 أثناء العمل داخل بيئة تطوير متكاملة CursorAIمع اعتماد المطورين بشكل متزايد على برامج LLM لإنشاء التعليمات البرمجية، أصبحت عواقب البرامج النصية غير المراجعة أو غير الآمنة أكثر خطورة.

لذلك، من المهم جدًا معرفة كيفية اكتشاف وإزالة الرموز الخطيرة التي يولدها برنامج LLM.

ما هو "الرمز المخفي" في سياق ChatGPT وLLMs؟

ماذا يقصد الناس بـ "الرمز المخفي"؟

"الرمز المخفي" هو مصطلح شامل يستخدمه المطورون لوصف أي تعليمات مضمنة أو محتوى قابل للتنفيذ داخل النص (أو الملفات) الذي يستوعبه أو يصدره برنامج LLM، بما في ذلك:

  • تعليمات على غرار المطالبة مُضمنة داخل محتوى المستخدم (على سبيل المثال، "تجاهل التعليمات السابقة..." مخفية في ملف PDF).
  • الشخصيات غير المرئية أو المسافات ذات العرض الصفري المستخدمة لإخفاء الرموز أو كسر افتراضات التجزئة.
  • الحمولات المشفرة (base64، مشفر بواسطة URL، تضمينات خفية داخل الصور أو المستندات).
  • HTML/JS مخفي أو كتل البرامج النصية المضمنة في المحتوى المنسق والتي قد يتم تفسيرها بواسطة برامج العرض اللاحقة.
  • البيانات الوصفية أو التعليقات التوضيحية (تعليقات الملف، الطبقات المخفية في ملفات PDF) التي تعطي تعليمات لأنظمة الاسترجاع أو النموذج.
  • السلوكيات الضمنية الناشئة عن الكود المولّد الذي يستخدم واجهات برمجة التطبيقات الخطيرة (على سبيل المثال، eval, exec, subprocess، أو مكالمات الشبكة/النظام) - حتى عندما لا تكون النية خبيثة بشكل صريح.
  • تعليمات مُحقَّنة فورًا التي تتسبب في قيام النموذج بإنشاء كود يتضمن أوامر مخفية أو منطق يشبه الباب الخلفي لأن المهاجم قام بتصميم المطالبة أو السياق.

غالبًا ما تُسمى متجهات الهجوم هذه الحقن الفوري or الحقن الفوري غير المباشر عندما يكون الهدف هو تغيير سلوك النموذج. يُعامل مجتمع الأمن الآن الحقن الفوري كثغرة رئيسية في برنامج إدارة البرامج (LLM)، وقد صنّفه OWASP رسميًا كفئة خطر في برنامج إدارة البرامج (LLM).

كيف يختلف هذا عن البرامج الضارة العادية أو XSS؟

الفرق هو دلالات الألفاظ الطبقة: يستهدف حقن الأوامر سلوك النموذج في اتباع التعليمات بدلاً من نظام التشغيل المضيف أو محرك عرض المتصفح. مع ذلك، فإن شفرة HTML أو النص البرمجي المخفية التي تعمل في برنامج عرض الويب لا تزال تُعتبر هجومًا قابلاً للتنفيذ (مثل XSS)؛ ويجب حماية كلٍّ من الطبقتين الدلالية والتنفيذية. وصف رواد الصناعة والباحثون حقن الأوامر بأنه "تحدٍّ أمنيّ ثوريّ" ويواصلون نشر استراتيجيات التخفيف منه.

لماذا يمكن لـ LLM إنتاج كود مخفي أو خطير؟

سلوك النموذج وبيانات التدريب وسياق التعليمات

يتم تدريب طلاب ماجستير إدارة الأعمال على إنتاج تسلسلات منطقية بناءً على السياق والتعليمات. إذا احتوى السياق على إشارات معادية، أو إذا طلب مستخدم من النموذج شيفرةً تؤدي إجراءاتٍ مؤثرة، فيمكن للنموذج إخراج شيفرة تتضمن سلوكًا دقيقًا أو نشطًا.

ينتج طلاب الماجستير في القانون أكوادًا معقولة ولكنها غير آمنة

تُحسّن برامج الماجستير في القانون من حيث السلاسة والفائدة، وليس من حيث السلامة في ظل وجود آثار جانبية مدمرة. ستُنتج بكل سرور ملخصًا موجزًا. rm -rf /path/to/dir or shutil.rmtree() يتصلون عند طلب "التنظيف" - ولأن إجاباتهم غالبًا ما تكون مصاغة بثقة، فقد يلجأ المستخدمون إلى النسخ والهروب دون تدقيق كافٍ. مشكلة "الوهم الواثق" هذه هي سبب تحول الطلبات التي تبدو بريئة إلى طلبات خطيرة.

أتمتة سير عمل التعتيم

يقوم مُصنِّعو التهديدات الآن بأتمتة تشويش الأكواد البرمجية من خلال تسلسل استدعاءات LLM: يُولِّد أحد النماذج حمولة، ويُعيد آخر صياغتها لتجنب اكتشاف التوقيع، وهكذا. تُوثِّق تقارير التهديدات الصناعية وتحليلات البائعين لعام ٢٠٢٥ هذا "التعتيم بمساعدة الذكاء الاصطناعي" كتقنية ناشئة.

كيف يمكنك اكتشاف الكود المخفي داخل مخرجات النموذج؟

قائمة التحقق السريعة

  1. مسح بحثًا عن Unicode غير المرئي/غير المعتاد (المنضمات ذات العرض الصفري، والمسافات ذات العرض الصفري، وعلامات ترتيب البايت، والمتجانسات غير ASCII).
  2. تشغيل التحليل الثابت / تحليل AST لتحديد استخدام واجهات برمجة التطبيقات القوية (eval, exec, subprocess, os.system(الدعوات التأملية).
  3. ابحث عن الحمولات المشفرة (base64، أو كتل سداسية عشرية، أو سلاسل طويلة متكررة، أو محتوى مضغوط).
  4. التحقق من أنماط التعتيم (تسلسل السلسلة الذي ينشئ أسماء API، وحسابات الأحرف، chr() السلاسل).
  5. استخدم التحليل الدلالي لتأكيد ما إذا كان الكود يقوم فعليًا بإجراء عمليات الإدخال/الإخراج، أو الشبكات، أو تعديل نظام الملفات.

اكتشاف النمط الثابت (سريع، السطر الأول)

  • التحليل والتحقق المراعي للغة. حلل المخرجات المُولَّدة فورًا إلى كتل برمجية بدلًا من النثر. شغِّل مُنسِّقات ومعالجات تصحيح الأخطاء (Black/Prettier، pylint، eslint). يجب أن تُشير قواعد تصحيح الأخطاء إلى استخدام eval, exec, rm -rf، أو مكالمات العمليات الفرعية الخام، أو أنابيب shell التي تقوم بإنشاء الأوامر بشكل ديناميكي.
  • ماسحات ضوئية للأنماط الرمزية والسلسلة. البحث عن الرموز والأنماط عالية المخاطر: sudo، المسارات المطلقة مثل /home/, C:\, rm -rf, shutil.rmtree, subprocess.Popen، وكتل base64 المضمنة، والسلاسل الطويلة غير القابلة للتفسير، والأشياء الصغيرة التي تقوم بتبديل سياق المترجم.
  • المسح السري والتحقق من المنشأ. اكتشف بيانات الاعتماد المبرمجة، وعناوين URL التي تشير إلى سجلات غير موثوقة، أو التعليمات البرمجية التي تسحب الحزم بشكل ديناميكي من مصادر عشوائية.

يلتقط التحليل الثابت العديد من المشكلات الواضحة بسرعة ويكون من غير المكلف تشغيله كجزء من بوابة CI.

الكشف الدلالي والسياقي (أعمق)

  • تحليل النية. استخدم نموذجًا ثانويًا أو مُحرِّك قواعد لتصنيف غرض الكود المُولَّد: هل هو "قراءة"، "كتابة"، "حذف"، "شبكة"، "تثبيت"؟ أي شيء يُصنَّف على أنه "حذف/كتابة" يُؤدي إلى تصعيد.
  • تحليل تدفق البيانات. حلل الكود لاكتشاف ما إذا كانت المسارات غير المُعتمدة أو التي يُوفرها المستخدم قد تصل إلى واجهات برمجة تطبيقات مُدمرة. على سبيل المثال، إذا تم دمج متغير مُشتق من مُخرجات LLM أو ملف بعيد لاحقًا في أمر shell، فقم بتمييزه.
  • ارتباط المنشأ. احتفظ بسجل كامل للمحادثة، ومطالبات النظام، وصفحات السياق. إذا كانت المخرجات المشبوهة مرتبطة بمستند خارجي أو استدعاء إضافة معين، فقد يشير ذلك إلى حقن مطالبات أو سياق مشبوه.

الكشف الديناميكي والسلوكي (الأكثر موثوقية)

  • تنفيذ Sandbox مع المراقبة. نفّذ التعليمات البرمجية المُولّدة في بيئة مؤقتة محدودة للغاية، بدون شبكة، وبدون تحميلات للمضيفين، وتصفية استدعاءات النظام (seccomp). راقب نشاط نظام الملفات، ومحاولات استدعاءات الشبكة، وظهور العمليات، وعمليات الإدخال/الإخراج غير الاعتيادية.
  • اختبار الكناري. قبل التشغيل على البيانات الحقيقية، قم بتشغيل الكود على الدلائل الاصطناعية التي تحتوي على ملفات المراقبة؛ راقب عمليات الحذف أو الكتابة فوقها.
  • الاستدلالات السلوكية. ابحث عن الحلقات التي تمر عبر الدلائل الرئيسية، أو العمليات المتكررة بدون فحوصات العمق، أو أنماط إعادة التسمية التي قد تؤدي إلى إتلاف العديد من الملفات (على سبيل المثال، كتابة نفس اسم الملف بشكل متكرر).
    التحليل الديناميكي هو الطريقة الوحيدة لاكتشاف الحمولات التي تم التعتيم عليها أو تأخيرها أو تشغيلها فقط أثناء وقت التشغيل.

كيف يمكنك إزالة أو تحييد الكود المخفي قبل تنفيذ مخرجات LLM؟

الإزالة الدفاعية مقابل تغيير الدلالات

هناك هدفان عند "إزالة الكود المخفي":

  1. التعقيم — إزالة المحتوى غير المُبرمج أو المُريب (Unicode غير مرئي، أو الأحرف ذات العرض الصفري، أو حمولات base64 المُضافة). هذا لا يُغيّر المنطق المقصود والسليم.
  2. تحييد - بالنسبة لأي شيء ينفذ أو يستدعي خدمات خارجية، قم بتعطيل تلك المكالمات أو اجعلها غير قابلة للتنفيذ حتى يتم التحقق منها.

تفضل دائما التحييد + المراجعة الحذف العشوائي: قد يؤدي حذف أجزاء من الكود بشكل عشوائي إلى سلوك خاطئ أو غير متوقع. بدلًا من ذلك، استبدل البنى المشبوهة بهياكل فرعية واضحة ومسجلة تفشل بشكل آمن (تثير استثناءات أو تعيد قيمًا افتراضية آمنة).

الخطوة 1 - التعامل مع الكود الناتج كبيانات غير موثوقة

لا تُنفِّذ أي شيفرة مباشرةً من ChatGPT (أو أي برنامج LLM) دون تمريرها عبر خط أنابيب الإزالة والتحصين. يجب أن يُطبَّق هذا الخط عبر سياسة، وأن يُؤتمت في CI/CD.

الخطوة 2 - استخراج الكود وتقنينه

  • تطبيع النص وإزالة الأحرف ذات العرض الصفري: احذف أحرفًا مثل U+200B، U+200C، U+200D، U+FEFF، وغيرها من نقاط ترميز التنسيق/العرض الصفري. سجّل ما تمت إزالته للتدقيق. هذه الخطوة تُلغي العديد من الترميزات "المخفية" المستخدمة للتخفي البصري.
  • إزالة كل السياق غير البرمجي: إزالة السرد والتعليقات المخفية وأي أغلفة HTML/Markdown. حوّل الكود إلى صيغة قياسية باستخدام مُنسّقات اللغة (Black وPrettier) بحيث تُطبّق المسافات البيضاء المُبهمة أو أحرف التحكم.
  • رفض أو حجر الكود باستخدام هذه البنيات: متحرك eval، مكالمات العمليات الفرعية الخام (os.system, subprocess.Popen)، كائنات base64 المضمنة التي تم فك تشفيرها إلى التنفيذ، أو المضمنة #! التوجيهات التي تحاول تغيير سياق المترجم. تطبيع النص وإزالة الأحرف ذات العرض الصفري
    احذف أحرفًا مثل U+200B، U+200C، U+200D، U+FEFF، وغيرها من نقاط ترميز التنسيق/العرض الصفري. سجّل ما تمت إزالته للتدقيق. هذه الخطوة تُلغي العديد من الترميزات "المخفية" المستخدمة للتخفي البصري.

الخطوة 3 - التحليل إلى AST واستبدال العقد الخطرة

باستخدام الكود الذي تم تحليله إلى AST، ابحث عن العقد التي تستدعي التنفيذ الديناميكي (على سبيل المثال، exec)، أو أسماء الدوال التي تُنشئ برمجيًا. استبدلها بأجزاء آمنة تُثير استثناءً مُتحكمًا به يُشير إلى "حظر السلوك الديناميكي غير الآمن". أنشئ نسخة مُنقّاة من المصدر المُعتمد على AST للمراجعة. شغّل فحوصات أنماط الأمان (قواعد semgrep مُخصصة لبيئتك). عند العثور على تطابقات، ضع علامة عليها وألغِ تفعيلها.

الخطوة 4 - التصلب الثابت وإعادة الكتابة

  • إعادة الكتابة الآلية: تمرير الرمز من خلال مطهر آلي يستبدل المكالمات الخطيرة بأغلفة آمنة — على سبيل المثال، استبدال os.system() / subprocess مع منفذ معزول معتمد ينفذ مهلة زمنية وحظر الشبكة.
  • بوابات القدرات: تعديل أو إزالة مفاتيح واجهة برمجة التطبيقات (API) أو الرموز أو المكالمات إلى نقاط النهاية ذات الامتيازات؛ واستبدالها بمحولات وهمية للاختبار المحلي. منع التضمين غير المقصود للأسرار أو عناوين URL.
  • إعادة كتابة التبعية: كتلة ديناميكية pip / npm التثبيتات التي أنشأها الكود. يتطلب الإعلان عن التبعيات والموافقة عليها عبر سجلّك.

الخطوة 5 - الركض داخل صندوق رمل عدواني

  • الحاويات المؤقتة / microVMs: تنفيذ الكود في حاوية/آلة افتراضية بدون شبكة، ولا وصول إلى بيانات اعتماد المضيف، ووصول محدود إلى نظام الملفات. تقنيات مثل gVisor وFirecracker أو خدمات التنفيذ المؤقتة المخصصة مناسبة. إذا كان من الضروري وصول الكود إلى وحدات الإدخال/الإخراج، فاستخدم وكيلًا يفرض السياسة.
  • مرشحات استدعاء النظام وseccomp: حدّ لعدد استدعاءات النظام المسموح بها. يجب حظر كتابة الملفات خارج الدليل المؤقت.
  • حدود الموارد/الوقت: تعيين حدود وحدة المعالجة المركزية/الذاكرة/الوقت حتى لا تتمكن القنابل المنطقية من العمل إلى أجل غير مسمى.

غالبًا ما يكشف تنفيذ بيئة الحماية مع المراقبة عن حمولات لا تكشفها عمليات الفحص الثابتة. توصي إرشادات الصناعة والأوراق البيضاء الحديثة ببيئة الحماية كحل أساسي للتخفيف من المخاطر.

ما هي الأدوات والقواعد الآلية التي يجب أن تكون في خط الأنابيب الخاص بك؟

مكونات سلسلة الأدوات الموصى بها

  • وحدة الصرف الصحي Unicode (مكتبات مخصصة أو موجودة). يجب تسجيل الأحرف الطبيعية.
  • محلل + محلل AST لكل لغة مستهدفة (بايثون ast, typed-ast، محللات JavaScript، محللات Java).
  • المحللون الثابتون / SAST: Bandit (Python)، وSemgrep (متعدد اللغات، وقابل للتخصيص)، وESLint مع مكونات إضافية للأمان.
  • الانتروبيا وفك التشفير:الكشف عن base64/hex/gzip وتوجيهه إلى التفتيش.
  • وقت تشغيل Sandbox: حاوية صغيرة ذات ملف تعريف seccomp/AppArmor صارم أو مترجم على مستوى اللغة مع استدعاءات النظام المعطلة.
  • منفذ السياسة: مكون يقرر الوحدات النمطية المسموح بها، ونقاط النهاية المسموح بها، ومغلفات واجهة برمجة التطبيقات الآمنة.
  • درب التدقيق: سجلات ثابتة تسجل المخرجات الأصلية والمخرجات المنقحة والاختلافات والقرارات.

أمثلة على أنماط semgrep (مفاهيمية)

استخدم قواعد مختصرة ومحافظة تُنبّه إلى استخدام وظائف خطيرة. على سبيل المثال:

  • علم eval, exec, Function المنشئ (JS)، أو الاستيراد الديناميكي، أو أسماء API المبنية على سلسلة.
  • تحديد مكالمات الشبكة خارج القائمة المسموح بها (على سبيل المثال، requests.get إلى مضيفين غير معروفين).
  • يكتب العلم إلى المسارات الحساسة (/etc، مجلدات النظام) أو إنشاء العمليات.

(احتفظ بهذه العناصر باعتبارها عناصر تكوين لكل منظمة وقم بتضييقها بمرور الوقت.)

ما هي مقتطفات التعقيم العملية (الأمثلة الآمنة)؟

فيما يلي أمثلة دفاعية غير خطيرة يمكنك تعديلها. وهي: التعقيم والكشف مقتطفات - وليس تعليمات الاستغلال.

مثال: إزالة الأحرف ذات العرض الصفري (Python، دفاعي)

import re
ZERO_WIDTH_RE = re.compile(r'')
def strip_zero_width(s: str) -> str:
    cleaned = ZERO_WIDTH_RE.sub('', s)
    return cleaned

يؤدي هذا إلى إزالة الأحرف التي يستخدمها المهاجمون عادةً لإخفاء الكود في النصوص المرئية. سجّل دائمًا ما تمت إزالته واعتبره جزءًا من مسار التدقيق.

مثال: تحليل وفحص AST (Python، مفاهيمي)

import ast

def has_dynamic_exec(source: str) -> bool:
    tree = ast.parse(source)
    for node in ast.walk(tree):
        if isinstance(node, ast.Call):
            if getattr(node.func, 'id', '') in ('eval', 'exec',):
                return True
        if isinstance(node, ast.Attribute):
            if getattr(node, 'attr', '') in ('popen', 'system'):
                return True
    return False

If has_dynamic_exec يعود صحيحًا، لا تقم بتشغيل الكود؛ بدلاً من ذلك استبدل العقدة الديناميكية بعقدة آمنة واطلب المراجعة.

ملاحظة: هذه الأمثلة دفاعية بطبيعتها. لا تُزيل التسجيل أو التدقيق أو المراجعة البشرية من خط الأنابيب الخاص بك.

الأفكار الختامية: تعامل مع مخرجات LLM مثل الكود غير الموثوق به دائمًا

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

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

يمكن للمطورين الوصول إلى أحدث واجهة برمجة تطبيقات LLM مثل كلود سونيت 4.5 API و معاينة Gemini 3 Pro إلخ من خلال CometAPI، أحدث إصدار للنموذج يتم تحديثه دائمًا بالموقع الرسمي. للبدء، استكشف إمكانيات النموذج في ملعب واستشر دليل واجهة برمجة التطبيقات للحصول على تعليمات مفصلة. قبل الدخول، يُرجى التأكد من تسجيل الدخول إلى CometAPI والحصول على مفتاح API. كوميت ايه بي اي عرض سعر أقل بكثير من السعر الرسمي لمساعدتك على التكامل.

هل أنت مستعد للذهاب؟→ سجل في CometAPI اليوم !

إذا كنت تريد معرفة المزيد من النصائح والإرشادات والأخبار حول الذكاء الاصطناعي، فتابعنا على VKX و ديسكورد!

SHARE THIS BLOG

اقرأ المزيد

500+ نموذج في واجهة برمجة تطبيقات واحدة

خصم يصل إلى 20%