Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
أدوات/GitHubGitHub/insomnisec/detections-cve-2026-31431
إدارة مؤشرات الاختراق (IOC)تصعيد الامتيازاتتحليل الثغرات الأمنيةالاستغلالالتحقيق الجنائي الرقمياستخبارات التهديداتكشف التسللالتعلم والتعليمالاستجابة للحوادث

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
GitHubinsomnisec/detections-cve-2026-31431

Detections-CVE-2026-31431

قواعد الكشف، توقيعات YARA، قواعد auditd/Wazuh، وقوالب أحداث MISP لثغرة CVE-2026-31431 في نواة لينكس (Copy Fail) لتصعيد الامتيازات محليًا. تتضمن مؤشرات الاختراق (IoCs)، خطوات التخفيف، وتحليل الاستغلال.

عرض المستودع
25منذ 3 أشهرلم تتم المراجعة بعد

الانتقال إلى: https://github.com/insomnisec/public_cve_detections

لإدارة أفضل على المدى الطويل لمنشورات الكشف

سيتم إزالة هذا المستودع في يونيو 2026

يرجى استخدام المستودع الآخر مستقبلاً

CVE-2026-31431 "Copy Fail" — حزمة الكشف والاستجابة

تاريخ النشر: 2026-04-30
CVSSv3: 7.8 (عالي)
النوع: تصعيد الامتيازات المحلي (LPE)
النظام الفرعي: نواة Linux algif_aead / authencesn قالب تشفيري
المتأثر: أنوية Linux 4.14 – 6.18.21 (جميع التوزيعات تقريباً منذ 2017)
المراجع:

  • تحليل Xint/Theori
  • إثبات المفهوم الرسمي
  • إفصاح oss-security
  • copy.fail

جدول المحتويات

  1. ملخص الثغرة
  2. كيف يعمل الاستغلال
  3. حدود الكشف
  4. التخفيف الفوري
  5. قاعدة YARA
  6. قواعد Auditd
  7. قواعد Wazuh
  8. قالب أحداث MISP
  9. التصحيح والمعالجة
  10. مرجع مؤشرات الاختراق الرئيسية

ملخص الثغرة

CVE-2026-31431 هو خلل منطقي أُدخل في النواة 4.14 (2017) عند التقاء ثلاثة تغييرات مستقلة:

  1. قالب authencesn (أُضيف عام 2011 لدعم ESN في IPsec) يكتب 4 بايتات من بيانات مؤقتة خارج حدود مخزن الإخراج.
  2. اكتسب AF_ALG دعم AEAD في عام 2015، مما سمح لمساحة المستخدم بإرسال البيانات عبر splice() من ملفات محفوظة في ذاكرة الصفحات.
  3. في عام 2017، تم تحسين algif_aead.c للعمل في المكان نفسه (req->src == req->dst)، مما يضع صفحات حية من ذاكرة الصفحات في قائمة تشتت قابلة للكتابة.

النتيجة: يمكن لمستخدم غير مميز كتابة 4 بايتات يتحكم بها المهاجم بالضبط في نسخة ذاكرة الصفحات في النواة لأي ملف قابل للقراءة — بما في ذلك ثنائيات setuid و/etc/passwd — دون لمس الملف الموجود على القرص. إثبات المفهوم العملي هو سكربت Python بحجم 732 بايت. لا توجد حالة سباق. لا توجد إزاحات خاصة بالتوزيعات. موثوق عبر Ubuntu وRHEL وAmazon Linux وSUSE.


