کمیته رکن چهارم – در این حال حمله کننده (که بین کلاینت و سرور قرار گرفته است)، بلوک C5 را )که متناظر با padding است) دستکاری میکند و آنرا مساوی C2 قرار میدهد:
در این صورت خواهیم داشت:
C5 = C2 ⇒ Encrypt(C1 ⊕ P2) = Encrypt(C4 ⊕ P5) ⇒ C1 ⊕ P2 = C4 ⊕ P5 ⇒
P2 = C1 ⊕ C4 ⊕ P5
سپس حمله کننده رشتهی جدید را به سرور ارسال میکند.
حمله کننده مقدار C5 (که رمز شدهی padding بوده) را دستکاری کرده و بنابراین مقدار padding را به رشته نامعلومی تغییر داده است. اما میداند که سمت سرور،تنها آخرین کاراکتر padding مهم است. در بیشتر موارد مقدار کاراکتر آخر مخالف x0F0 است و سرور تشخیص میدهد که پیام ارسال شده خراب شده و ارتباط را قطع میکند. اما از هر ۲۵۶ مورد، یک مورد امکان دارد که کاراکتر آخر دقیقا برابر x0F0 باشد. در این صورت پیام، صحیح تلقی شده و پاسخ به کلاینت برگردانده میشود. حمله کننده به راحتی (مثلاً با بررسی اندازه پاسخ) میتواند تشخیص دهد که آیا این دستکاری، پیام را خراب کرده است یا خیر.
اگر پیام خراب نشده باشد، حمله کننده یک کاراکتر از کوکی را فهمیده است، چون میداند که:
P2[16] = C1[16] ⊕ C4[16] ⊕ P5[16]
و مقدار P5[16] = 0x07 بوده و مقدار C1 و C4 نیز جزء درخواست رمز شده است.
به این ترتیب حمله کننده حدوداً با ۲۵۶ تلاش میتواند یک کاراکتر از کوکی کاربر را استخراج کند. حال کاربر با اضافه کردن یک کاراکتر بهurlو حذف یک کاراکتر از body میتواند مقدار کوکی را یک کاراکتر به جلو شیفت کند و با تکرار روند بالا (حدودا ۲۵۶ درخواست)، کاراکترهای کوکی را یک به یک استخراج نماید.
بنابراین حمله کننده برای یافتن یک کوکی به طول ۴۰ کاراکتر، بایستی حدوداً ۱۰،۰۰۰ درخواست از سمت کاربر ارسال کند. این تعداد بسیار کم بوده و با سرعت ۲۰ درخواست در ثانیه، در کمتر از ۱۰ دقیقه قابل انجام میباشد.
شناسایی آسیبپذیری در مرورگر و سرور
افراد عادی برای تست آسیبپذیری مرورگر خود میتوانند به وب سایت زیر مراجعه کنند:
https://www.poodletest.com
به منظور تست آسیبپذیری سرورها میتوان به وب سایت زیر مراجعه نمود:
https://www.ssltest.com
منبع : مرکز ماهر