خانه » CVE-2026-31431

CVE-2026-31431

Copy Fail: Linux Kernel Local Privilege Escalation Vulnerability crypto: algif_aead - Revert to operating out-of-place

توسط Vulnerbyte Alerts
10 بازدید

چکیده

آسیب‌پذیری Copy Fail در کرنل لینوکس یک ضعف منطقی در پیاده‌سازی رابط رمزنگاری Crypto API و به‌خصوص در کامپوننت algif_aead است. این ضعف ناشی از مدیریت نادرست عملیات رمزنگاری AEAD در حالت in‑place بوده که منجر به نوشتن کنترل‌شده در صفحات کش فایل (Page Cache) می‌شود. در نتیجه این ضعف امنیتی یک کاربر لوکال با دسترسی محدود می‌تواند مقادیر مشخصی از فایل‌های قابل‌خواندن را در حافظه تغییر دهد و در شرایط خاص، با دستکاری فایل‌های اجرایی دارای مجوز ویژه، سطح دسترسی خود را تا root افزایش دهد.

توضیحات

آسیب‌پذیری CVE-2026-31431 که با نام Copy Fail نیز شناخته می‌شود، یک ضعف منطقی (Logic Flaw) در کرنل لینوکس است که در کامپوننت algif_aead از زیرسیستم Crypto API رخ می‌دهد. ماهیت اصلی این آسیب‌پذیری، انتقال نادرست منابع بین حوزه‌ها بوده که مطابق با طبقه‌بندی CWE-669 ارزیابی شده است. به این معنا که داده‌ها یا منابع سیستمی به طور نادرست بین دو دامنه یا سطح دسترسی مجزا منتقل شده و همین امر می‌تواند منجر به دسترسی غیرمجاز یا دستکاری ناخواسته داده‌ها شود.

ریشه این ضعف به تغییراتی برمی‌گردد که در سال 2017 در فایل algif_aead.c اعمال شد. تغییر اعمال شده تلاش می‌کرد عملیات رمزنگاری AEAD را به صورت in-place انجام دهد، به این معنا که داده‌های ورودی و خروجی در یک بافر مشترک پردازش شوند. AEAD یک روش رمزنگاری است که علاوه بر رمزنگاری داده‌ها، صحت و یکپارچگی آن‌ها را با استفاده از تگ احراز هویت (Authentication Tag) بررسی می‌کند.

در فرآیند رمزگشایی AEAD، تابع _ aead_recmsg()داده‌های تگ احراز هویت را از لیست scatter-gather ورودی (TX SGL) به لیست مقصد (RX SGL) منتقل می‌کند و سپس درخواست رمزنگاری را با تنظیم همان بافر RX به عنوان منبع و مقصد ارسال می‌کند. اگر این داده‌ها از مسیر splice() آمده باشند، صفحات کش فایل (Page Cache) مستقیماً به عنوان بخشی از مقصد قابل نوشتن در نظر گرفته می‌شوند.

splice () در لینوکس مکانیزمی است که داده را بین توصیف‌گرهای فایل (File Descriptors) بدون کپی در فضای کاربر منتقل کرده و مستقیماً از صفحات کش فایل استفاده می‌کند. در این شرایط، پیاده‌سازی خاص authencesn هنگام رمزگشایی فرض می‌کند که منبع و مقصد یکسان هستند و 4 بایت داده را در ناحیه تگ می‌نویسد. این موضوع قبل از بررسی صحت تگ احراز هویت رخ می‌دهد؛ بنابراین حتی اگر رمزگشایی با خطای EBADMSG شکست بخورد، داده‌ها در صفحات کش فایل باقی می‌مانند. این عملکرد، یک قابلیت (primitive) نوشتن کنترل‌شده در حافظه صفحات کش فایل ایجاد می‌کند که مهاجم می‌تواند از آن برای اصلاح یا دستکاری محتوای فایل‌های قابل‌خواندن بهره‌برداری کند.