كيف يعمل الاستغلال```

Attacker opens AF_ALG socket (family 38, type 5) └─ Binds to "authencesn(hmac(sha256),cbc(aes))" └─ Sets SOL_ALG (279) options including key and authsize └─ Accepts a connection socket

Attacker opens target file (e.g., /etc/passwd) read-only └─ Uses splice() to feed page-cache pages into the AEAD socket's RX buffer └─ Sends crafted AAD via sendmsg() — bytes 4–7 of AAD = attacker-controlled write value

authencesn performs in-place decryption: └─ scatterwalk_map_and_copy writes seqno_lo into the chained page-cache page └─ recvmsg() returns an error (HMAC fails — expected), but the write already happened

Page-cache now contains attacker-modified copy of the file └─ Kernel executes from page-cache, not disk └─ On-disk file is UNCHANGED — file integrity tools see nothing

root@kitploit:~
يستهدف إثبات المفهوم `/etc/passwd`: حيث يحدد موقع حقل UID للمستخدم الحالي ويستبدله بـ `0000`، ثم يستدعي `su` للحصول على قشرة جذر (root).

---

## قيود الاكتشاف

> **اقرأ هذا القسم قبل نشر أي قواعد أدناه.**

هذا الاستغلال له خاصيتان تحدّان من تغطية الكشف بشكل كبير:

**1. تتم عملية الكتابة في ذاكرة التخزين المؤقت للصفحات (page cache)، وليس في نظام الملفات.**
أي أداة كشف تراقب أحداث نظام الملفات — `inotify`، `fanotify`، AIDE، Tripwire، مراقبة المسارات في auditd — لن **تلاحظ** التعديل. لا تتم كتابة الملف على القرص مطلقًا. هذا يعني أن علامات `-p w` (الكتابة) في مراقبة مسارات auditd لكل من `/usr/bin/su` أو `/etc/passwd` لن تلتقط الكتابة الفعلية للاستغلال.

**2. تستخدم الآلية واجهات نواة مشروعة.**
سوكيتات `AF_ALG` و`splice()` و`authencesn` جميعها لها استخدامات مشروعة (IPsec، اختبارات ذاتية للنواة، إدخال/إخراج بنمط sendfile). يجب أن يركز الكشف على *التركيب* بين هذه البدائيات بدلاً من أي منها بمعزل عن الآخرين، وينبغي توقع نتائج إيجابية كاذبة على الأنظمة التي تشغّل IPsec أو تجري اختبارات تشفير للنواة.

**ما يمكن أن يلتقطه الكشف:**
- استدعاء النظام `socket(AF_ALG, SOCK_SEQPACKET, 0)`
- استدعاء النظام `splice()` المرتبط بما سبق، خاصةً قرب الوصول إلى ثنائيات setuid
- سكربت إثبات المفهوم نفسه (عبر YARA)
- سلسلة الخوارزمية المحددة `authencesn(hmac(sha256),cbc(aes))` في ذاكرة العملية أو ملفات السكربت

**ما لا يمكن أن يلتقطه الكشف:**
- الكتابة الفعلية في ذاكرة التخزين المؤقت للصفحات (في الذاكرة، بلا حدث على نظام الملفات)
- الاستخدام بعد الاستغلال لمدخل ذاكرة التخزين المؤقت للصفحات المعدَّل (يبدو كاستدعاء عادي لـ `su` أو `passwd`)
- الاختلافات التي تتجنب Python أو سلسلة الخوارزمية المحددة

---

## التخفيف الفوري

قبل نشر قواعد الكشف، طبّق هذا التخفيف على أي مضيف غير مُصَحَّح:```bash
# Disable algif_aead kernel module — blocks the exploit primitive entirely
echo "install algif_aead /bin/false" | sudo tee /etc/modprobe.d/disable-algif-aead.conf
sudo rmmod algif_aead 2>/dev/null || true

