CVE-2026-4747: ثغرة FreeBSD NFS اللي لازم تتعامل معاها دلوقتي
لو عندك FreeBSD server بيشغّل NFS مع Kerberos، الـ attacker بيقدر ياخد root عن بُعد بتذكرة Kerberos عادية من غير أي صلاحيات خاصة. الثغرة CVE-2026-4747 عمرها 17 سنة في الكود، واكتشفها Claude Mythos Preview في أبريل 2026. قرارك النهارده إنك تعمل patch أو تقفل الخدمة، مفيش خيار تالت.
المشكلة باختصار
الثغرة في svc_rpc_gss_validate() داخل الموديول kgssapi.ko. الدالة بتعيد بناء RPC header في buffer ثابت على الـ stack حجمه 128 بايت، وبعدين بتعمل memcpy لحقل oa_length اللي الـ attacker متحكم فيه من غير ما تتأكد إن الطول يدخل في الـ buffer. النتيجة: stack overflow كلاسيكي جوّا الـ kernel، استغلاله بيدي root shell عن بُعد من غير تفاعل من أي مستخدم.
مين معرّض فعلاً
مش كل FreeBSD box ينطبق عليه الخبر. اتحقق من النقط دي بالترتيب:
- الإصدار: 13.5 قبل p11، 14.3 قبل p10، 14.4 قبل p1، أو 15.0 قبل p5.
- الموديول
kgssapi.koمحمّل على الماكينة. - بورت 2049/TCP مكشوف على شبكة مش موثوقة بالكامل.
- الـ attacker يقدر يحصل على Kerberos ticket صالح لـ NFS service principal، حتى لو لـ user عادي من غير صلاحيات.
لو الأربع نقط اتحققوا مع بعض، انت في الـ blast radius المباشر. لو kgssapi.ko مش محمّل أصلاً عشان مش بتستخدم Kerberos، الهجوم مش قابل للتنفيذ حتى لو الـ kernel نفسه عنده الكود الهش.
الخطوة الفورية — خلال الساعة الأولى
- شغّل الأمر ده لحصر البيئة:
freebsd-version -k && kldstat | grep kgssapi. - لو الموديول شغّال على إصدار معرّض، طبّق FreeBSD-SA-26:08.rpcsec_gss فورًا.
- لو الـ patch محتاج ساعات، اقفل NFS من firewall على الشبكة العامة كـ mitigation مؤقت.
# 1. تحقق من الإصدار وتحميل الموديول
freebsd-version -k
kldstat | grep kgssapi
# 2. ثبّت آخر باتش (FreeBSD 14.4 كمثال)
freebsd-update fetch
freebsd-update install
reboot
# 3. mitigation مؤقت لو مش قادر تعمل reboot الليلة
# اقفل بورت 2049 على المنافذ غير الموثوقة
echo "block in quick proto tcp from any to any port 2049" >> /etc/pf.conf
service pf reload
# 4. لو مش بتستخدم Kerberos أصلاً، فرّغ الموديول كليًا
kldunload kgssapi
sysrc -f /boot/loader.conf kgssapi_load="NO"
الـ trade-offs اللي لازم تحسبها
عندك تلات خيارات، وكل واحد ليه تكلفته الواضحة:
- Patch + reboot فورًا: بتكسب إغلاق كامل للثغرة. بتخسر downtime في حدود 3–8 دقايق لكل node. مناسب لو عندك HA pair أو maintenance window قريب.