بهره‌برداری از این ضعف نسبتاً ساده و قابل خودکارسازی است و نیاز به دسترسی لوکال دارد. در این حمله، ابتدا مهاجم یک سوکت AF_ALG در لینوکس باز می‌کند تا به الگوریتم رمزنگاری authencesn(hmac(sha256),cbc(aes)) دسترسی یابد. سپس با ترکیبی از فراخوانی‌های سیستمی sendmsg()، splice() و recv() داده‌های کنترل‌شده خود را به حافظه صفحات کش فایل هدف وارد می‌کند. هر درخواست قادر است چهار بایت دلخواه مهاجم را در یک offset مشخص از فایل تغییر دهد و با تکرار این فرآیند، چندین بخش از فایل قابل اصلاح خواهد بود.

در نمونه کد اثبات مفهومی (PoC)، مهاجم فایل اجرایی /usr/bin/su را هدف قرار می‌دهد. ابتدا آدرس Entry Point فایل ELF استخراج کرده و به offset متناظر در فایل تبدیل می‌شود. سپس با نوشتن چندین بخش چهار بایتی، یک shellcode کوچک در صفحات کش جایگذاری می‌شود. هنگام اجرای برنامه su، نسخه دستکاری‌شده موجود در صفحات کش بارگذاری و اجرا شده و یک Shell با دسترسی root ایجاد می‌شود. Shellcode نمونه شامل فراخوانی‌های setuid(0) و execve(“/bin/sh”) است که دسترسی کامل root را برای مهاجم فراهم می‌کند.

این آسیب‌پذیری بدون نیاز به تعامل کاربر و تنها با دسترسی اولیه لوکال قابل بهره‌برداری است و تأثیر قابل توجهی بر سه اصل اساسی امنیت سایبری دارد؛ از نظر محرمانگی (Confidentiality)، مهاجم می‌تواند به داده‌های حساس دسترسی یابد، از دید یکپارچگی (Integrity)، امکان تغییر یا دستکاری فایل‌های سیستمی و اجرایی وجود دارد و از نظر در دسترس‌پذیری (Availability)، کنترل کامل سیستم می‌تواند منجر به اختلال یا توقف سرویس‌ها شود. این آسیب‌پذیری با اعمال پچ‌های امنیتی در نسخه‌های جدیدتر کرنل لینوکس برطرف شده است.

CVSS

Score Severity Version Vector String
7.8 HIGH 3.1 CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CVE-2026-31431

شکل 1: تفسیر جدول CVSS

لیست محصولات آسیب پذیر

Versions Product
affected at 4.14 Linux
affected from 72548b093ee38a6d4f2a19e6ef1948ae05c181f7 before 893d22e0135fa394db81df88697fba6032747667

affected from 72548b093ee38a6d4f2a19e6ef1948ae05c181f7 before 19d43105a97be0810edbda875f2cd03f30dc130c

affected from 72548b093ee38a6d4f2a19e6ef1948ae05c181f7 before 961cfa271a918ad4ae452420e7c303149002875b

affected from 72548b093ee38a6d4f2a19e6ef1948ae05c181f7 before 3115af9644c342b356f3f07a4dd1c8905cd9a6fc

affected from 72548b093ee38a6d4f2a19e6ef1948ae05c181f7 before 8b88d99341f139e23bdeb1027a2a3ae10d341d82

affected from 72548b093ee38a6d4f2a19e6ef1948ae05c181f7 before fafe0fa2995a0f7073c1c358d7d3145bcc9aedd8

affected from 72548b093ee38a6d4f2a19e6ef1948ae05c181f7 before ce42ee423e58dffa5ec03524054c9d8bfd4f6237

affected from 72548b093ee38a6d4f2a19e6ef1948ae05c181f7 before a664bf3d603dc3bdcf9ae47cc21e0daec706d7a5

Linux

لیست محصولات بروز شده

Versions Product
unaffected from 0 before 4.14

unaffected from 5.10.254 through 5.10

unaffected from 5.15.204 through 5.15

unaffected from 6.1.170 through 6.1

unaffected from 6.6.137 through 6.6

unaffected from 6.12.85 through 6.12

unaffected from 6.18.22 through 6.18

unaffected from 6.19.12 through 6.19

unaffected from 7.0

Linux
893d22e0135fa394db81df88697fba6032747667

