
برنامج خفي لجعل قيمة tcp_challenge_ack_limit عشوائية لمنع هجمات القنوات الجانبية CVE-2016-5696
chackd هو برنامج خفي يعمل على تغيير معامل النواة tcp_challenge_ack_limit بشكل عشوائي كل ثانية لمنع هجمات القنوات الجانبية (side channel attacks).
هجوم قناة جانبية عُرض مؤخرًا حظي باهتمام كبير من المجتمع [1]. بالنسبة للعديد من الخوادم أو أجهزة الهواتف الذكية، يُعتبر هذا الهجوم خطيرًا على اتصالات ipv4. لا شك أن النواة ستعمل على إصلاح هذه المشكلة في الإصدارات القادمة. ومع ذلك، قد لا يقوم بعض المسؤولين بتحديث النواة لأسباب محددة أو لمجرد الكسل.
ضبط المعامل على قيمة عالية جدًا [2] سيعمل بشكل جيد. من ناحية أخرى، بالنسبة لتطبيقات الخوادم قد يؤدي ذلك إلى قدر غير ضروري من حركة المرور. لمنع ذلك، كتبت برنامج chackd. وهو قادر على الضبط ليحقق الحل المقدم في [1].
يقوم برنامج chackd الخفي بهذه المهمة بشكل جيد جدًا مع الحفاظ على البساطة. كان مفهومي السابق يتمثل في البحث عن وحدة نواة قابلة للتحميل، لكنني تخليت عن ذلك، نظرًا لوجود واجهة قوية بين مساحة المستخدم ومساحة النواة تُسمى proc vfs. وباستخدام ملفات proc يمكننا إنجاز المهمة ببرنامج خفي بسيط.
هذا هو أول مشروع مفتوح المصدر لي، وله فائدة رائعة للمسؤولين الذين يرغبون في تأمين أنظمتهم ضد هجمات challenge_ack_limit وغير القادرين على تحديث النواة لديهم. فقط قم بتجميعه وتشغيله على خادمك.
أحتاج مساعدة المجتمع لجعل هذا المشروع «معيارًا مجتمعيًا».
يرجى البحث عن TODOs داخل ملفات src لبعض الأشياء التي أرغب في العمل عليها. لا تتردد في إنشاء فرع (branch) بأي طريقة تريدها. أود أن أتعلم الكثير من هذا المشروع.
Makefile - رغبتي في Makefile هي جعله نوعًا من المعايير مع التثبيت والاستعلام عن إصدارات النواة وما إلى ذلك.
start_daemon - يجب إصلاح أي جزء من الكود قد يتسبب في تعطل البرنامج الخفي.
stop_daemon - يجب إصلاح أي جزء من الكود ليس ضمن المعايير القياسية.
init_daemon - يجب إصلاح أي جزء من الكود قد يتسبب في تعطل البرنامج الخفي.
main - نيّتي هي أن تُعطى المعاملات الرئيسية كأعداد صحيحة بسيطة، وهي تعمل بشكل جيد حاليًا. لكن ربما توجد طريقة أفضل بكثير للتعامل معها؟
فاصل زمني قدره ثانية واحدة لأمر "sysctl net.ipv4.tcp_challenge_ack_limit"
net.ipv4.tcp_challenge_ack_limit = 222
net.ipv4.tcp_challenge_ack_limit = 227
net.ipv4.tcp_challenge_ack_limit = 191
net.ipv4.tcp_challenge_ack_limit = 178
net.ipv4.tcp_challenge_ack_limit = 229
net.ipv4.tcp_challenge_ack_limit = 167
net.ipv4.tcp_challenge_ack_limit = 189
net.ipv4.tcp_challenge_ack_limit = 229
Bastian Pukallus، يرجى مراسلتي على البريد الإلكتروني [email protected]
[1] http://www.cs.ucr.edu/~zhiyunq/pub/sec16_TCP_pure_offpath.pdf
[2] https://www.mail-archive.com/[email protected]/msg705042.html