CodeAuditAgent
كل المقالات
  • الأمان
  • OWASP
  • قائمة تحقق

أهم 10 ثغرات برمجية يجب البحث عنها في 2026

قائمة تحقق عملية بعشر فئات من الثغرات تستحق الفحص في كل مراجعة للكود، مربوطة بـ OWASP Top 10 وCWE، مع إصلاح من سطر واحد لكل منها.

· قراءة في 9 دقائق · Lina Source LLC

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

1. خلل في التحكم بالوصول (CWE-639, CWE-862)

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

// Scope every lookup to the owner
const invoice = await db.invoice.findFirst({
  where: { id, userId: session.user.id },
});

2. الحقن (CWE-89, CWE-78)

لا تزال استعلامات SQL وأوامر shell وتعابير القوالب المبنية بتجميع النصوص منتشرة في كل مكان، وغالبًا في ذلك الاستعلام الوحيد الذي كتبه أحدهم يدويًا لتحسين الأداء. استخدم الاستعلامات المُعلَّمة (parameterized) أو مرّر الوسائط كمصفوفة، ولا تدمج المدخلات في النصوص أبدًا.

3. الأسرار المضمّنة في الكود (CWE-798)

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

4. تزوير الطلبات من جانب الخادم (CWE-918)

أي ميزة تجلب عنوان URL يقدّمه المستخدم، مثل webhooks أو معاينات الروابط أو عمليات الاستيراد، يمكن توجيهها نحو شبكتك الداخلية أو نقطة البيانات الوصفية السحابية. استخدم قائمة سماح للمضيفين، وحلّل عنوان IP وتحقق منه، واحظر النطاقات الخاصة.

5. البرمجة النصية عبر المواقع (CWE-79)

تقوم أطر العمل الحديثة بالتهريب (escaping) افتراضيًا، لذا يختبئ XSS الآن في منافذ الالتفاف: خصائص HTML الخام، ومُصيّرات markdown، وعناوين URL الموضوعة في سمات href. نظّف HTML بمكتبة موثوقة وارفض عناوين javascript:.

6. إلغاء التسلسل غير الآمن وeval (CWE-502, CWE-95)

Pickle وتحميل YAML وتدفقات كائنات Java وeval الديناميكي تحوّل البيانات إلى كود. استخدم أدوات تحميل آمنة وJSON متحققًا منه عبر مخطط بدلًا من ذلك.

7. تشفير ضعيف (CWE-327, CWE-330)

MD5 أو SHA-1 لكلمات المرور، ومتجهات تهيئة (IV) ثابتة، وMath.random() لتوليد الرموز. استخدم دالة تجزئة لكلمات المرور مصممة لهذا الغرض (Argon2id أو bcrypt أو scrypt) ومصدرًا عشوائيًا آمنًا تشفيريًا.

8. إعادة التوجيه المفتوحة (CWE-601)

معامل next أو returnTo يقبل أي عنوان URL يجعل نطاقك منصة انطلاق موثوقة للتصيّد الاحتيالي. اقبل فقط المسارات النسبية من الأصل نفسه.

9. غياب تحديد معدل الطلبات (CWE-307, CWE-770)

تسجيل الدخول وإعادة تعيين كلمة المرور وOTP وأي نقطة نهاية تكلّفك مالًا (البريد الإلكتروني، الرسائل النصية SMS، استدعاءات AI) تحتاج إلى حدود لكل مستخدم ولكل IP. من دونها تصبح هجمات القوة الغاشمة وهجمات الفواتير الصادمة أمرًا بسيطًا.

10. سوء إعدادات الأمان (CWE-16)

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

كيف تستخدم هذه القائمة

  • افحص الفئات من 1 إلى 3 في كل pull request؛ فهي الأعلى تأثيرًا والأسهل في أن تفوتك.
  • تعامل مع إعدادات البنية التحتية وCI على أنها كود خاضع للمراجعة.
  • سجّل معرّف CWE في كل اكتشاف كي يمكن تتبع الإصلاحات وقياس الاتجاهات.