تحقق من أن الإجراء الوقائي نشط باستخدام الكاشف الرسمي:```bash

Exit 0 = not vulnerable / mitigated

Exit 2 = VULNERABLE

python3 test_cve_2026_31431.py

root@kitploit:~
> **ملاحظة:** سيفشل الأمر `rmmod` إذا لم تكن الوحدة النمطية محمّلة حاليًا؛ وهذا أمر مقبول. يمنع إعداد `modprobe.d` تحميلها في المستقبل. لا تأثير لهذا الإجراء التخفيفي على أحمال العمل القياسية لـ TLS أو SSH أو تشفير نظام الملفات — بل يؤثر فقط على IPsec مع أرقام التسلسل الموسعة باستخدام قالب `authencesn`، وهو أمر غير شائع خارج بوابات VPN المخصصة.

---

## قاعدة YARA

احفظ باسم `cve_2026_31431.yar`

> **نطاق الفحص:** صُممت هذه القاعدة لفحص ملفات نصوص بايثون على القرص أو الملتقطة من تفريغات الذاكرة. ستطابق الـ PoC المعروف والمتغيرات القريبة منه. لن تكتشف نشاط الاستغلال على مستوى استدعاءات النظام — استخدم قواعد auditd/Wazuh لذلك.```yara
rule CVE_2026_31431_CopyFail_PoC_HighConfidence {
    meta:
        description     = "High-confidence match: CVE-2026-31431 Copy Fail PoC or close variant"
        author          = "Detection Engineering"
        reference       = "https://xint.io/blog/copy-fail-linux-distributions"
        cve             = "CVE-2026-31431"
        date            = "2026-04-30"
        severity        = "High"
        cvss            = "7.8"

    strings:
        // Algorithm string unique to this exploit path — very high fidelity
        $alg_full      = "authencesn(hmac(sha256),cbc(aes))" ascii

        // Specific socket call signature from PoC: AF_ALG=38, SOCK_SEQPACKET=5
        $socket_call   = "socket(38,5,0)" ascii

        // SOL_ALG socket option (decimal 279)
        $solalg        = "setsockopt(279" ascii

        // Hex key/iv payload written via setsockopt in PoC
        $key_payload   = "0800010000000010" ascii

        // splice() usage in context of AEAD operations
        $splice        = "splice(" ascii

        // Target indicators from PoC (page-cache corruption targets)
        $target_passwd = "/etc/passwd" ascii
        $target_su     = "/usr/bin/su" ascii

        // AF_ALG aead bind strings
        $aead_bind     = "\"aead\"" ascii

    condition:
        // High-confidence: unique algorithm string alone is sufficient
        $alg_full
        or
        // Medium-confidence: socket primitive + option number
        ($socket_call and $solalg)
        or
        // Medium-confidence: splice into AEAD socket targeting a setuid path
        ($aead_bind and $splice and ($target_passwd or $target_su))
        or
        // PoC hex payload present alongside splice
        ($key_payload and $splice)
}

rule CVE_2026_31431_CopyFail_Mechanism {
    meta:
        description     = "Behavioral: AF_ALG AEAD + splice combination suggestive of CVE-2026-31431 technique"
        author          = "Detection Engineering"
        reference       = "https://xint.io/blog/copy-fail-linux-distributions"
        cve             = "CVE-2026-31431"
        date            = "2026-04-30"
        severity        = "Medium"
        note            = "Higher false positive rate than HighConfidence rule — review matches in context"

    strings:
        $authencesn    = "authencesn" ascii nocase
        $af_alg_num    = "socket(38" ascii
        $sol_alg_num   = "279" ascii
        $splice        = "splice(" ascii

    condition:
        ($authencesn and $splice)
        or
        ($af_alg_num and $sol_alg_num and $splice)
}

قواعد Auditd

احفظ كـ /etc/audit/rules.d/cve-2026-31431.rules

أعد التحميل باستخدام:```bash sudo augenrules --load

or on older systems:

sudo auditctl -R /etc/audit/rules.d/cve-2026-31431.rules

root@kitploit:~
يبدو أن حقل INPUT فارغ — لم يتم توفير أي محتوى لترجمته في هذه القطعة. يرجى إرسال نص القطعة 11/21 باللغة الإنجليزية لأقوم بترجمتها إلى العربية.```bash
## ============================================================
## CVE-2026-31431 "Copy Fail" — Auditd Detection Rules
## ============================================================
## These rules capture the MECHANISM of the exploit (socket +
## splice syscalls) and correlated /etc/passwd access patterns.
##
## IMPORTANT: These rules will NOT detect the page-cache write
## itself — it is an in-memory operation with no filesystem
## event. File path watches (-w) on setuid binaries or
## /etc/passwd will not fire on the exploit write.
##
## Correlate rule hits across audit.key values to build signal:
## A hit on afalg_socket followed closely by a hit on
## splice_syscall from the same process is a strong indicator.
## ============================================================

## --- Core exploit primitive: AF_ALG socket creation ---
## Monitors socket(2) syscall where a0 = 0x26 (38 decimal = AF_ALG)
## This is the first step of the exploit chain.
-a always,exit -F arch=b64 -S socket -F a0=0x26 -k cve_2026_31431_afalg_socket
-a always,exit -F arch=b32 -S socket -F a0=0x26 -k cve_2026_31431_afalg_socket

## --- splice() syscall monitoring ---
## splice() is used to feed page-cache pages into the AEAD socket.
## NOTE: splice() is commonly used for sendfile-like operations.
## Correlate with cve_2026_31431_afalg_socket hits from the same PID.
-a always,exit -F arch=b64 -S splice -k cve_2026_31431_splice
-a always,exit -F arch=b32 -S splice -k cve_2026_31431_splice