19d43105a97be0810edbda875f2cd03f30dc130c

961cfa271a918ad4ae452420e7c303149002875b

3115af9644c342b356f3f07a4dd1c8905cd9a6fc

8b88d99341f139e23bdeb1027a2a3ae10d341d82

fafe0fa2995a0f7073c1c358d7d3145bcc9aedd8

ce42ee423e58dffa5ec03524054c9d8bfd4f6237

a664bf3d603dc3bdcf9ae47cc21e0daec706d7a5

Linux

استفاده محصول در ایران

در این جدول، تعداد صفحات ایندکس‌شده در گوگل با دامنه .ir که Linux kernel را ذکر کرده اند، ثبت شده است. این داده صرفاً برای برآورد تقریبی حضور محصولات در وب ایران استفاده شده و نمایانگر میزان نصب دقیق و استفاده واقعی نیست.

Approx. Usage in .ir Domain via Google (Total Pages) Search Query (Dork) Product
740,000 site:.ir “linux” Linux
24,700 site:.ir “Linux kernel” Linux kernel

نتیجه گیری

این آسیب‌پذیری با شدت بالا به یک کاربر لوکال با دسترسی محدود اجازه می‌دهد فایل‌های اجرایی حساس را دستکاری کرده و در نهایت دسترسی root را به‌دست آورد. وجود PoC عمومی و بهره‌برداری‌های گزارش‌شده، نشان‌دهنده ریسک عملیاتی بالای این ضعف در حملات واقعی است. برای کاهش ریسک و جلوگیری از بهره‌برداری از این آسیب‌پذیری، اجرای اقدامات زیر ضروری است:

  • به‌روزرسانی کرنل لینوکس: مهم‌ترین اقدام امنیتی به‌روزرسانی سیستم به نسخه‌های پچ‌شده کرنل است. نسخه‌های 10.254، 5.15.204، 6.1.170، 6.6.137، 6.12.85، 6.18.22، 6.19.12 و 7.0 شامل پچ این ضعف هستند. سایر اقدامات نقش مکمل را دارند و می‌توانند به کاهش ریسک این آسیب پذیری و مقابله با حملات مشابه کمک کنند.
  • محدودسازی دسترسی کاربران لوکال: در محیط‌های چندکاربره، دسترسی کاربران غیرضروری به سیستم باید محدود شود و سیاست‌های کنترل دسترسی سخت‌گیرانه‌تر اعمال گردد تا احتمال بهره‌برداری از آسیب‌پذیری‌های لوکال کاهش یابد.
  • نظارت بر یکپارچگی فایل‌ها: استفاده از ابزارهای مانیتورینگ یکپارچگی فایل (مانند AIDE، Tripwire یا Samhain) می‌تواند تغییرات غیرمنتظره در فایل‌های حساس سیستم را شناسایی کند.
  • کاهش سطح حمله در سیستم: غیرفعال کردن قابلیت‌ها یا کامپوننت‌های غیرضروری کرنل، محدود کردن دسترسی به رابط AF_ALG و کنترل دسترسی به سیستم‌های فراخوانی مانند splice در محیط‌های حساس می‌تواند سطح حمله را کاهش دهد.
  • مانیتورینگ و ثبت لاگ امنیتی: بررسی لاگ‌های سیستم و استفاده از سامانه‌های تشخیص نفوذ میزبان (HIDS) می‌تواند فعالیت‌های غیرعادی مرتبط با دستکاری فایل‌های سیستمی را شناسایی کند.

اجرای این اقدامات به ویژه به‌روزرسانی سریع کرنل لینوکس می‌تواند ریسک سوءاستفاده از این آسیب‌پذیری را به شکل قابل توجهی کاهش داده و امنیت سیستم‌های مبتنی بر لینوکس را در برابر حملات افزایش سطح دسترسی افزایش دهد.

امکان استفاده در تاکتیک‌های Mitre Attack (در زمان اجرای حمله)

