حمله POODLE چیست؟

poodle index
توسط

حمله POODLE (Padding Oracle on Downgraded Legacy Encryption) از یک آسیب پذیری در پروتکل SSL 3.0 (CVE-2014-3566) سوء استفاده می کند. این آسیب‌پذیری به مهاجم اجازه می‌دهد ارتباطات رمزگذاری شده با استفاده از SSLv3 را شنود کند. این آسیب‌پذیری دیگر در پروتکل امنیت لایه حمل و نقل (TLS)، که جانشین SSL (لایه سوکت امن) است، وجود ندارد.

گزارش اخیر آسیب‌پذیری برنامه‌های وب ۲۰۲۰ Acunetix نشان می‌دهد که ۳.۹ درصد از وب سرورها هنوز در برابر POODLE آسیب‌پذیر هستند، به این معنی که با وجود اینکه پروتکل TLS در سال ۱۹۹۹ معرفی شد، همچنان از پروتکل SSL 3.0 پشتیبانی می‌کنند. ۳۰٪ سرورها در برابر حمله BEAST آسیب پذیر هستند زیرا از TLS 1.0 پشتیبانی می کنند.

چرا وب سرورها از پروتکل های قدیمی پشتیبانی می کنند؟ شاید مدیران آن سرورها می خواستند مطمئن شوند که کاربران می توانند با استفاده از مرورگرهای بسیار قدیمی به آنها دسترسی داشته باشند. با این حال، ما گمان می کنیم که این سرورها از نرم افزار سرور بسیار قدیمی با تنظیمات بسیار قدیمی استفاده می کنند.

poodle 1

یک مهاجم با پودل چه کاری می تواند انجام دهد؟

آسیب پذیری POODLE به مهاجم اجازه می دهد تا ارتباطات رمزگذاری شده را شنود کند. این بدان معنی است که مهاجم می تواند داده های محرمانه ای را که منتقل می شود، به عنوان مثال، رمزهای عبور یا کوکی های جلسه، سرقت کرده و سپس هویت کاربر را جعل کند. این می تواند عواقب بسیار جدی داشته باشد، از جمله از دست دادن کنترل بر برنامه وب (به عنوان مثال، اگر مهاجم جعل هویت یک مدیر باشد).

حمله خیلی آسان نیست زیرا باید در سه مرحله موفق باشد:

در مرحله اول، مهاجم باید یک حمله موفقیت آمیز مرد در وسط (MITM) را انجام دهد. مهاجم اکنون می تواند به تمام ارتباطات بین مشتری و سرور گوش دهد و همچنین به این ارتباط اضافه کند (جعل هویت مشتری یا سرور). با این حال، اگر این یک اتصال ایمن باشد، ارتباطات با استفاده از SSL/TLS رمزگذاری می‌شود، بنابراین مهاجم نمی‌تواند بفهمد چه چیزی ارسال می‌شود.
در مرحله دوم، مهاجم باید سرور را متقاعد کند که از پروتکل قدیمی SSL 3.0 استفاده کند. مهاجم می‌تواند این کار را با حذف اتصالات انجام دهد – پس از تعدادی از چنین حذف‌هایی، سرور پروتکل قدیمی‌تری را امتحان می‌کند و فکر می‌کند که کلاینت نمی‌تواند از پروتکل جدیدتری مانند TLS 1.2 استفاده کند. به این حمله کاهش درجه پروتکل یا رقص کاهش می گویند.
در مرحله سوم، زمانی که مشتری و سرور با استفاده از SSL 3.0 در حال ارتباط هستند، مهاجم می‌تواند از حمله POODLE برای رمزگشایی بخش‌های انتخابی ارتباط و سرقت اطلاعات محرمانه استفاده کند.
برای اطمینان از موفقیت آمیز بودن حمله POODLE، مهاجم همچنین باید بتواند مرورگر کاربر را فریب دهد تا جاوا اسکریپت را اجرا کند، مثلاً با استفاده از مهندسی اجتماعی.

چگونه کار می کند؟