## --- /etc/passwd access monitoring ---
## The PoC reads /etc/passwd to locate the UID field offset.
## Read access (-p r) is retained here because the intent is
## to correlate this read with the AF_ALG socket key above,
## not to use the watch as a standalone alert.
-w /etc/passwd -p rwa -k cve_2026_31431_passwd_access

## --- setuid binary execution monitoring ---
## Detects execution of su after page-cache modification.
## The page-cache write makes su execute as root; this catches
## the exploitation outcome, not the write itself.
-w /usr/bin/su   -p xa -k cve_2026_31431_su_exec
-w /usr/bin/sudo -p xa -k cve_2026_31431_sudo_exec

## --- algif_aead module state monitoring ---
## The exploit requires algif_aead to be loaded.
## Monitoring modprobe helps detect attempts to load the module
## on systems where it was previously disabled as a mitigation,
## and confirms whether the mitigation is being bypassed.
-a always,exit -F arch=b64 -S finit_module -S init_module -k cve_2026_31431_module_load
-w /etc/modprobe.d -p wa -k cve_2026_31431_modprobe_conf

الاستعلام عن الارتباطات

بعد نشر القواعد، استخدم ausearch لربط النتائج عبر المفاتيح ضمن نافذة زمنية:```bash

Find all CVE-2026-31431 related events in the last hour

sudo ausearch -k cve_2026_31431_afalg_socket -k cve_2026_31431_splice
--start recent -i | aureport --interpret

Check if a specific PID hit both AF_ALG and splice

sudo ausearch -k cve_2026_31431_afalg_socket --start today -i
| grep 'pid=' | awk -F'pid=' '{print $2}' | awk '{print $1}' | sort -u
| while read pid; do sudo ausearch -k cve_2026_31431_splice --start today -i | grep "pid=$pid"
&& echo "[!] PID $pid hit both AF_ALG and splice — investigate" done

root@kitploit:~
---

## قواعد Wazuh

احفظها كملف قواعد محلي (عادةً `/var/ossec/etc/rules/local_rules.xml`).

> **المتطلبات الأساسية:** تعتمد هذه القواعد على ضبط auditd بالقواعد أعلاه وعلى تفعيل مفكك ترميز Wazuh الخاص بـ auditd. وهي تطابق حقل `audit.key` الذي يملؤه auditd، وهي الطريقة الصحيحة والموثوقة للربط بين النظامين. تستخدم القواعد `<if_group>auditd</if_group>` بدلاً من `<if_sid>` محدد للبقاء متوافقة مع إصدارات Wazuh المختلفة.```xml
<!-- ============================================================
     CVE-2026-31431 "Copy Fail" — Wazuh Correlation Rules
     Requires: auditd rules from cve-2026-31431.rules deployed
     ============================================================ -->

<!-- Level 10: AF_ALG socket creation detected -->
<rule id="112001" level="10">
    <if_group>auditd</if_group>
    <field name="audit.key">cve_2026_31431_afalg_socket</field>
    <description>CVE-2026-31431 Copy Fail: AF_ALG socket (family 38) created by unprivileged process</description>
    <group>cve,privilege_escalation,linux,kernel,crypto,</group>
</rule>

<!-- Level 10: splice() syscall detected -->
<rule id="112002" level="10">
    <if_group>auditd</if_group>
    <field name="audit.key">cve_2026_31431_splice</field>
    <description>CVE-2026-31431 Copy Fail: splice() syscall detected — monitor for correlation with AF_ALG socket rule</description>
    <group>cve,privilege_escalation,linux,kernel,</group>
</rule>

<!-- Level 14 CRITICAL: AF_ALG socket followed by splice() from the same source -->
<!-- This chaining is the core exploit mechanism                                 -->
<rule id="112003" level="14">
    <if_matched_sid>112001</if_matched_sid>
    <if_group>auditd</if_group>
    <field name="audit.key">cve_2026_31431_splice</field>
    <same_field>audit.pid</same_field>
    <description>CVE-2026-31431 Copy Fail CRITICAL: AF_ALG socket creation followed by splice() from same process — active exploitation likely</description>
    <group>cve,privilege_escalation,linux,kernel,crypto,high_confidence,</group>
</rule>

