Vulnerable Code Search: Transferable Attack for Code Language Models
تقدم هذه الورقة هجوماً عدائياً قابلاً للنقل وغير مرتبط بلغة برمجة معينة، يقوم بتعديل معرفات الكود البرمجي لجعل مقتطفات غير ذات صلة تتوافق اصطناعياً مع استعلامات مستهدفة، مما يؤدي إلى تدهور كبير في أداء استرجاع نماذج لغات الكود البرمجي مفتوحة المصدر والمغلقة المصدر على حد سواء.
المؤلفون الأصليون:Kaicheng Wang, Liyan Huang, Jesse Thomason, Weihang Wang
في النظام البيئي الشاسع والمترامي الأطراف للبرمجيات الحديثة، يعتمد المطورون على المكتبات الرقمية للعثور على لبنات البناء التي يحتاجون إليها. تخيل مبرمجاً يبحث عن دالة محددة لتحميل البيانات بسرعة؛ يكتب سؤالاً في شريط البحث، ويجب على نظام ما أن يغربل ملايين الأسطر من الكود البرمجي فوراً للعثور على المطابقة المثالية. هذه العملية، المعروفة باسم استرجاع الكود (code retrieval)، هي العمود الفقلق للإنتاجية، حيث تسمح للمهندسين بإعادة استخدام الحلول الموجودة بدلاً من إعادة اختراع العجلة. ولجعل هذا العمل يتم على نطاق واسع، تستخدم الحواسيب نماذج متخصصة تترجم كلاً من السؤال البشري وكود الكمبيوتر إلى مساحة رياضية مشتركة. في هذه المساحة، كلما كان عنصران أقرب إلى بعضهما البعض، زاد اعتبارهما متشابهين. ثم يقوم النظام بترتيب النتائج، واضعاً الكود الأكثر صلة في المقدمة. لسنوات، وثقت الصناعة في هذه الأنظمة لتكون قوية، بافتراض أنه بما أن الكود يعمل بشكل صحيح، فإن الكمبيوتر سيفهم غرضه.
ومع ذلك، تكشف دراسة جديدة عن هشاشة مثيرة للقلق في هذه الأنظمة. فقد اكتشف باحثون من جامعة جنوب كاليفورنيا أن أدوات البحث القوية هذه يمكن خداعها بسهولة، ليس بتغيير ما يفعله الكود فعلياً، بل بتغيير أسماء المتغيرات والدوال بداخله. أظهر الفريق أنه من خلال استبدال هذه الأسماء بعناية، استطاعوا جعل كود غير ذي صلة تماماً يبدو كأنه الإجابة المثالية لسؤال محدد. الأمر يشبه أن يتم خداع أمين مكتبة ل يسحب كتاب طبخ من الرف لمجرد أن المؤلف غير عنوان فصل ليتطابق مع الكلمات الموجودة في ورقة طلب الزائر، رغم أن محتويات الكتاب ظلت بالكامل عن الطبخ، وليس عن حاجة الزائر الفعلية.
لق un طور الباحثون طريقة لاستغلال هذه الثغرة. فقد أخذوا قطعة من الكود ليس لها علاقة باستعلام بحث محدد - ربما مقتطف لفرز قائمة من الأرقام بينما يسأل المستخدم عن طريقة لتحميل البيانات - وقاموا بتغيير الرموز الداخلية بشكل منهجي. فعلوا ذلك دون تغيير سطر واحد من منطق الكود، مما ضمن أن البرنامج سيظل يعمل تماماً كما كان من قبل. وباستاستخدام نموذج حاسوبي أصغر ومتاح لتوجيه هذه التغييرات، وجدوا الأسماء المحددة التي ستجعل الكود غير المرتبط يبدو متطابقاً رياضياً مع السؤال المستهدف في عين الكمبيوتر. وكانت النتيجة قطعة من الكود تعمل بشكل مثالي ولكنها منفصلة دلالياً عن قصد المستخدم، ومع ذلك صنفها محرك البحث كأفضل نتيجة.
الجانب الأكثر إثارة للقلق في هذا الاكتشاف هو مدى سهولة انتقال هذه الخدعة عبر الأنظمة المختلفة. لقد أنتج الباحثون هذه المقتطفات البرمجية الخادعة باستخدام نموذج أصغر مفتوح المصدر، ومع ذلك نجحت الخدعة بفعالية مماثلة ضد الأنظمة الأكبر والمغلقة التي تستخدمها شركات التكنولوجيا الكبرى. عندما اختبروا ذلك ضد النماذج المتطورة، انهارت قدرة محركات البحث. في إحدى التجارب، انخفضت قدرة النظام على إيجاد الإجابة الصحيحة بنسبة تصل إلى 77 بالمائة. فشلت محركات البحث، التي كانت تسجل درجات عالية سابقاً في الاختبارات القياسية، في التمييز بين الحل الحقيقي والمحتال المتلاعب. يشير هذا إلى أن هذه النماذج لا تفهم حقاً معنى الكود؛ بل تعتمد بدلاً من ذلك بشكل مفرط على الأنماط السطحية، مثل الكلمات المحددة المستخدمة في أسماء المتغيرات، بدلاً من المنطق الأعمق للبرنامج.
كما استكشفت الدراسة ما إذا كان يمكن تحصين هذه الأنظمة ضد مثل هذه الهجمات. حاول الباحثون تدريب النماذج على تجاهل هذه الأنماط الخادعة، لكن الحل جاء بثمن باهظ. فعندما جعلوا النماذج أكثر مقاومة للخدعة، تضررت قدرتها على إجراء عمليات البحث العادية بشكل كبير، حيث انخفضت دقتها إلى النصف. وعلى العكس من ذلك، عندما حاولوا موازنة السلامة مع الأداء، ظلت النماذح عرضة لنسخة أكثر تطوراً من الهجوم. تشير النتائج إلى أن الجيل الحالي من أدوات البحث عن الكود، رغم معايير أدائها المثيرة للإعجاب، مبني على أساس أكثر هشاشة مما كان يُعتقد سابقاً. فهي تعطي الأولوية لمطابقة النص السطحي على فهم الوظيفة الفعلية للبرمجيات، مما يتركها عرضة للتلاعب الذي قد يعطل سير عمل التطوير أو، في أسوأ السيناريوهات، يؤدي بالمطورين إلى استخدام كود ضار يبدو شرعياً.
تمتد هذه الثغرة إلى ما هو أبعد من مجرد محركات البحث البسيطة. أظهر الباحثون أن نفس الخدعة يمكن أن تخدع النماذج اللغوية الكبيرة المستخدمة لتوليد الكود من المستودعات. فعندما عُرضت هذه الأنظمة المتقدمة على الكود المتلاعب به، انخفضت دقتها في اختيار الدالة الصحيحة عبر لغات برمجة متعددة، بما في ذلك بايثون، و C++، وجافا. نجح الهجوم لأن النماذج انجذبت إلى المعرفات المعاد تسميتها والتي تطابقت مع الاستعلام، متجاهلة حقيقة أن سلوك الكود كان غير ذي صلة. وتخلص الدراسة إلى أن الصناعة بحاجة إلى الانتقال نحو طرق أكثر قوة تفهم بنية ومنطق الكود، بدلاً من مجرد مظهره النصي. وحتى ذلك الحين، تظل الثقة الموضوعة في هذه الأدوات المؤتمتة لتوجيه القرارات البرمجية الحرجة محفوفة بالمخاطر، وعرضة للتلاعب بمجرد تغيير بسيط لبضع كلمات.
ملخص تقني: البحث عن الكود الضعيف: هجوم قابل للنقل على نماذج لغة الكود
بيان المشكلة
يعد استرجاع الكود بشكل موثوق أمراً ضرورياً لإنتاجية المطورين وإعادة استخدام الكود، ومع ذلك، تظهر نماذج لغة الكود (CLMs) العصبية الحالية التي تدعم أدوات البحث ثغرة حرجة: فهي عرضة للهجمات العدائية التي تستهدف العناصر النصية غير الوظيفية. وبينما ركزت الأبحاث السابقة على الهجمات العدائية في تصنيف الكود، فإن البحث عن الكود يفرض تحديات فريدة. فخلافاً للتصنيف، حيث يتم معالجة الكود الخبيث مباشرة أثناء الاستدلال، يعتمد البحث عن الكود غالباً على التضمين غير المتصل (offline embedding). في سير العمل هذا، يتم تضمين مقتطفات الكود وفهرستها قبل حدوث عملية الاسترجاع. وإذا قام المهاجم بحقن مقتطفات معدلة تحافظ على المعاني الصحيحة ولكنها تغير مساحة التضمين، فلن يتمكن نظام الاسترجاع من اكتشاف أو تخفيف هذه المدخلات بسهولة لأن الكود المعدل سيبدو غير ضار ويحافظ على الصحة الوظيفية.
تحقق النماذج الحالية المتطورة درجات عالية في المعايير القياسية، ومع ذلك، تفترض هذه الورقة أن هذه الدرجات تخفي اعتماداً على ميزات معجمية هشة بدلاً من الفهم الدلالي القوي، مما يترك الأنظمة عرضة للتلاعب.
المنهجية
يقترح المؤلفون هجوماً عدائياً قابلاً للنقل وغير مرتبط بلغة برمجة محددة يستغل ثغرات نماذج لغة الكود عبر تغيير المعرفات (أسماء الدوال والمتغيرات) داخل مقتطف الكود. تم تصميم الهجوم لجعل تضمين الكود يتوافق اصطناعياً مع استعلام مستهدف مع الحفاظ بصرامة على منطق التنفيذ الخاص بالمقتطف.
المكونات الأساسية
نموذج التهديد: يعمل المهاجم تحت افتراض "الصندوق الأبيض" (white-box) فيما يتعلق بنموذج بديل (مثل CodeT5+ أو OASIS)، ولكنه يستهدف نماذج الضحية ذات "الصندوق الأسود" (black-box) (مثل Voyage-code-3 أو Gemini-3.1-Pro). الهدف هو التلاعب بترتيب الاسترجاع بحيث تظهر أكواد غير ذات صلة أو خبيثة في نتائج الـ k-الأعلى لاستعلام معين. يستهدف الهجوم مرحلة الفهرسة، مما يتطلب حقن الكود المعدل في مجموعة بيانات الاسترجاع.
التحسين الموجه بالمتدرج (Gradient-Guided Optimization): تستخدم الطريقة توسيع تايلور من الدرجة الأولى لتقريب التغيير في درجة التشابه (ΔSim) الناتج عن استبدال الرموز (tokens). تقوم بحساب "التأثير" الناتج عن استبدال رمز معرف محدد t بمعرف مرشح t′ بناءً على متدرج درجة التشابه بالنسبة لتضمينات المدخلات.
يتم اختيار البديل الأمثل t∗ عبر بحث جشع (greedy search) يعظم هذا التأثير.
تضمن القيود الاتساق (استبدال جميع حالات المعرف بـ المعرف الجديد نفسه) والتفرد (ربط المعرفات المتميزة بمعرفات جديدة متميزة).
قيود أسلوب المعرفات: لمنع توليد معرفات غير مفهومة يمكن رصدها بسهولة من قبل البشر أو الوكلاء، يتم تصفية مساحة البحث للحفاظ على اتفاقيات التسمية (مثل camelCase أو snake_case). يجب أن تحافظ الاستبدالات على العدد الأصلي لعلامات الشرطة السفلية أو الحروف الكبيرة.
تشابه رموز الاستعلام: لاستغلال انحياز نماذج البحث نحو التداخل النصي الصريح، يتم تعزيز دالة الهدف بحد يكافئ القرب من رموز الاستعلام. معيار الاختيار النهائي يوازن بين تأثير المتدرج وتشابه رموز الاستعلام (حيث α هو معلمة فائقة، تم ضبطها عند 0.1).
نقل الهجوم: يتم توليد الهجوم على نموذج بديل صغير ومتاح (مثل CodeT5+)، ثم يُنقل إلى نماذج الضحية الأكبر أو مغلقة المصدر (مثل Voyage-code-3 أو Gemini-3.1-Pro). يلاحظ المؤلفون أن الأمثلة العدائية غالباً ما تكون مستقلة عن النموذج؛ حيث يرتبط تعظيم التشابه في النموذج البديل بقوة مع تعظيم التشابه في النموذج المستهدف.
المساهمات الرئيسية
طريقة هجوم مبتكرة: تقدم الورقة طريقة هجوم عدائي للبحث عن الكود تقوم بتغيير معرفات الكود لتعظيم التشابه مع استعلام مستهدف مع الحفاظ على الوظيفة.
إثبات القابلية للنقل: يوضح المؤلفون أن مقتطفات الكود العدائية التي تم توليدها باستخدام نماذج بديلة صغيرة (مثل CodeT5+) تنجح بفعالية في خداع الأنظمة الأكبر والأكثر قوة ومغلقة المصدر (بما في ذلك Voyage-code-3 والنماذج اللغوية الكبيرة مثل Gemini-3.1-Pro) عبر خمس لغات برمجة.
كشف فجوات المتانة: تكشف هذه الدراسة أن الدرجات العالية في الاختبارات المعيارية لا تضمن المتانة. فالنماذج الحالية تعطي الأولوية للمطابقة المعجمية السطحية على الاستنتاج الدلالي، مما يؤدي إلى ثغرات خطيرة تفشل التقييمات القياسية في رصدها.
النتائج التجريبية
قيم المؤلفون الهجوم على مجموعات بيانات تشمل CosQA (Python) و CLARC (C++)، واختبروه ضد نماذج التضمين (CodeT5+, OASIS, Nomic-embed-code, Voyage-code-3) والنماذج اللغوية الكبيرة التوليدية (GPT-5.4-mini, Gemini-3.1-Pro).
الفعالية والقابلية للنقل:
زاد الهجوم من تشابه الاستعلام-الكود لأكثر من 97% من الأمثلة في النموذج البديل.
كانت القابلية للنقل قوية: زادت المقتطفات العدائية التي تم توليدها باستخدام CodeT5+ من التشابه في Nomic-embed-code و Voyage-code-3 في أكثر من 95% من الحالات.
لوحظت ارتباطات قوية (Pearson و Spearman) بين تغير التشابه في النماذج البديلة والمستهدفة، مما يشير إلى إمكانية تقدير فعالية الهجوم بكفاءة.
التأثير على مقاييس الاسترجاع:
أدى استبدال 10% فقط من المرشحات غير ذات الصلة بنسخ عدائية إلى انخفاض كارثي في أداء الاسترجاع.
انخفض متوسط الرتبة العكسية (MRR) بنسبة تصل إلى 77% في جميع النماذج المختبرة على CosQA (على سبيل المثال، من 74.08 إلى 1.79 لـ CodeT5+).
انخفضت قيمة Recall@5 إلى أقل من 15% لجميع النماذج.
هجوم المجموعة المشتركة: حتى في الإعداد المقيد حيث تخدم مجموعة واحدة عدة استعلامات، أدى حقن عدد قليل من المقتطفات العدائية (مثلاً 4% من المجموعة) إلى تدهور كبير في MRR و NDCG، رغم أن التأثير ضعف كلما تم تقاسم المقتطفات بين استعلامات أكثر.
ضعف النماذج اللغوية الكبيرة (LLM): انتقل الهجوم إلى استرجاع المستودعات القائم على LLM (RepoQA)، مما قلل من دقة GPT-5.4-mini و Gemini-3.1-Pro بنسبة تتراوح بين 15-20% عبر لغات متعددة.
محدودية الدفاع: بحثت الورقة في الضبط الدقيق المتين (robust finetuning). وبينما خفف الضبط الدقيق "المتين فقط" (Robust-Only) من الهجوم، إلا أنه أدى إلى تدهور شديد في فائدة الاسترجاع (انخفض MRR بنسبة ~50%). أما الضبط الدقيق "المختلط" (Mixed) فقد حافظ على الفائدة ولكنه ظل عرضة لهجمات "الصندوق الأبيض" التكيفية.
الأهمية والادعاءات
تخلص الورقة إلى أن هشاشة طرق البحث عن الكود الحالية هي قضية حرجة. ويدعي المؤلفون أن الأداء العالي للنماذج المتطورة في الاختبارات المعيارية مضلل، لأن هذه النماذج تعتمد بشدة على الإشارات المعجمية (المعرفات) بدلاً من الفهم الدلالي العميق.
تكمن أهمية هذا العمل في:
تسليط الضوء على فجوة حرجة: كشف أن التقييمات القياسية تفشل في التقاط عرضة البحث عن الكود للتلاعب العدائي، خاصة في سيناريوهات التضمين غير المتصل.
القابلية للنقل كتهديد: إثبات أن المهاجمين لا يحتاجون إلى الوصول إلى معاملات نموذج الضحية؛ حيث يمكن استخدام نماذج صغيرة مفتوحة المصدر لصياغة هجمات تضرب الأنظمة المملوكة والمغلقة.
الدعوة إلى المتانة: تؤكد النتائج الحاجة الملحة لنهج أكثر متانة وإدراكاً للدلالات لتمثيل الكود، والابتعد عن الاعتماد على الميزات المعجمية الهشة.
يقترح المؤلفون أن العمل المستقبلي يجب أن يركز على فهم آليات القابلية للنقل وتطوير دفاعات، مثل التدريب التبايني المدرك للوظائف أو دمج المعلومات الهيكلية (مثل ASTs)، لبناء تمثيلات كود أكثر استناداً إلى الدلالات.