تخطَّ إلى المحتوى

Mishandling of Exceptional Conditions

سوء معالجة الحالات الاستثنائية Mishandling of Exceptional Conditions

A10:2025 — فئة جديدة كليًا في القائمة العامة: أخطاء وحالات استثنائية غير متوقعة تُعالَج بشكل غير آمن، فتسرّب معلومات أو تعطّل الخدمة أو تفسد البيانات.

خلافًا لثغرات لها سبب هجومي مباشر (حقن، تجاوز صلاحية)، هذه الفئة سببها الطريقة التي يتصرف بها الكود عند فشل شيء لم يتوقعه أحد: استثناء غير ملتقَط، استجابة خارجية غير متوقعة، أو انقطاع في منتصف عملية متعددة الخطوات. رُفعت لبند مستقل في نسخة 2025 من OWASP Top 10 العامة بعد تحليل عشرات آلاف الثغرات المسجّلة وربطها بأنماط CWE مرتبطة بمعالجة الأخطاء والحالات الحدّية.

الأثر يتوزع على ثالوث CIA بالكامل: تسرّب معلومات (رسائل خطأ تفصيلية)، تعطّل الخدمة (موارد لم تُحرَّر بعد فشل)، أو فساد البيانات (معاملة توقفت في المنتصف).

الصياغة

معالج أخطاء مركزي + رسالة عامة للمستخدم + تفاصيل كاملة في السجلات فقط + Fail Closed دائمًا

📄 مثال

// سيئ
app.get('/api/x', async (req, res) => {
  const x = await db.x.findUniqueOrThrow({ where: { id: req.params.id } });
  res.json(x);
}); // استثناء غير ملتقَط = 500 مع stack trace كامل للمستخدم

// جيد
app.get('/api/x', async (req, res) => {
  try {
    const x = await db.x.findUniqueOrThrow({ where: { id: req.params.id } });
    res.json(x);
  } catch (err) {
    logger.error({ err, requestId: req.id });
    res.status(404).json({ error: 'غير موجود', requestId: req.id });
  }
});

أهم النقاط

النقطةالوظيفة
تسرّب المعلوماترسائل خطأ تفصيلية (استعلامات DB، مسارات ملفات، إصدارات مكتبات) تصل للمستخدم النهائي
تعطّل الخدمةموارد (ملفات مؤقتة، اتصالات، أقفال) لا تُحرَّر عند فشل جزء من عملية
فساد البياناتمعاملة متعددة الخطوات تتوقف في المنتصف فتترك حالة غير متسقة

💡 نصائح عملية

  • اختبر مسارات الفشل بنفس جدّية مسارات النجاح — أغلب هذه الثغرات تظهر فقط تحت ظروف استثنائية لم تُختبَر

⚠️ أخطاء شائعة

  • إرجاع err.message أو err.stack مباشرة في استجابة API بدل رسالة عامة

خصائص ذات صلة

🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار API-SECURITY الكامل بالعربي.