<!-- Level 12: /etc/passwd access correlated with AF_ALG activity -->
<rule id="112004" level="12">
    <if_matched_sid>112001</if_matched_sid>
    <if_group>auditd</if_group>
    <field name="audit.key">cve_2026_31431_passwd_access</field>
    <description>CVE-2026-31431 Copy Fail: /etc/passwd access following AF_ALG socket creation — consistent with PoC target selection</description>
    <group>cve,privilege_escalation,linux,kernel,</group>
</rule>

<!-- Level 13: su or sudo executed after AF_ALG socket was created -->
<!-- This may represent execution of the modified page-cache entry  -->
<rule id="112005" level="13">
    <if_matched_sid>112001</if_matched_sid>
    <if_group>auditd</if_group>
    <field name="audit.key">cve_2026_31431_su_exec|cve_2026_31431_sudo_exec</field>
    <description>CVE-2026-31431 Copy Fail: su/sudo execution following AF_ALG socket creation — possible post-exploitation</description>
    <group>cve,privilege_escalation,linux,kernel,</group>
</rule>

<!-- Level 12: Attempt to load algif_aead after it was disabled as a mitigation -->
<rule id="112006" level="12">
    <if_group>auditd</if_group>
    <field name="audit.key">cve_2026_31431_module_load</field>
    <field name="audit.exe" type="pcre2">^.*(python|python3|insmod|modprobe).*$</field>
    <description>CVE-2026-31431 Copy Fail: Kernel module load attempt — verify algif_aead mitigation has not been bypassed</description>
    <group>cve,privilege_escalation,linux,kernel,</group>
</rule>

<!-- Level 13: modprobe.d config modified — possible mitigation removal -->
<rule id="112007" level="13">
    <if_group>auditd</if_group>
    <field name="audit.key">cve_2026_31431_modprobe_conf</field>
    <description>CVE-2026-31431 Copy Fail: /etc/modprobe.d modified — verify algif_aead disable config has not been removed</description>
    <group>cve,privilege_escalation,linux,kernel,</group>
</rule>

قالب حدث MISP

احفظه باسم misp_cve_2026_31431.json واستورده عبر MISP → Events → Import.