حمله POODLE به دلیل چندین ویژگی پروتکل SSL/TLS امکان پذیر است. شما می توانید در مورد نحوه عملکرد این پروتکل ها در سری مقالات ما در مورد SSL/TLS بیشتر بخوانید. در حال حاضر، تنها چیزی که باید بدانید این است که SSL/TLS به سرور و مرورگر اجازه می‌دهد از مجموعه‌ای از الگوریتم‌های مختلف برای رمزگذاری ارتباطات استفاده کنند - این مجموعه‌های رمز نامیده می‌شوند.

آسیب‌پذیری POODLE مجموعه‌های رمزی را تحت تأثیر قرار می‌دهد که شامل رمزگذاری متقارن همراه با رمزهای بلوکی، به عنوان مثال، الگوریتم‌های AES یا DES است. در چنین مواردی، مشتری و سرور ابتدا روی یک کلید مخفی با استفاده از رمزگذاری نامتقارن (کلید خصوصی و کلید عمومی) توافق می کنند. سپس تمام ارتباطات با استفاده از این کلید به صورت متقارن رمزگذاری می شود. در مورد رمزهای بلوکی، داده ها در بلوک هایی با طول ثابت رمزگذاری می شوند، به عنوان مثال، ۸ بایت یا ۱۶ بایت.

مجموعه‌های رمزی که در برابر پودل آسیب‌پذیر هستند، از زنجیره بلوک رمز (حالت CBC) نیز استفاده می‌کنند. این بدان معنی است که مقدار هر بلوک به مقدار بلوک قبلی بستگی دارد - با استفاده از عملیات منطقی XOR محاسبه می شود. همچنین، یک بلوک داده تصادفی در ابتدا اضافه می شود - این بردار اولیه نامیده می شود. این امر ضروری است تا هر بار که داده ها رمزگذاری می شوند، متفاوت به نظر می رسند (و بنابراین مهاجم نمی تواند داده ها را بر اساس شباهت ها کشف کند).

poodle 2

آناتومی حمله پودل

برای انجام یک حمله معمولی POODLE و سرقت یک کوکی جلسه وب، مهاجم اقدامات زیر را انجام می دهد:

مهاجم مرورگر قربانی را فریب می دهد تا کد جاوا اسکریپت را اجرا کند که به مهاجم اجازه می دهد حمله را انجام دهد.
کد جاوا اسکریپت مهاجم، مرورگر کاربر را فریب می دهد تا چندین درخواست قانونی را به سرور ارسال کند. این درخواست ها شامل کوکی جلسه است.
کد جاوا اسکریپت URL اتصال را تغییر می دهد (افزودن کاراکترهای اضافی) به طوری که طول داده های ارسال شده به سرور مضربی از اندازه بلوک (مثلاً ۸) باشد. این بدان معنی است که آخرین بلوک فقط حاوی padding خواهد بود (توضیحات بالا را ببینید).
مهاجم می داند که کدام بلوک های داده حاوی کوکی جلسه هستند. به عنوان مثال، داده ها ممکن است ۱۰ بلوک داشته باشند و مهاجم می داند که بلوک های سوم و چهارم حاوی مقدار کوکی جلسه هستند.
مهاجم کل بلوک سوم را در آخرین بلوک کپی می کند و بارها به سرور ارسال می کند و هر بار چیزی در URL اتصال تغییر می دهد تا MAC متفاوت باشد.
پس از حداکثر ۲۵۶ بار، پیام پذیرفته می شود. این بدان معناست که آخرین بایت بلوک سوم پس از رمزگشایی، عدد ۰۷ خواهد بود که نشان دهنده padding صحیح است.
اکنون مهاجم آخرین بایت رمزگشایی شده را می شناسد و می تواند با استفاده از عملیات XOR آن را با بلوک های قبلی ترکیب کند تا آخرین بایت واقعی بلوک سوم را به دست آورد.
سپس مهاجم می تواند URL اتصال را یک بایت طولانی تر کند و مراحل بالا را برای دریافت قطعه بعدی کوکی تکرار کند. و سپس دوباره برای بلوک چهارم داده تکرار کنید.
اگر طول کوکی ۱۶ باشد، مهاجم پس از بیش از ۴۰۹۶ درخواست، کوکی را می شناسد که حداکثر چند دقیقه طول می کشد.


پست های توصیه شده