وقت الفحص لوقت الاستخدام

الاثار الجانبيه للعيوب البرمجيه

وقت الفحص لوقت الاستخدام (بالإنجليزية: Time-of-check to time-of-use وباختصار: TOCTOU) هي مجموعة ثانوية من العيوب البرمجيّة الناتجة عن حالة تسابق حيث يتمّ فحص اجزاء من البرنامج المحوّسب واستخدام هذه الفحوصات.

يعد TOCTOU أمرًا شائعًا في نظام التشغيل Unix ، بين عمليات نظام الملفات، ولكن يمكن أن يحدث أيضًا في سياقات أخرى، بما في ذلك المقابس المحلية والاستخدام غير السليم لعمليات نقل قواعد البيانات.

ضعف TOCTOU عدل

تشكّل مجموعة TOCTOU ضعف يمكن استغلاله حيث يتحقق البرنامج من حالة المصدر قبل استخدام هذا المصدر، ولكن يمكن أن تتغير حالة المصدر بين الفحص والاستخدام بطريقة تبطل نتائج الفحص. وقد يتسبب هذا في قيام البرنامج بتنفيذ إجراءات غير صالحة عندما يكون المصدر في حالة غير متوقعة.[1] يمكن أن يتهدد هذا الضعف بأمن الحاسوب وأمن المعلومات عندما يستطيع المهاجم التأثير على حالة المصدر بين الفحص والاستخدام، ويمكن أن يحدث هذا مع المصادر المشتركة مثل الملفات أو الذاكرة أو حتى المتغيرات في البرامج متعددة مؤشرات الترابط.

مثال عدل

يحتوي رمز C التالي على خطأ وقت الفحص لوقت الاستخدام، عند استخدام setuid في Unix حيث يوجد حالة تسابق بين access و open.

if (access("file", W_OK) != 0) {
    exit(1);
}

fd = open("file", O_WRONLY);
// Actually writing over /etc/passwd
write(fd, buffer, sizeof(buffer));

هذا السباق من العمليات عرضة للهجمة التالية حيث تم إضافة برنامج خبيث يقوم بتغيير الوجهة من file إلى etc/passwd/ في اثناء عمل عملية access وقبل بدأ عملية open فتقوم عملية open بفتح etc/passwd/ ولذلك تكتب write في مكان لم يقصد المستخدم الكتابة به وينجح المهاجم في هجومه:

//
//
// After the access check
symlink("/etc/passwd", "file");
// Before the open, "file" points to the password database
//
//

في هذا المثال، يمكن للمهاجم استغلال سباق العملية الذي يحدث هنا، لخداع الضحية بحيث يعيد كتابة قاعدة بيانات كلمات مرور النظام بالكامل.

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

انظر أيضًا عدل

مراجع عدل

  1. ^ "CWE - CWE-367: Time-of-check Time-of-use (TOCTOU) Race Condition (4.8)". cwe.mitre.org. مؤرشف من الأصل في 2022-05-12. اطلع عليه بتاريخ 2022-07-31.