ملاحظة: استبدل معرّفات UUID النائبة أدناه بمعرّفات UUID4 مولّدة حديثًا لبيئتك قبل الاستيراد. تظهر القيم النائبة بتنسيق موحّد لسهولة القراءة.```json { "Event": { "uuid": "7f3a2d1e-8b4c-4f9a-a3e2-6d5c1b8e9f0a", "info": "CVE-2026-31431 Copy Fail — Linux LPE via authencesn page-cache write", "threat_level_id": "2", "analysis": "2", "date": "2026-04-30", "Attribute": [ { "type": "vulnerability", "category": "External analysis", "to_ids": false, "uuid": "1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d", "comment": "CVE identifier", "value": "CVE-2026-31431" }, { "type": "text", "category": "Other", "to_ids": false, "uuid": "2b3c4d5e-6f7a-8b9c-0d1e-2f3a4b5c6d7e", "comment": "Vulnerability description", "value": "Logic flaw in Linux kernel authencesn cryptographic template. An unprivileged local user can write 4 attacker-controlled bytes into the page cache of any readable file via AF_ALG + splice(), enabling local privilege escalation. No race condition required. Affects kernels 4.14 through 6.18.21." }, { "type": "text", "category": "Other", "to_ids": false, "uuid": "3c4d5e6f-7a8b-9c0d-1e2f-3a4b5c6d7e8f", "comment": "Attack vector summary", "value": "socket(38, 5, 0) [AF_ALG/SOCK_SEQPACKET] → bind authencesn(hmac(sha256),cbc(aes)) → setsockopt(SOL_ALG/279) → splice() page-cache pages into AEAD socket → 4-byte controlled write into page cache of target file" }, { "type": "text", "category": "Other", "to_ids": false, "uuid": "4d5e6f7a-8b9c-0d1e-2f3a-4b5c6d7e8f9a", "comment": "Affected kernel range", "value": "Linux kernel 4.14 (commit 72548b093ee3) through 6.18.21" }, { "type": "text", "category": "Other", "to_ids": false, "uuid": "5e6f7a8b-9c0d-1e2f-3a4b-5c6d7e8f9a0b", "comment": "Introducing commit (root cause)", "value": "72548b093ee38a6d4f2a19e6ef1948ae05c181f7 — algif_aead in-place AEAD optimization (2017)" }, { "type": "text", "category": "Other", "to_ids": false, "uuid": "6f7a8b9c-0d1e-2f3a-4b5c-6d7e8f9a0b1c", "comment": "Fix commit — kernel 6.18.22 stable", "value": "fafe0fa2995a0f7073c1c358d7d3145bcc9aedd8" }, { "type": "text", "category": "Other", "to_ids": false, "uuid": "7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d", "comment": "Fix commit — kernel 6.19.12 stable", "value": "ce42ee423e58dffa5ec03524054c9d8bfd4f6237" }, { "type": "text", "category": "Other", "to_ids": false, "uuid": "8b9c0d1e-2f3a-4b5c-6d7e-8f9a0b1c2d3e", "comment": "Fix commit — kernel 7.0 mainline", "value": "a664bf3d603dc3bdcf9ae47cc21e0daec706d7a5" }, { "type": "text", "category": "Other", "to_ids": true, "uuid": "9c0d1e2f-3a4b-5c6d-7e8f-9a0b1c2d3e4f", "comment": "IoC: Socket family (AF_ALG)", "value": "socket family 38 (AF_ALG)" }, { "type": "text", "category": "Other", "to_ids": true, "uuid": "0d1e2f3a-4b5c-6d7e-8f9a-0b1c2d3e4f5a", "comment": "IoC: Socket type (SOCK_SEQPACKET)", "value": "socket type 5 (SOCK_SEQPACKET)" }, { "type": "text", "category": "Other", "to_ids": true, "uuid": "1e2f3a4b-5c6d-7e8f-9a0b-1c2d3e4f5a6b", "comment": "IoC: Socket option (SOL_ALG = 279)", "value": "setsockopt level 279 (SOL_ALG)" }, { "type": "text", "category": "Other", "to_ids": true, "uuid": "2f3a4b5c-6d7e-8f9a-0b1c-2d3e4f5a6b7c", "comment": "IoC: Algorithm string (highest fidelity)", "value": "authencesn(hmac(sha256),cbc(aes))" }, { "type": "text", "category": "Other", "to_ids": true, "uuid": "3a4b5c6d-7e8f-9a0b-1c2d-3e4f5a6b7c8d", "comment": "IoC: Primary PoC target file", "value": "/etc/passwd (UID field offset targeted by PoC)" }, { "type": "text", "category": "Other", "to_ids": true, "uuid": "4b5c6d7e-8f9a-0b1c-2d3e-4f5a6b7c8d9e", "comment": "IoC: Secondary targets (setuid binaries)", "value": "/usr/bin/su, /usr/bin/sudo" }, { "type": "text", "category": "Other", "to_ids": false, "uuid": "5c6d7e8f-9a0b-1c2d-3e4f-5a6b7c8d9e0f", "comment": "Immediate mitigation", "value": "echo 'install algif_aead /bin/false' > /etc/modprobe.d/disable-algif-aead.conf && rmmod algif_aead" }, { "type": "url", "category": "External analysis", "to_ids": false, "uuid": "6d7e8f9a-0b1c-2d3e-4f5a-6b7c8d9e0f1a", "comment": "Official write-up", "value": "" }, { "type": "url", "category": "External analysis", "to_ids": false, "uuid": "7e8f9a0b-1c2d-3e4f-5a6b-7c8d9e0f1a2b", "comment": "Official PoC repository", "value": "" } ], "Object": [ { "name": "vulnerability", "meta-category": "vulnerability", "Attribute": [ { "type": "vulnerability", "object_relation": "id", "value": "CVE-2026-31431" }, { "type": "cvss-score", "object_relation": "cvss-score", "value": "7.8" }, { "type": "text", "object_relation": "summary", "value": "Linux kernel authencesn LPE via AF_ALG + splice() page-cache write" } ] } ] } }

root@kitploit:~
---

## التصحيح والمعالجة

### تصحيح النواة

| الفرع | الإصدار المُصلَح | التزام الإصلاح |
|--------|--------------|------------|
| مستقر 6.18.x | 6.18.22 | `fafe0fa2995a0f7073c1c358d7d3145bcc9aedd8` |
| مستقر 6.19.x | 6.19.12 | `ce42ee423e58dffa5ec03524054c9d8bfd4f6237` |
| الخط الرئيسي | 7.0 | `a664bf3d603dc3bdcf9ae47cc21e0daec706d7a5` |

يُعيد هذا الإصلاح تحسين AEAD الموضعي الذي أُدخل في عام 2017 في `algif_aead.c` إلى الوضع غير الموضعي، مما يضمن عدم وضع صفحات ذاكرة التخزين المؤقت للصفحات أبدًا في قائمة نثر قابلة للكتابة.

### إرشادات خاصة بالتوزيعات

| التوزيعة | الإجراء |
|---|---|
| Ubuntu | `apt-get update && apt-get upgrade linux-image-generic`؛ تحقق من نشرة USN |
| RHEL / Rocky / Alma | `dnf update kernel`؛ تحقق من نشرة RHSB |
| Amazon Linux 2023 | `dnf update kernel`؛ تحقق من نشرة ALAS |
| SUSE / openSUSE | `zypper update kernel-default`؛ تحقق من نشرة SUSE SA |
| Debian | تحقق من متتبع الأمان؛ قد يصل التصحيح المُنقَل (backport) قبل تحديث النواة |
| Arch | `pacman -Syu` (توزيعة متداولة؛ استلم الإصلاح من المنبع فور وصوله) |

### التحقق من التكامل بعد التعرض

إذا كنت تشتبه في حدوث استغلال على مضيف قبل التصحيح:```bash
# 1. Check if /etc/passwd UID fields have been tampered
# (compare against a known-good backup or secondary host)
awk -F: '$3 ~ /^0+$/ && $1 != "root" {print "SUSPICIOUS UID 0 ENTRY:", $0}' /etc/passwd

