روابط عمومی شرکت ایدکو (توزیعکنندهی محصولات کسپرسکی در ایران)؛ سپتامبر 2022، شرکت Trellix گزارشی در مورد یک آسیبپذیری در ماژول تارفایل[1] -که بخشی از آرشیو استاندارد مخصوص زبان برنامهنویسی پیتون و هر کسی میتواند از آن استفاده کند- منتشر کرد. این آسیبپذیری به فایل دلخواه اجازه میدهد در فولدر دلخواه روی هارد درایو نوشته شود و در برخی موارد حتی اجازه اجرای کد مخرب را نیز میدهد. آنچه این مورد مطالعاتی را مهم کرده است مشکلی است که در آگست 2007 در تارفایل کشف شد (بله درست خواندید، 15 سال پیش!). اما آن زمان این مشکل، خطرناک تلقی نمیشد. در ادامه قصد داریم بررسی کنیم چرا 15 سال پیش این مسئله را جدی نگرفتند و در نتیجه این غفلت توسعهدهندگان پیتون و کاربران آن میتوانند با چه چالشهایی مواجه شوند؟ با ما همراه بمانید.
زیر و بم تارفایل
تارفایل حاوی کدی است مخصوص کار کردن با آرشیوهای تار. این فرمت به طور گسترده در سیستم عاملهای یونیکسمانند استفاده میشود و قدمت آن به سال 1979 برمیگردد. تار (Tar) راهیست ساده برای پک کردن تعداد زیادی فایل و فولدر. در ابتدا تار برای نوشتن بکآپهایی روی نوارهای مغناطیسی مورد استفاده قرار میگرفت اما این روزها آرشیوهای تار میتوانند از فشردهسازی فایل استفاده کنند؛ هرچند این تصمیمی اختیاری است. تارفایل مسئول ایجاد و آنپک کردن چنین آرشیوهایی است و توسعهدهندگان پیتون از آن بعنوان ابزاری از قبل آماده برای چنین اموری استفاده میکنند. آسیبپذیری در تارفایل هم ساده است: این آسیبپذیری از آگست 2007 در گزارش اصلی باگ به طور کامل شرح داده شد. حتی به آن معنا هم نمیشود بدان آسیبپذیری گفت؛ فقط اینکه تارفایل ساختار دقیق فولدر را که در آرشیو وجود دارد موقع آنپک شدن، از نو میسازد. این شامل مواردی میشود که نام فایل در آرشیو چیزی مانند نمونه زیر است:
../../../../../etc/passwd
اگر چنین آرشیوی را بعنوان ادمین سیستم آنپک کنید، فایل پسورد در دایرکتوری جایی که خود آرشیو قرار دارد نوشته نمیشود. آنپکر موقع عبور از مسیر المانهای /../ ابتدا به روت دایرکتوری میرسد، سپس فایل پسورد را در دایرکتوری /etc اوررایت میکند. در لینوکس این یعنی پاک کردن فایل معمولی حاوی اطلاعات همه کاربران سیستم. خطر در این بخش این است که کاربر برنامهای که ماژول تارفایل را به کار گرفته نمیداند آنپکینگ یک آرشیو معمولی چقدر نرمال قرار است به پایان برسد. شاید هیچچیز و یا چندتایی فایل در مکان غیرقابلانتظار پدید آید. یا هم برخی فایلهای کاربری ممکن است اوررایت شوند. نویسنده این گزارش باگ در خود آرشیو تار از این مشکل سخن میگوید که البته سال 2001 فیکس شد (چیزی بیش از بیست سال پیش) اما آسیبپذیری در خود تارفایل هرگز بسته نشد.
انتظاری 15 ساله!
در پی مباحثات این باگ احتمالی در سال 2007 تصمیم بر آن شد تا دست روی دست گذاشته شود. آن هم به دو دلیل: ابتدا اینکه چنین پردازش فایلی در تطابق کامل با استاندارد Unix POSIX است (ما صحت آن را تأیید میکنیم). دوم اینکه «هیچ امکان اکسپلویتی در بخش اجرایی وجود ندارد». هشدار در مورد آنپک نکردن فایلها از منابع مشکوک و نامعتبر (که از تارفایل استفاده میکنند) در راهنمای کاربر کافی نبود. این برآورد در سال 2022 غلط از آب درآمد؛ درست وقتی Trellix نشان داد اکسپلویت در فاز اجرایی بسیار هم محتمل است! و نه تنها این امر برای نوشتن داده هر جایی که دلخواه است امکان داشت که همچنین برای اجرای کد دلخواه نیز چنین بستری براحتی فراهم بود. یادتان باشد این آرشیوی است برای برنامهنویسها؛ یعنی امکان حمله به نرمافزار بخصوصی که در آن ماژول تارفایل استفاده میشود بستگی دارد. Trellix دو نمونه ارائه داد.
اولی Universal Radio Hacker است: برنامهای برای تحلیل پروتکلهای وایرلس ناشناس که دادهها را در قالب پروژهها ذخیره میکند و شامل چندین فایل پکشده در قالب تار میشود. محققین نشان دادند چطور میشود در یک فایل قابلاجرا که دارد در دایرکتوری اجرای خودکار ویندوز نوشته میشود، نتایج از قبل آمادهشدهی آرشیو را باز کرد. پس بار بعد که سیستم ریبوت میشود کد نیز اجرا میگردد. این آسیبپذیری میتواند –از بین موارد دیگر- روی پلتفرمهای دیگر نیز اکسپلویت گردد.
دومی نمونهای پیچیدهتر است: محیط توسعه Spyder IDE که کارش ذخیره داده در آرشیوهای تار است. موقع ایمپورت کردن این دادهها محققین ابتدا آزمایش را با کاشت فایل در سیستم تکرار کردند اما بعدش کار جالبتری انجام دادند: آنها کد دلخواه را برای اجرا در استارتآپ بعدیِ Spyder برنامهنویسی کردند. نتیجه نهایی این آزمایش درخواستی بود برای اجرای کد دلخواه این بار با مزایای ادمین سیستم.
پیامدهای غیرقابلپیشبینی
این قصه باگ 15 ساله باری دیگر نشان میدهد نباید قدرت آسیبپذیریهایی را که اجازه نوشتن داده در هر کجا را میدهند دست کم گرفت. تارفایل بخشی از آرشیو استاندارد پیتون است و میتوان آن را تقریباً در هر سیستم مبتنی بر لینوکسی (از بین باقی موارد) یافت. با این حال، خطر مشخصاً در استفاده از آن کارکرد آسیبپذیر است. به طور کلی، هر پروژه توسعهدادهشده در پیتون که ماژول تارفایل را به خدمت میگیرد یک آسیبپذیری محسوب میشود. از دید کاربر نهایی، این وضعیت پیچیدهای است: آنها شاید برنامهای بالقوه آسیبپذیر را اجرا کنند و ندانند آن برنامه دارد از تار استفاده میکند. توصیه متخصصین کسپرسکی این است:
- پردازش فایلها را از منابع نامطئن محدود سازید.
- برای کاهش فرصتهای حمله، اقل مزیت را به برنامههای طرفسوم بدهید.
- نرمافزارهایی که روی مهمترین سیستمهای شما استفاده میشد ممیزی کنید تا آنهایی را که از قابلیتهای آسیبپذیر استفاده میکنند شناسایی کنید.
قابل توجه توسعهدهندگان: این مشکل دلیلی است برای ممیزی کد خودتان تا قابلیتهای آسیبپذیر را پیدا کرده و بر همین اساس آنها را اصلاح کنید.
[1] tarfile module
منبع: کسپرسکی آنلاین (ایدکو)
کسپرسکی اسم یکی از بزرگترین شرکتهای امنیتی و سازنده آنتی ویروس است که برخی از کاربران اشتباهاً این شرکت و محصولات آنتی ویروس آن را با عناوینی نظیر کسپرسکای،کاسپرسکی، کسپراسکای، کسپراسکای، و یا کاسپراسکای نیز میشناسد. همچنین لازم به ذکر است مدیرعامل این شرکت نیز یوجین کسپرسکی نام دارد.