آسیبپذیری ExifTool: وقتی یه عکس مک شما رو هک میکنه
خلاصهٔ کاملتر
ExifTool یه ابزار پرکاربرد برای خواندن و نوشتن متادیتای فایلهای تصویری، PDF، صوتی و ویدیوییه که هم بهصورت ابزار خط فرمان و هم بهعنوان کتابخانه قابل استفادهست. تیم GReAT کسپرسکی در فوریه ۲۰۲۶ آسیبپذیری CVE-2026-3102 رو در این ابزار کشف کرد؛ ضعفی که نسخههای ۱۳.۴۹ و قدیمیتر روی macOS رو تحت تأثیر قرار میده و در همون ماه پچ شد.
ریشه این باگ به یه مفهوم امنیتی به اسم taint analysis (تحلیل داده آلوده) برمیگرده. ایده اینه که دادهای که از منبع خارجی میاد — مثل متادیتای یه تصویر — بدون پاکسازی نباید به نقاط خطرناک برنامه (sink) برسه. در ExifTool این نقاط خطرناک توابع eval و system هستن. در این آسیبپذیری، متغیر $val که مقدار تاریخ رو نگه میداره، بدون escape شدن وارد تابع system() در تابع SetMacOSTags میشه.
ماجرا اینه که وقتی ExifTool متادیتای macOS رو پردازش میکنه، از attribute سیستمی MDItemFSCreationDate (یا همون FileCreateDate) برای تاریخ ایجاد فایل استفاده میکنه. مهاجم میتونه یه مقدار تاریخ مخرب با singled quote رو در تگ DateTimeOriginal ذخیره کنه — اما برای دور زدن فیلتر تاریخ ExifTool، باید از فلگ -n استفاده کنه که مرحله اعتبارسنجی (PrintConvInv) رو کاملاً رد میکنه.
بعد از ذخیره payload، مهاجم با قابلیت -tagsFromFile این مقدار آلوده رو از تگ منبع به FileCreateDate کپی میکنه. همین کپی کردنه که مسیر آسیبپذیر SetMacOSTags رو فعال میکنه. نوشتن مستقیم به FileCreateDate اعتبارسنجی میشه، ولی کپی از تگ دیگهای چنین بررسیای نداره:
cp evil_benign.jpg pwn.jpg
exiftool -n -tagsFromFile evil_benign.jpg "-FileCreateDate<DateTimeOriginal" pwn.jpgپچ نسخه ۱۳.۵۰ روش فراخوانی system() رو از یه رشته بههم چسبیده به فرم لیست آرگومان تغییر داد. این تغییر نیاز به هر نوع escape دستی رو از بین میبره چون shell دیگه رشته رو تفسیر نمیکنه:
#### BEFORE
$cmd = "/usr/bin/setfile -d '${val}' '${f}'";
system $cmd;
#### AFTER
system('/usr/bin/setfile', '-d', $val, $file);برای محافظت، باید مطمئن بشید که تمام workflowهای پردازش تصویر روی مک از ExifTool نسخه ۱۳.۵۰ یا بالاتر استفاده میکنن. فایلهای غیرموثق رو در محیطهای ایزوله پردازش کنید و از نسخ قدیمی کتابخانه ExifTool که ممکنه در ابزارهای دیگه embed شده باشن غافل نشید.
نکات کلیدی:
- آسیبپذیری CVE-2026-3102 مختص macOS و ExifTool نسخه ۱۳.۴۹ و قدیمیتره
- مهاجم میتونه دستورات دلخواه رو با سطح دسترسی کاربر جاری اجرا کنه
- اکسپلویت نیازمند فلگ -n و قابلیت -tagsFromFile هست
- ریشه مشکل، escape نشدن مقدار $val (تاریخ) قبل از ورود به system() بود
- پچ با تغییر از رشته به لیست آرگومان، تفسیر shell رو کاملاً حذف کرد
- بروزرسانی به نسخه ۱۳.۵۰ تنها راه رفع قطعی این باگه