# 2. Drop the page cache to flush any in-memory modifications
# WARNING: This impacts performance temporarily
sync && echo 3 | sudo tee /proc/sys/vm/drop_caches

# 3. Verify setuid binaries against package manager
rpm -Va --nomtime 2>/dev/null | grep -E '^.{0,8}5.*su$|^.{0,8}5.*sudo$'   # RHEL/rpm
debsums -s 2>/dev/null | grep -E 'su|sudo'                                  # Debian/Ubuntu

# 4. Re-examine recently logged su/sudo invocations for unexpected UID transitions
journalctl -u sudo --since "48 hours ago" | grep "session opened for user root"

مهم: تتحقق أدوات التحقق من سلامة الملفات القياسية (AIDE وTripwire وdebsums وrpm -Va) من تجزئات القرص وستُظهر الملف الثنائي كما هو دون تعديل حتى بعد استغلال ذاكرة التخزين المؤقت للصفحات (page cache). تُمسح ذاكرة التخزين المؤقت للصفحات طبيعيًا بإعادة تشغيل النظام أو عبر drop_caches. وعلى النظام المعاد تشغيله، يختفي تلف ذاكرة التخزين المؤقت، لكن قد يكون المهاجم قد أنشأ آلية استمرار (persistence) عبر وسائل أخرى.


مرجع مؤشرات الاختراق الرئيسية


حزمة الكشف مُصانة وفق الإثبات الرسمي في theori-io/copy-fail-CVE-2026-31431. إذا لاحظت أشكال استغلال غير مشمولة بهذه القواعد، فيرجى فتح مشكلة (issue) في مستودع الإثبات الرئيسي.

تنزيل الأداة
https://xint.io/blog/copy-fail-linux-distributions
https://github.com/theori-io/copy-fail-CVE-2026-31431
المؤشرالقيمةدرجة الثقة
عائلة مقابس AF_ALG38 (الوسيط الأول لدالة socket())متوسطة — توجد استخدامات مشروعة
نوع المقبس5 (SOCK_SEQPACKET)متوسطة
مستوى خيار SOL_ALG279 (الوسيط الأول لدالة setsockopt())متوسطة
سلسلة الخوارزميةauthencesn(hmac(sha256),cbc(aes))عالية — غير معتادة خارج IPsec ESN
سلسلة استدعاءات النظامsocket(38) → setsockopt(279) → splice()عالية
حمولة مفتاح الإثبات (PoC)0800010000000010 (hex، في setsockopt)عالية للإثبات المعروف
الهدف الأساسي للإثباتحقل UID في /etc/passwdمتوسطة
الأهداف الثانوية/usr/bin/su, /usr/bin/sudoمتوسطة
وحدة النواةalgif_aeadيعتمد على السياق