مشکلات امنیتی و احراز هویت در SOAP: چطور جلوی حملات XML رو بگیریم؟

خب بچه‌ها، امروز قراره درباره یکی از موضوعات داغ دنیای سرویس‌های ابری حرف بزنیم: امنیت توی وب‌سرویس‌هایی که با پروتکل SOAP کار می‌کنن. اگه نمی‌دونین SOAP چیه، خلاصه بگم، یک پروتکل قدیمی و پرکاربرد واسه رد و بدل کردن اطلاعات بین سیستم‌هاست که داده‌هاش رو با فرمت XML (یعنی یک جور زبان نشانه‌گذاری برای سازماندهی اطلاعات) می‌فرسته.

حالا مشکل دقیقا کجاست؟ هر چی سرویس‌های ابری بیشتری دارن بر پایه SOAP ساخته می‌شن، نگرانی درباره “خرابکاری با XML” هم بیشتر میشه. یکی از این خرابکاری‌ها Signature Wrapping هست؛ یعنی نفوذگر میاد یک امضای دیجیتالی سالم توی پیام قرار میده ولی پیام رو بعدش جوری تغییر میده که سیستم گول بخوره و فکر کنه هنوز همون پیام سالمه! Replay Attack هم یه تکنیک دیگه است که توش پیام معتبر رو برمی‌دارن و دوباره ارسال می‌کنن تا شاید بتونن دسترسی بگیرن یا سیستم رو فریب بدن.

این تحقیق اومده بررسی کنه که چطور میشه جلوی این دست ضعف‌های امنیتی رو گرفت، مخصوصاً تو بخش احراز هویت یا همون authentication، که یعنی سیستم بدونه داره واقعا با چه کسی صحبت می‌کنه. بچه‌ها، احراز هویت درست و حسابی یعنی هیچ آدم ناشناسی نتونه خودش رو جا بزنه و وارد اطلاعات محرمانه بشه.

روش کارشون این بوده که از چیزی به اسم TulaFale استفاده کردن؛ این یه زبان برای مدل‌سازی امنیتی سناریوهای SOAP هست. اومدن سه چیز مهم رو توی مدل‌شون گذاشتن: UsernameToken (توکن حاوی نام کاربری واسه احراز هویت)، Timestamp (تاریخ و ساعت که پیام‌های تکراری رو شناسایی کنه)، و X.509 digital certificates (یک نوع گواهینامه دیجیتال برای اطمینان از هویت). بعد این اسکریپت‌ها رو به applied pi-calculus (نوعی زبان ریاضی برای مدل‌سازی تعاملات امنیتی) تبدیل کردن و با ابزار ProVerif بررسی‌شون کردن. ProVerif یه برنامه خیلی باحال برای بررسی رسمی پروتکل‌های امنیتیه تا بتونه مطمئن شه مثلاً اطلاعات محرمانه نمی‌ره دست کسی که نباید، یا پیام‌ها سالم می‌مونن (message integrity).

تو کل این ماجرا، تیم تحقیق با یه عالمه متخصص امنیت مشورت کرده و تونستن مهم‌ترین ریسک‌ها و خطرهای موجود رو پیدا کنن و درباره‌شون حرف بزنن. حتی اومدن یه محیط آزمایشی شبیه‌سازی درست کردن که مثل ارتباط واقعی بین سرور و کلاینت SOAP عمل می‌کنه و حملات XML-based روش انجام دادن ببینن مدل چقدر قویه.

چیزی که جالبه اینه که مدل پیشنهادی رو هم از نظر سرعت بررسی، هم مقیاس‌پذیری تو سناریوهای شلوغ (یعنی وقتی کلی کاربر همزمان دارن پیام می‌دن)، و هم دقت در شناسایی حملات امتحان کردن. جوابشم مثبت بوده: تونستن الگوهای حمله رو خوب شناسایی کنن و پیام‌هایی که طبق استاندارد امنیتی WS-Security بودن رو به درستی تایید کنن که مشکلی ندارن. (WS-Security یه استاندارد رایج واسه امنیت داده‌های رد و بدل شده تو SOAP هست).

در نهایت این مدل باعث میشه که بشه تو پروژه‌های واقعی SOAP هم بدون این که همه چیز رو دستی چک کنیم، خیلی راحت و اتوماتیک مطمئن بشیم احراز هویت و امنیت پیام‌ها واقعا سالمه. یعنی قبل از این که سرویس‌هاتون رو بیارین بالا، میشه پروتکل‌های امنیتی‌ش رو مدل‌سازی و بررسی کرد؛ اینطوری برنامه‌نویس‌ها هم خیالشون راحت میشه که کاری که ساختن، در برابر حفره‌های امنیتی مقاومه و کاربرا هم می‌تونن با خیال راحت‌تر از سرویس‌های ابری مبتنی بر SOAP استفاده کنن!

پس خلاصه اگه دنبال این هستی که سرویس SOAP ـیت رو ضد حمله کنی و مطمئن شی امنیتش درسته، حتما به سراغ این مدل بررسی رسمی و ابزارهایی مثل ProVerif برو. خطر حملات XML شوخی‌بردار نیست!

منبع: +