آیا میتوان به امضاهای دیجیتال در فایلهای PDF اعتماد کرد؟
به ندرت پیش میآید شرکتها یا آژانسهای دولتی از فایلهای پیدیاف استفاده نکنند. آنها اغلب از امضاهای دیجیتال برای تضمین اعتبار این داکیومنتها استفاده میکنند. وقتی در هر پیدیافخوانی یک فایل امضاشده را باز میکنید، این برنامه پرچمی را نمایش خواهد داد که نشان از امضا شدنِ داکیومنت دارد. حتی در این پرچم قید میشود که این امضا توسط چه کسی صورت گرفته است. در حقیقت شما توسط آن میتوانید به منوی اعتبارسنجیِ امضا دسترسی داشته باشید.
بنابراین، تیمی از محققین از چندین دانشگاه آلمانی بر آن شدند تا اعتبار و استحکام امضاهای پیدیافی را مورد بررسی و آزمایش قرار دهند. ولادیسلاو ملادنوو از دانشگاه رور بوخوم، یافتههای این تیم را در کنگرهی ارتباطات آشوب (36C3) به اشتراک گذاشتند.
کار محققین آسان بود: دستکاریِ محتواهای یک داکیومنت پیدیافیِ امضاشده بدون باطل کردنِ امضا در طی این فرآیند. به طور نظری، مجرمان سایبری میتوانستند همین کار را برای ابلاغ اطلاعات غلط و یا افزودن محتوای آلوده به فایل امضاشده انجام دهند. از اینها گذشته، کلاینتهایی که از بانک، داکیومنت امضاشده دریافت میکنند احتمالاً به آن اعتماد نموده و روی هر لینکی که داخل آن باشد کلیک میکنند. این تیم برای پلتفرمهای مختلف 22 پیدیافخوانِ محبوب انتخاب کردند و به شکل نظاممندی نتایج آزمایشات خود را بدانها خوراندند.
ساختار فایل پیدیاف
بگذارید ابتدا برایتان از فرمت پیدیاف بگوییم. هر فایلی شامل چهار بخش میشود: هدر که نشاندهندهی نسخهی پیدیاف است؛ بدنه که نشاندهندهی محتوای اصلیِ دیدهشده توسط کاربر است؛ بخش Xref که در واقع یک دایرکتوری است که آیتمهای داخل بدنه و لوکیشنهایشان را فهرست میکند (برای نمایش محتوا)؛ و در نهایت تریلر که با آن، پیدیافخوانها شروع میکنند به خوانشِ داکیومنت. تریلر شامل دو پارامتر مهم است که به برنامه میگویند پردازش فایل کجا شروع شود و کجا بخش Xref باید آغاز گردد.
یک تابع بروزرسانی افزایشیلنگر[1] داخل فرمت یکپارچهسازی شده است که به کاربر اجازه میدهد (بعنوان مثال) بخشی از متن را هایلایت کرده و یا کامنت بگذارد. اگر بخواهیم از نگاه فنی به ماجرا نگاه کنیم، این تابع سه بخش را اضافه میکند: بروزرسانیهایی برای بدنه، یک دایرکتوریِ جدید Xref و یک تریلر جدید. این میتواند به طور مؤثری تغییر نحوهی دیدهشدن آیتمها توسط کاربر و نیز افزودن محتوای جدید را در پی داشته باشد. در اصل، یک امضای دیجیتال همچنین یک بروزرسانی افزایشی نیز میباشد که کارش افزودن یک المان دیگر و شاید بخشهای مکاتبهای به فایل است.
حملهی ISAلنگر[2]
نخست، این تیم سعی کرد با استفاده از یک ویرایشگر متنی بخشهای بیشتری را به همراه بروزرسانی افزایشیِ دیگر اضافه کند. اگر بخواهیم دقیقتر بگوییم، این در حقیقت یک حمله نیست- این تیم صرفاً از تابعِ اجراشده توسط سازندگان آن فرمت استفاده کرد. وقتی یک کاربر فایلی را که بدینطریق دستکاری میشود باز میکند، پیدیافخوان معمولاً پیامی را نشان میدهد که میگوید امضای دیجیتال معتبر است اما داکیومنت دستکاری شده است. بدتر اینکه یکی از پیدیافخوانها (LibreOffice) حتی پیام را هم نشان نداده بود.
آزمایش جدید، شامل حذف دو بخش نهایی -یعنی افزودن یک آپدیت به بدنه و نه Xref و تریلر جدید- میشود. برخی اپلیکیشنها کار با چنین فایلی را قبول نکردند. دو پیدیافخوان متوجهِ نبودِ این دو بخش شدند و به طور خودکار آنها را بدون اینکه خواننده در مورد این تغییر محتوایی مطلع شود اضافه کردند. سه تای دیگر هم بدون هیچ اعتراضی، مجوزِ این عمل را روی فایل صادر کردند.
سپس، محققین این سوال برایشان پیش آمد که اگر فقط امضای دیجیتال را در آپدیت «دستیِ» خود کپی کنند چه؟ دو پیدیافخوانِ دیگر هم فریب خوردند- Foxit و MasterPDF. به طور کلی، از این 22 پیدیافخوان 11 پیدیافخوان ثابت کردند که در برابر چنین دستکاریهای سادهای آسیبپذیری هستند. افزون بر اینها، شش تای این پیدیافخوانها هم هیچ علامتی مبنی بر دستکاری شدن داکیومنت از خود نشان ندادند. در پنج مورد دیگر هم کاربر برای افشا و ابلاغ هر نشانهای از دستکاری باید منو را وارد میکرد و البته اعتبار امضای دیجیتال را نیز به صورت دستی مورد بررسی قرار میداد (صِرفِ باز کردن فایل کافی نبود).
حملهی SWAلنگر[3]
امضای یک داکیومنت دو فیلد مهم را به عنوان بروزرسانیِ افزایشی به بدنه/محتوا اضافه میکند. این دو فیلدشامل امضا و ByteRange میشود که به دقت آنچه امضا شده است را تشریح میکند. در مورد دوم که اشاره کردیم چهار پارامتر وجود دارد- تعریف آغاز فایل، تعداد بایتهای قبل از کد امضا، بایتی که تعیین میکند کد امضا کجا تمام میشود و تعداد بایتهای بعد از امضا- زیرا امضای دیجیتال در حقیقت توالی کاراکترهای تولیدشده توسط ابزارهای رمزنگاری (از کدِ داکیومنت پیدیاف) است. طبیعتاً امضا نمیتواند خودش را امضا کند، بنابراین آن بخشی که درش ذخیره میشود از فرآیند محاسبات امضایی خارج میشود.
محققین تلاش داشتند بلافاصله بعد از امضا، فیلد ByteRange دیگری را اضافه کنند. دو ارزش اولِ داخل آن دستنخورده باقی ماندند؛ تنها آدرس آخر کد امضاها عوض شد. نتیجه این بود که فضای بیشتری در فایل ایجاد شد و همین به آیتمهای آلوده اجازه داد تا بتوانند اضافه شوند و بخش Xref نیز آنها را تشریح کند. به لحاظ تئوری، اگر این فایل به درستی خوانده میشود، پیدیافخوان نمیتوانست براحتی مسیر خود را تا این بخش طی کند. با این حال، از این 22 اپلیکیشن، 17 اپ در مقابل چنین حملهای آسیبپذیری نشان دادند.
USFلنگر[4] (جعل جهانی امضا)
این تیم تحقیقاتی برای دقت بیشتر و سنجش بهتر همچنین تصمیم گرفت این اپها را در برابر یک ترفند استاندارد تست نفوذ مورد آزمایش قرار دهند؛ به موجب این تست نفوذ در واقع تلاش میشود جای فیلدهای عدد با فیلدهای عدد ناصحیح عوض شود و یا اصلاً براحتی این فیلدها توسط محققین حذف شوند. بخش آزمایش روی محتوا که رسید، کاشف به عمل آمد که امضای واقعی جایش با ارزش x00 0 عوض شده بود و این درحالیست که همچنان دو پیدیافخوان آن را معتبر تلقی کرده بودند.
و اگر این امضا آنجا جا میماند ولی بخش ByteRange (یعنی اطلاعات در مورد اینکه دقیقاً چه چیزی امضا شده است) حذف میشد چه؟ یا اگر مقدار null به جای ارزشهای واقعی گذاشته میشد چه؟ در هر دو مورد برخی پیدیافخوانها روی اعتبار چنین امضایی صحّه گذاشتند. به طور کلی، از این 22 برنامه 4 برنامه حاوی خطاهای پیادهسازی بودند که امکان اکسپلویتشدن در آنها وجود داشت. خلاصهی نتایج نشان میدهد که از این 22 پیدیافخوان 21 عددِ آنها آسیبپذیر بودند. از این روست که میگوییم امکان دارد فایل پیدیافی با محتوای آلوده و یا اطلاعات غلط ساخته شود که به چشم کاربر بسیار معتبر بیاید.
جالب اینجاست که آن یک اپلیکیشن باقیمانده که فریب هیچیک از ترفندهای تیم تحقیقاتی را نخورد Adobe Reader 9 بود. مشکل این است که این پیدیافخوان خودش در معرض آسیبپذیری RCE است و توسط کاربران لینوکسی مورد استفاده قرار میگیرد (صرفاً به این دلیل که آخرین نسخهاش در دسترس ایشان است).
نتیجهگیریِ عملی
نتیجهگیری عملیای که میشود از کل این تحقیق گرفت بدین شرح است: ابتدا، هیچکس نباید چشم و گوش بسته به امضاهای دیجیتالی پیدیاف اعتماد کند. اگر جایی چکمارک سبز دیدید این لزوماً بدین معنا نیست که امضا معتبر است. دوم اینکه، حتی یک داکیومنت امضاشده هم میتواند در معرض خطر قرار گیرد. بنابراین پیش از باز کردن هر نوع فایل دریافتی به صورت آنلاین و یا کلیک روی هر لینکی داخلشان مطمئن شوید روی کامپیوترتان یک راهکار امنیتی قابلاطمینان نصب است.
لنگر[1] incremental update
لنگر[2] Incremental saving attack
لنگر[3] Signature wrapping attack
لنگر[4] Universal signature forgery
منبع: کسپرسکی آنلاین
تنظیم: روابط عمومی شرکت ایدکو (توزیع کننده محصولات کسپرسکی در ایران)؛
- ۹۸/۱۰/۲۸