
Kubernetes DaemonSet لاكتشاف ومعالجة CVE-2026-31431 (GHSA-2274-3hgr-wxv6) — algif_aead LPE عبر قائمة الحظر modprobe
الخطورة: عالية (CVSS 7.8 — CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H)
CVE-2026-31431 هي ثغرة تصعيد صلاحيات محلية في وحدة algif_aead في نواة لينكس (واجهة مآخذ التشفير AF_ALG AEAD). يمكن لمستخدم محلي منخفض الصلاحيات استغلال عمليات المخزن المؤقت غير الصحيحة في المكان للحصول على صلاحيات الجذر الكاملة. جميع مجموعات عقد AKS التي تعمل بنواة لينكس قبل التصحيح المنبعي معرضة للخطر.
وحدة algif_aead غير مطلوبة لأحمال عمل Kubernetes أو AKS العادية. إدراجها في القائمة السوداء يلغي سطح الهجوم بالكامل.
يعمل بود واحد على كل عقدة لينكس. عند بدء التشغيل ثم كل 60 ثانية يقوم كل بود بما يلي:
يكتب /etc/modprobe.d/modprobe-CIS.conf على المضيف بالمحتوى التالي:
install algif_aead /bin/false
blacklist algif_aead
يمنع هذا تحميل الوحدة عند إعادة التشغيل أو عبر modprobe.
يفحص /proc/modules (قائمة وحدات نواة المضيف الحية — المشتركة مع جميع الحاويات) بحثًا عن algif_aead.
يوسم عقدة Kubernetes بالنتيجة حتى تتمكن من الاستعلام عبر المجموعة:
| قيمة الوسم | المعنى |
|---|---|
mitigated | الوحدة غير محملة؛ تم تطبيق إعداد القائمة السوداء |
module-loaded | الوحدة محملة حاليًا — تحقق فورًا |
| الملف | الغرض |
|---|---|
rbac.yaml | Namespace وServiceAccount وClusterRole (get/patch للعقد) وClusterRoleBinding |
configmap.yaml | سكربت المعالجة الصدفي المثبت في كل بود |
daemonset.yaml | تعريف DaemonSet — بود واحد لكل عقدة لينكس |
kubectl مهيأ للاتصال بمجموعة AKS المستهدفةطبق الملفات بالترتيب:
kubectl apply -f rbac.yaml
kubectl apply -f configmap.yaml
kubectl apply -f daemonset.yaml
انتظر اكتمال النشر على جميع العقد:
kubectl -n security-remediation rollout status daemonset/cve-2026-31431-remediator
kubectl get nodes -L vulnerability.aks.io/CVE-2026-31431
المخرجات المتوقعة على مجموعة نظيفة:
NAME STATUS ROLES AGE VERSION CVE-2026-31431
aks-nodepool1-xxxxx-vmss000000 Ready <none> 4d v1.33.7 mitigated
aks-nodepool1-xxxxx-vmss000001 Ready <none> 4d v1.33.7 mitigated
# قائمة البودات والعقد المخصصة لها
kubectl -n security-remediation get pods -o wide
# تتبع سجلات بود محدد
kubectl -n security-remediation logs <pod-name> -f
المخرجات المتوقعة للسجلات:
2026-05-01T01:33:36Z [INFO ] CVE-2026-31431 remediator starting on node: aks-nodepool1-...
2026-05-01T01:33:36Z [INFO ] Blacklist config written → /host/etc/modprobe.d/modprobe-CIS.conf
2026-05-01T01:33:36Z [INFO ] Node aks-nodepool1-...: 'algif_aead' is NOT loaded — blacklist config applied, node is mitigated.
2026-05-01T01:33:36Z [INFO ] Labeled node aks-nodepool1-...: vulnerability.aks.io/CVE-2026-31431=mitigated
2026-05-01T01:33:36Z [INFO ] Entering monitoring loop (interval: 60s)
kubectl -n security-remediation exec <pod-name> -- cat /host/etc/modprobe.d/modprobe-CIS.conf
المحتوى المتوقع:
# CIS hardening – mitigate CVE-2026-31431 (GHSA-2274-3hgr-wxv6)
# Prevents algif_aead (AF_ALG AEAD) LPE from being loaded or exploited.
install algif_aead /bin/false
blacklist algif_aead
إذا أظهرت عقدة module-loaded، فإن وحدة النواة نشطة حاليًا وقد تكون العقدة مخترقة بالفعل. قم بعزل وتفريغ العقدة فورًا للتحليل الجنائي:
# العثور على العقد المتأثرة
kubectl get nodes -l vulnerability.aks.io/CVE-2026-31431=module-loaded
# عزل وتفريغ للتحقيق
kubectl cordon <node-name>
kubectl drain <node-name> --ignore-daemonsets --delete-emptydir-data
ملاحظة: إزالة DaemonSet لا تزيل ملف
/etc/modprobe.d/modprobe-CIS.confمن عقد المضيف. يُترك هذا الملف عمدًا كإجراء تقوية دائم للنواة.
kubectl delete -f daemonset.yaml
kubectl delete -f configmap.yaml
kubectl delete -f rbac.yaml
يحذف هذا DaemonSet وجميع البودات الخاصة به وConfigMap وServiceAccount وClusterRole وClusterRoleBinding وnamespace.
kubectl label nodes --all vulnerability.aks.io/CVE-2026-31431-
افعل هذا فقط إذا كان لديك إجراء تخفيف بديل (نواة مصححة). نفذ على كل عقدة أو عبر بود متميز:
rm -f /etc/modprobe.d/modprobe-CIS.conf
runAsUser: 0) — مطلوب للكتابة إلى /etc/modprobe.d/ على المضيف.capabilities.drop: ["ALL"]). لا حاجة لأي صلاحيات نواة.readOnlyRootFilesystem: true. فقط وحدات التخزين المثبتة hostPath وemptyDir قابلة للكتابة./etc/modprobe.d/ مثبت من المضيف — وليس /etc أو /proc أو أي مسار أوسع.curl ومكتباته المشتركة بواسطة حاوية التهيئة في emptyDir (/tools) حتى تتمكن الحاوية الرئيسية من استدعاء Kubernetes API دون الحاجة إلى صلاحيات كتابة على rootfs.get وpatch على nodes فقط.