یک آسیبپذیری جدی تخریب حافظه در polkit (PolicyKit) بعد از ۱۲ سال کشف شده است. این پلاگین تقریبا در تمام توزیعهای مدرن لینوکس یافت میشود. تیم تحقیقاتی شرکت امنیتی Qualys یک آسیبپذیری واقعا خطرناک تخریب حافظه در polkit pkexec، با عنوان CVE-2021-4034، کشف کردهاند.
Polkit که قبلا با عنوان PolicyKit شناخته میشد، یک برنامه systemd SUID-root است.
بهرهبرداری از این آسیبپذیری آسان است. با سواستفاده از آسیبپذیری این برنامه، هر کاربر عادیای میتواند روی رایانه آسیبپذیر، امتیازات کاربر ریشه را داشته باشد.
همانطور که Qualys در توضیح این مشکل نوشته است: «این آسیبپذیری رویای یک مهاجم است که به حقیقت میپیوندد».
رویای آنها کابوس ماست.
چرا آسیبپذیری Polkit خطرناک است:
- Pkexec روی تمام توزیعهای لینوکس نصب شده است.
- Qualys در تستهای خود از این آسیبپذیری روی Ubuntu, Debian, Fedora, و CentOS بهرهبرداری کرده است، و مطمئن هستند که در سایر توزیعها هم همچنین است.
- Pkexec از زمان ایجادش، می سال ۲۰۱۲، آسیبپذیر بوده است.
- یک کاربر عادی، بدون دسترسی و امتیازات root، با بهرهبرداری از آسیبپذیری Polkit به تمام امتیازات کاربر ریشه یا root دست پیدا میکند.
- اگرچه این آسیبپذیری از نظر فنی یک تخریب حافظه است، مستقل از معماری، فورا قابل بهرهبرداریست.
- حتی اگر polkit daemon در حال اجرا نباشد، میتوان از این آسیبپذیری سواستفاده کرد.
polkit، مولفهای برای کنترل امتیازات کل سیستم در سیستمعاملهای شبهیونیکس است. میدانیم که لینوکس میتواند مورد حمله این آسیبپذیری قرار بگیرد، سولاریس و سایر سیستمعاملهای یونیکس نیز ممکن است آسیبپذیر باشند. با اینحال میدانیم که OpenBSD نمیتواند مورد حمله اکسپلویتهای این آسیبپذیری قرار بگیرد.
این نقص فنی، که بیش از ۱۲ سال مخفی بوده است، مشکلی در نحوه خواندن متغیرهای محیطی توسط pkexec است. نسخه کوتاه توضیح مشکل، طبق گفته Qualys، این است: «اگر PATH برابر “PATH=name=.” باشد و دایرکتوری “name=” وجود داشته و شامل فایل اجرایی بنام “value” باشد. یک اشارهگر به رشته “name=./value” خارج از محدوده envp[0] نوشته شده است.
بهرهبرداری از آسیبپذیری PwnKit کار سختی نیست، بنابراین تا دیر نشده فورا پچ توزیع خود را دریافت و نصب کنید. اگر هنوز فایل بهروزرسانیای برای توزیعی که استفاده میکنید منتشر نشده است، میتوانید SUID-bit را از pkexec موقتا حذف کنید. برای مثال دستور زیر جلوی حمله را میگیرد:
chmod 0755 /usr/bin/pkexec
برای اطمینان از اینکه سیستم شما مورد حمله قرار گرفته یا نه، لاگها را بررسی کنید. هر چند یک مهاجم پیشرفته میتواند بدون هیچ ردپایی از این آسیبپذیری بهرهبرداری کند.
منبع: https://www.zdnet.com/article/major-linux-policykit-security-vulnerability-uncovered-pwnkit/