Initial Access (TA0001)
مهاجم نیاز به دسترسی اولیه به سیستم هدف دارد. این دسترسی می‌تواند از طریق یک اکانت محلی با هر سطح دسترسی، یک اکانت سرویس (مانند www-data، mysql)، یک پردازه مخرب ناشی از اجرای کد از راه دور (RCE) در یک برنامه کاربردی و یا از طریق دسترسی به یک کانتینر به دست آمده باشد. شرط اصلی وجود “دسترسی محلی” است.

Execution (TA0002)
پس از دسترسی، مهاجم اسکریپت بهره‌برداری (که اغلب با زبان Python، Rust یا Go نوشته شده) را اجرا می‌کند. این اسکریپت با استفاده از فراخوان‌های سیستمی استاندارد (socket، sendmsg، splice، recv) و بدون نیاز به کتابخانه‌های خاص، عملیات نوشتن در حافظه نهان را انجام می‌دهد.

Persistence (TA0003)

پس از کسب دسترسی root، مهاجم می‌تواند با نصب درهای پشتی (Backdoor) مانند افزودن یک کاربر جدید با دسترسی بالا، تغییر cron jobها، نصب یک rootkit، یا پیکربندی مجدد سرویس‌های SSH، دسترسی دائمی خود را در سیستم فراهم کند.

Privilege Escalation (TA0004)
این تاکتیک، هدف اصلی این آسیب‌پذیری است. مهاجم با استفاده از “Copy Fail” از یک کاربر بدون امتیاز (Unprivileged) به سطح دسترسی کامل ریشه (Root) ارتقا می‌یابد. این افزایش دسترسی امکان انجام هر عملیاتی را روی سیستم فراهم می‌کند.

Defense Evasion (TA0005)
از آنجا که تمام تغییرات فقط در حافظه نهان (Page Cache) اعمال می‌شود و هیچ فایلی روی دیسک تغییر نمی‌کند، ابزارهای سنتی تشخیص نفوذ مبتنی بر بررسی یکپارچگی فایل‌ها (File Integrity Monitoring) و آنتی‌ویروس‌ها قادر به شناسایی حمله نخواهند بود. مهاجم همچنین می‌تواند اسکریپت خود را مبهم (Obfuscate) کند.

Impact (TA0040)
بهره‌برداری موفق از این آسیب‌پذیری یک نقض کامل امنیتی است. مهاجم با دسترسی کامل root، قادر به نابودی محرمانگی، یکپارچگی و در دسترس بودن داده‌ها است. این دسترسی می‌تواند منجر به سرقت اطلاعات حساس (نظیر اسرار تجاری و اطلاعات شخصی کاربران)، تخریب یا اخاذی داده‌ها (Ransomware)، تغییر در پیکربندی سیستم، ایجاد یک پایگاه دائمی برای حملات بعدی (Lateral Movement) و در نهایت از کار افتادن کامل سرویس‌های حیاتی شود. در چنین وضعیتی، اعتماد کاربران از بین رفته و سازمان با هزینه‌های سنگین ناشی از نقض داده‌ها، جریمه‌های قانونی و خسارت به اعتبار خود مواجه خواهد شد.

منابع

  1. https://www.cve.org/CVERecord?id=CVE-2026-31431
  2. https://www.cvedetails.com/cve/CVE-2026-31431/
  3. https://lore.kernel.org/linux-cve-announce/2026042214-CVE-2026-31431-3d65@gregkh/
  4. https://vulmon.com/vulnerabilitydetails?qid=CVE-2026-31431
  5. https://vuldb.com/vuln/358784
  6. https://github.com/Smarttfoxx/copyfail
  7. https://www.kb.cert.org/vuls/id/260001
  8. https://copy.fail/
  9. https://www.cisa.gov/known-exploited-vulnerabilities-catalog?field_cve=CVE-2026-31431
  10. https://nvd.nist.gov/vuln/detail/CVE-2026-31431
  11. https://websec.net/blog/cve-2026-31431-linux-algifaead-page-cache-write-to-root-69f38a4ccddd2db1f520f170
  12. https://xint.io/blog/copy-fail-linux-distributions#the-fix-6
  13. https://cwe.mitre.org/data/definitions/669.html

همچنین ممکن است دوست داشته باشید

پیام بگذارید