
تخفيف سريع وقابل للتدقيق لأنظمة لينكس لـ CVE-2026-31431 خطأ النسخ: حظر algif_aead، التحقق، وتقوية AF_ALG seccomp.
______ ______ _ __ ______ __
/ ____/___ ____ __ _/ ____/___ _(_) / / ____/_ ______ __________/ /
/ / / __ \/ __ \/ / / / /_ / __ `/ / / / / __/ / / / __ `/ ___/ __ /
/ /___/ /_/ / /_/ / /_/ / __/ / /_/ / / / / /_/ / /_/ / /_/ / / / /_/ /
\____/\____/ .___/\__, /_/ \__,_/_/_/ \____/\__,_/\__,_/_/ \__,_/
/_/ /____/
تقييم سريع وقابل للتدقيق لمدى التعرض وتخفيف الأثر في لينكس لـ CVE-2026-31431 "Copy Fail" لحين تصحيح النواة.
CopyFail Guard هي أداة عمليات دفاعية لمسؤولي أنظمة لينكس، ومهندسي DevSecOps، وفرق المنصات، والمستجيبين للحوادث. تساعد في تقليل التعرض لمشكلة algif_aead / AF_ALG في لينكس عن طريق:
algif_aead متاحًا، أو محملاً، أو مدمجًا، أو محظورًا بالفعلmodprobe.d وإلغاء تحميل الوحدة عندما يكون آمنًاالإصلاح النهائي: قم بتثبيت نواة مصححة من البائع وأعد التشغيل.
هذه الأداة تسد الفجوة التشغيلية بين الكشف والتحديث الكامل للأسطول.
splice، أو تغيير setuid، أو تصعيد الامتيازات، أو استقصاءات مدمرة./etc/modprobe.d/99-copyfail-guard.conf، والإلغاء يزيل ذلك الملف فقط.seccomp-patch حظر AF_ALG إلى ملف seccomp موجود لـ Docker/Podman/Kubernetes بدلاً من استبدال تعزيز وقت التشغيل الخاص بك.assess --json وأكواد الخروج الموثقة عمليات مسح الأسطول، والتقاط SIEM، وأدلة إدارة التغيير.إذا كنت على مضيف لينكس وتحتاج إلى إجابة سريعة:
git clone --depth 1 https://github.com/juliosuas/copyfail-guard.git
cd copyfail-guard
sudo ./bin/copyfail-guard.sh doctor
sudo ./bin/copyfail-guard.sh assess
إذا كانت النتيجة مكشوفة وalgif_aead قابل للتعديل:
sudo ./bin/copyfail-guard.sh mitigate --yes
sudo ./bin/copyfail-guard.sh verify
للتثبيت القابل للتكرار، ثبّت علامة إصدار:
git clone --branch v0.3.0 --depth 1 https://github.com/juliosuas/copyfail-guard.git
استبدل v0.3.0 بأحدث إصدار معلّم عند توفر إصدارات أحدث.
قم بتشغيل فحص التعرض الآمن أولاً:
sudo ./bin/copyfail-guard.sh assess
كيفية قراءة النتيجة:
إذا كنت تشغل حاويات غير موثوقة، أو وظائف CI، أو صناديق رمل، أو أعباء عمل متعددة المستخدمين، فاختبر أيضًا ما إذا كان إنشاء مأخذ AF_ALG محظورًا داخل بيئة التشغيل تلك:
python3 tools/afalg-socket-test.py
PERMITTED لا تثبت استغلالاً ناجحًا، ولكنها تثبت أن واجهة برمجة التطبيقات المشفرة ذات الصلة للمستخدم قابلة للوصول. بالنسبة للعمليات الدفاعية، هذا سبب كافٍ لتطبيق التخفيف أثناء تأكيد نشر النواة المصححة.
لا يتم تضمين إثبات مفهوم مدمر. هذه ميزة، وليست فجوة.
إثبات استغلال Copy Fail حقيقي سيحتاج إلى التحقق من تأثير ذاكرة kernel/page-cache أو تصعيد الامتيازات. شحن ذلك في مستودع تخفيف عام سيجعل المشروع أقل أمانًا وأقل قابلية للنشر في الإنتاج.
CopyFail Guard يثبت الأشياء التي يمكن للمشغلين التصرف بناءً عليها بأمان:
للحصول على حالة الثغرة الأمنية النهائية، ادمج هذه الأداة مع استشارات البائع/جرد الحزم وأدلة إعادة التشغيل.
CopyFail Guard هو تخفيف، وليس علاجًا. يقلل التعرض ويتحقق من الضوابط المؤقتة. الإصلاح الدائم يبقى نواة مصححة من البائع بالإضافة إلى إعادة التشغيل.
الأداة مصممة عن قصد لتكون clone-and-run للاستجابة للحوادث: لا حاجة لمترجم، ملفات رأس kernel، كود استغلال، أو مدير حزم تابع لجهة خارجية لسير عمل المضيف الأساسي. مطلوب python3 لمخرجات --json، وseccomp-patch، واختبار مأخذ AF_ALG غير الاستغلالي.
Clone-and-run:
git clone https://github.com/juliosuas/copyfail-guard.git
cd copyfail-guard
chmod +x bin/copyfail-guard.sh
sudo ./bin/copyfail-guard.sh doctor
sudo ./bin/copyfail-guard.sh assess
sudo ./bin/copyfail-guard.sh mitigate --yes
sudo ./bin/copyfail-guard.sh verify
تثبيت نظام اختياري:
git clone https://github.com/juliosuas/copyfail-guard.git
cd copyfail-guard
sudo ./scripts/install.sh
sudo copyfail-guard status
يدعم المثبت تثبيت المصدر والوجهة للطرح المُتحكم به:
sudo env COPYFAIL_GUARD_REF=v0.3.0 ./scripts/install.sh
استخدم أحدث إصدار معلّم لـ COPYFAIL_GUARD_REF عند توفر إصدارات أحدث.
تعزيز الحاويات / CI:
./bin/copyfail-guard.sh seccomp-patch docker-default.json copyfail-seccomp.json
docker run --security-opt seccomp=./copyfail-seccomp.json IMAGE
تحقق من أن AF_ALG محظور داخل حاوية محمية:
docker run --rm \
--security-opt seccomp=./copyfail-seccomp.json \
-v "$PWD/tools:/tools:ro" \
python:3.12-alpine \
python /tools/afalg-socket-test.py
النتيجة المتوقعة في حالة الحماية:
BLOCKED: socket(AF_ALG) denied by policy (...)
انظر عينة المخرجات للأحكام المتوقعة، شكل JSON، ونتائج التحقق من الحاويات.
Copy Fail هي تصعيد امتيازات محلية في نواة لينكس في مكون algif_aead من واجهة برمجة التطبيقات المشفرة AF_ALG للمستخدم. تصف الاستشارات العامة بدائية كتابة ذاكرة تخزين مؤقت للصفحات يمكن الوصول إليها من قبل مستخدمين محليين غير مميزين وخطيرة بشكل خاص على أنظمة ذات نواة مشتركة: عقد Kubernetes، مشغلات CI/CD، مضيفين متعددي المستأجرين، صناديق رمل للوكلاء، وأجهزة المطورين.
الإصلاح الصحيح هو تحديث النواة من البائع يحتوي على التراجع/الإصلاح من المنبع وإعادة التشغيل على النواة المصححة. CopyFail Guard هو مساعد عمليات دفاعية للنافذة قبل اكتمال إعادة التشغيل عبر الأسطول.
أوامر المضيف الأساسية:
bashmodinfo، modprobe، lsmod، rmmod حيثما كانت متوفرةgrep، awk، mktemp، installأدوات الرؤية الاختيارية:
lsof أو ss لفحص مستهلكي AF_ALGتصحيح ملف seccomp:
python3 لـ --json، وseccomp-patch، وtools/afalg-socket-test.pyلا حاجة لكود استغلال، أو مترجم، أو ملفات رأس kernel، أو حزم من جهات خارجية.
CopyFail Guard لا يتضمن إثبات مفهوم استغلال. هذا متعمد. راجع هل هذا يثبت الثغرة الأمنية؟.
بدلاً من ذلك، يقوم assess بفحص تشغيلي آمن:
algif_aead يبدو متاحًا، أو محملاً، أو مدمجًا، أو محظورًاJSON للأتمتة:
sudo ./bin/copyfail-guard.sh assess --json
./bin/copyfail-guard.sh doctor --json
أكواد الخروج:
يكتب mitigate:
/etc/modprobe.d/99-copyfail-guard.conf
مع:
# Managed by CopyFail Guard for CVE-2026-31431
install algif_aead /bin/false
blacklist algif_aead
ثم يحاول:
sudo rmmod algif_aead
إذا كانت الوحدة قيد الاستخدام حاليًا، فقد يفشل rmmod. في هذه الحالة، يبقى الحظر الدائم مثبتًا؛ أوقف مستهلكي AF_ALG أو أعد التشغيل بعد تطبيق التخفيف.
يرفض البرنامج النصي الكتابة فوق رابط رمزي في مسار modprobe المُدار ويكتب الملف بشكل ذري بصلاحيات آمنة.
لأعباء العمل غير الموثوقة، احظر إنشاء مأخذ AF_ALG باستخدام seccomp حتى أثناء تصحيح المضيفين.
المسار الموصى به: قم بتصحيح خط الأساس الحالي لـ seccomp الخاص ببيئة التشغيل بدلاً من استبداله:
./bin/copyfail-guard.sh seccomp-patch docker-default.json copyfail-seccomp.json
استخدمه مع Docker:
docker run --security-opt seccomp=./copyfail-seccomp.json IMAGE
استخدمه مع Podman:
podman run --security-opt seccomp=./copyfail-seccomp.json IMAGE
مسار الطوارئ فقط إذا لم يكن لديك ملف أساسي:
./bin/copyfail-guard.sh seccomp-docker ./copyfail-afalg-seccomp.json
يحظر ملف الطوارئ المُنشأ AF_ALG ولكنه يسمح باستدعاءات النظام الأخرى. تعامل معه كحل مؤقت مستهدف، وليس بديلاً عن تعزيز seccomp الافتراضي لـ Docker.
بالنسبة لـ Kubernetes، ضع الملف تحت جذر seccomp الخاص بـ kubelet، عادةً:
/var/lib/kubelet/seccomp/profiles/copyfail-seccomp.json
ثم قم بالإشارة إليه بـ:
securityContext:
seccompProfile:
type: Localhost
localhostProfile: profiles/copyfail-seccomp.json
انظر examples/kubernetes-seccomp-pod.yaml.
يتضمن هذا المشروع اختبار قابلية الوصول إلى AF_ALG غير استغلالي:
python3 tools/afalg-socket-test.py
يحاول فقط إنشاء وإغلاق مأخذ AF_ALG. لا يقوم بربط عمليات التشفير، أو استدعاء splice، أو لمس binaryات setuid، أو إفساد ذاكرة التخزين المؤقت للصفحات، أو محاولة تصعيد الامتيازات.
النتائج:
BLOCKED تعني أن السياسة منعت AF_ALG لهذه العملية.PERMITTED تعني أن إنشاء مأخذ AF_ALG لا يزال مسموحًا به لهذه العملية.UNSUPPORTED تعني أن AF_ALG غير متوفر في بيئة التشغيل هذه.يحتاج CopyFail Guard إلى تقارير توافق من العالم الحقيقي من مضيفي لينكس، بيئات تشغيل الحاويات، مشغلات CI، وعقد Kubernetes. إذا كان بإمكانك اختباره بأمان، افتح مشكلة تقرير توافق مع إخراج doctor المنزوع المعلومات الحساسة، assess --json، verify، أو اختبار مأخذ AF_ALG.
التقارير المفيدة تساعد في الإجابة عن:
algif_aead مدمجًا ويتطلب التصحيح/إعادة التشغيل فقطانظر دليل التحقق المجتمعي.
copyfail-guard assess تقييم التعرض الآمن، بدون محاولة استغلال
copyfail-guard status فحص مؤشرات تعرض المضيف
copyfail-guard doctor فحص التبعيات وجاهزية وقت التشغيل
copyfail-guard mitigate تعطيل algif_aead بشكل دائم وإلغاء تحميله
copyfail-guard verify التحقق من نشاط تخفيف المضيف
copyfail-guard rollback إزالة تخفيف modprobe الخاص بـ CopyFail Guard
copyfail-guard seccomp-docker [FILE] إنشاء ملف حظر AF_ALG للطوارئ
copyfail-guard seccomp-patch BASE OUT تصحيح ملف seccomp موجود بأمان
copyfail-guard k8s-example طباعة مثال seccomp لـ Kubernetes
يمكن وضع العلامات قبل أو بعد الأمر:
--dry-run عرض التغييرات المخطط لها دون كتابة ملفات أو إلغاء تحميل وحدات
--yes تأكيد غير تفاعلي
--no-logo تعطيل الشعار ASCII
--json إخراج JSON للأوامر المدعومة: assess، doctor
في التكوينات النموذجية، لا يُتوقع أن يؤثر تعطيل algif_aead على:
قد يؤثر على التطبيقات التي تم تكوينها صراحةً لاستخدام محرك AF_ALG أو التطبيقات التي تنشئ مآخذ AF_ALG مباشرة. تحقق أولاً:
sudo lsof | grep AF_ALG || true
ss -xa | grep -i alg || true
algif_aead القابل للتعديل، تعزيز seccomp لأعباء العمل غير الموثوقة، والإلغاء.CopyFail Guard لا:
تخفيف وحدة المضيف يعمل مع algif_aead القابل للتعديل. إذا كان algif_aead مدمجًا في نواتك، لا يمكن لـ modprobe.d و rmmod تعطيله؛ التصحيح/إعادة التشغيل إلزامي ويجب استخدام seccomp لأعباء العمل غير الموثوقة أثناء التصحيح.
Seccomp يحمي فقط أعباء العمل التي تم إطلاقها باستخدام الملف. يجب إعادة تشغيل الحاويات أو البودات الموجودة باستخدام الملف المُعزز.
sudo ./bin/copyfail-guard.sh rollback --yes
الإلغاء يزيل فقط الملف المُدار بواسطة هذه الأداة. لا يعيد تحميل الوحدة. أعد التشغيل أو قم يدويًا بـ modprobe algif_aead فقط إذا كنت تحتاجها صراحةً وقبلت المخاطرة أو صححت النواة.
لا. التصحيح وإعادة التشغيل يظلان الإصلاح النهائي.
لا. المشروع يتجنب عن قصد سلوك الاستغلال. tools/afalg-socket-test.py يتحقق فقط مما إذا كان إنشاء مأخذ AF_ALG قابلاً للوصول.
الدفاع في العمق. الحاويات وأعباء عمل CI هي أماكن شائعة حيث يتم تشغيل كود غير موثوق على نواة مشتركة. يجعل seccomp الخطوة الأولى من هذه الفئة من الهجمات غير قابلة للوصول لذلك العمل.
لأن ملفات وقت التشغيل الافتراضية تحتوي على العديد من قرارات التعزيز. استبدالها بملف طوارئ ضئيل يمكن أن يزيل الحماية عن طريق الخطأ. seccomp-patch يحافظ على خط الأساس الخاص بك ويضيف حظر AF_ALG.
نعم. ابدأ بـ doctor و assess --json، وقم بتدريج التخفيف على عينة لينكس صغيرة، ثم قم بطرح تخفيف المضيف وتغييرات ملف seccomp بشكل منفصل. انظر دليل طرح الأسطول.
crypto: algif_aead - Revert to operating out-of-placeبُني بواسطة Julio César Suástegui Calderón.
هندسة أمن، أنظمة لينكس، وأتمتة دفاعية عملية.
MIT
| عائلة الحكم | ما تعنيه | ما يجب فعله |
|---|
EXPOSED_* | algif_aead / AF_ALG يبدو قابلاً للوصول أو التحميل | قم بالتخفيف الآن، ثم صحّح وأعد التشغيل |
PARTIALLY_MITIGATED_* | يوجد حظر ولكن الوحدة المحملة أو حالة إعادة التشغيل لا تزال مهمة | أعد التشغيل أو قم بالإلغاء بأمان، ثم تحقق |
INTERIM_MITIGATED_* | التخفيف المحلي نشط | احتفظ به، ولكن لا يزال يتعين التصحيح وإعادة التشغيل |
LOW_OBVIOUS_EXPOSURE_* | لم تجد الفحوصات المحلية تعرضًا واضحًا لـ algif_aead | تحقق من حالة تصحيح البائع على أي حال |
| المجال | الأمر | الغرض |
|---|
| تقييم آمن | assess | تقديم حكم تعرض غير استغلالي، الإجراءات التالية، ورمز خروج صديق للأتمتة |
| فحص التبعيات | doctor | فحص الأدوات المطلوبة/الاختيارية وشرح حدود وقت التشغيل |
| فحص المضيف | status | عرض نظام التشغيل/النواة، توفر الوحدة، حالة التحميل، تحذير المدمج، حظر modprobe، ومستهلكي AF_ALG الواضحين |
| تخفيف المضيف | mitigate | كتابة /etc/modprobe.d/99-copyfail-guard.conf ومحاولة إلغاء تحميل algif_aead |
| التحقق | verify | الفشل بوضوح إذا كانت الوحدة محملة، أو مدمجة، أو غير محظورة |
| الإلغاء | rollback | إزالة ملف modprobe المُدار بواسطة CopyFail Guard فقط |
| الحاويات | seccomp-patch | تصحيح ملف seccomp موجود لحظر socket(AF_ALG, ...) مع الحفاظ على استخدام مآخذ الاتصال العادي |
| ملف الطوارئ | seccomp-docker | إنشاء ملف seccomp مستهدف لحظر AF_ALG للاستخدام الطارئ |
| Kubernetes | k8s-example | طباعة مثال لبود مع seccomp محلي |
| الكود | المعنى |
|---|
0 | تعرض منخفض واضح من الفحوصات المحلية |
1 | تخفيف مؤقت نشط، التصحيح/إعادة التشغيل لا يزال مطلوبًا |
10 | مكشوف/التخفيف متاح |
11 | مخفف جزئيًا؛ إعادة التشغيل أو الإلغاء مطلوب |
12 | مسار الوحدة المدمجة؛ التصحيح/إعادة التشغيل مطلوب |
20 | حالة تقييم غير معروفة |