آسیبپذیری Copy Fail لینوکس: واکنش سریع Cloudflare
خلاصهٔ کاملتر
CVE-2026-31431 با نام «Copy Fail» یه آسیبپذیری ارتقای سطح دسترسی محلی (Local Privilege Escalation) در کرنل لینوکسه که ۲۹ آوریل ۲۰۲۶ بهصورت عمومی فاش شد. Cloudflare در یه پست فنی مفصل توضیح داد که چطور این تهدید رو ارزیابی، شناسایی، و خنثی کرد — بدون هیچ تأثیری روی سرویسها یا داده مشتریان.
ریشه مشکل کجاست؟ کرنل لینوکس یه API داخلی برای رمزنگاری داره که فرآیندهای بیدسترسیت (unprivileged) از طریق خانواده سوکت AF_ALG بهش دسترسی دارن. ماژول algif_aead مسئول پشتیبانی از رمزنگاری AEAD هست. در سال ۲۰۱۷ یه بهینهسازی برای عملیات in-place اضافه شد که scatterlistها رو — ساختارهایی که صفحات مختلف حافظه رو به هم وصل میکنن — زنجیر میکرد، اما هیچ محدودیتی برای جلوگیری از نوشتن خارج از ناحیه مجاز نداشت.
وقتی کاربر recvmsg() رو صدا میزنه، wrapper ای به نام authencesn یه نوشتن ۴ بایتی خارج از محدوده خروجی مجاز انجام میده:
scatterwalk_map_and_copy(tmp + 1, dst, assoclen + cryptlen, 4, 1);با استفاده از splice()، مهاجم میتونه page cache یه فایل اجرایی دلخواه رو به این scatterlist وصل کنه. نتیجه؟ اون ۴ بایت دقیقاً توی کش فایل نوشته میشن — حتی اگه تابع خطای -EBADMSG برگردونه. مهاجم کنترل داره روی اینکه کدوم فایل تغییر کنه، از کجاش، و چی توش نوشته بشه.
اکسپلویت پیشفرض روی /usr/bin/su — یه باینری setuid-root که روی تقریباً همه distroها هست — کار میکنه. مهاجم صفحات page cache این فایل رو از طریق splice() وارد scatterlist میکنه، شلکد رو ۴ بایت ۴ بایت مینویسه، و بعد execve("/usr/bin/su") رو اجرا میکنه تا shellcode با دسترسی root اجرا بشه. فیکس upstream (کامیت a664bf3d603d) همون بهینهسازی ۲۰۱۷ رو revert کرده.
Cloudflare یه زیرساخت کرنل لینوکس سفارشی داره که بر اساس نسخههای LTS کامیونیتی ساخته شده. به محض اعلام این CVE، چندین تیم بهصورت موازی کار کردن: ارزیابی کدوم نسخههای کرنل آسیبپذیرن، تأیید پوشش تشخیصهای رفتاری موجود، جستجوی پیشگیرانه در لاگهای ۴۸ ساعت قبل، طراحی یه mitigation runtime، و ادامه آپدیت سافتوری کرنل.
نکته مهم اینه که سیستم تشخیص رفتاری Cloudflare این اکسپلویت رو در عرض چند دقیقه و بدون هیچ آپدیت signature یا تغییر قانونی شناسایی کرد. این سیستم کل زنجیره اجرا رو — از interpreter اسکریپت تا زیرسیستم رمزنگاری کرنل و باینری ارتقای دسترسی — به هم لینک کرد و بهعنوان رفتار مخرب فلگ زد.
نکات کلیدی:
- آسیبپذیری Copy Fail یه نوشتن ۴ بایتی خارج از محدوده در کرنل لینوکسه که از طریق
AF_ALGوsplice()قابل بهرهبرداریه - مهاجم میتونه بدون هیچ دسترسی ویژهای، page cache فایلهای setuid رو آلوده کنه و به root برسه
- Cloudflare با استفاده از یه کرنل LTS سفارشی و pipeline آپدیت هفتگی، معمولاً پیش از افشای عمومی CVE پچ رو deploy کرده
- سیستم تشخیص رفتاری این شرکت اکسپلویت رو در چند دقیقه و بدون نیاز به signature جدید شناسایی کرد
- هیچ داده مشتری یا سرویسی تحت تأثیر قرار نگرفت




