اگر تا به امروز فکر میکردید پروتکل HTTP/2 امنتر از پروتکل استاندارد HTTP است،احتمالاً در اشتباه بودهاید. چراکه پژوهشگران فقط با ۴ ماه تلاش توانستند ۴ نقص در این پروتکل پیدا کنند.
پروتکل HTTP/2 از ماه می سال گذشته بهطور کامل راهاندازی شد یعنی زمانی که گوگل پروژهی SPDY خود را برای سرعت بخشیدن به بارگذاری صفحات وب برای کاربران اینترنت با HTTP/2 همراه کرد.
اکنون، پژوهشگران امنیتی از شرکت Imperva در کنفرانس Black Hat جزییاتی از حداقل چهار آسیبپذیری مهم در HTTP/2 – که یک بازبینی در پروتکل HTTP است – منتشر کردهاند.
این آسیبپذیریها به مهاجم اجازه میدهد که سرعت وب سرورها را با ایجاد سیل پیامهای به نظر بیخطر که payload با حجم چند گیگابایت دارند آهسته کند، سرورها را در حلقههای تمامنشدنی بیندازند و حتی میتوانند آنها را درهم بشکنند(۱).
پروتکل HTTP/2 میتواند به سه لایه تقسیم شود:
- لایهی انتقال که شامل استریم ها، فریمها، و کنترل جریان میشود.
- پروتکل فشردهسازی و کدینگ دودویی HPACK.
- لایهی معنایی(۲)- یک نسخهی بهبودیافته از HTTP1/1 که باقابلیت فشار از سرور(۳) تقویتشده است .
پژوهشگران با نگاه عمیق به پیادهسازیهای HTTP/2 در محصولات Apache, Microsoft, NGINX, Jetty, nghttp2 موفق به کشف آسیبپذیریهای قابل اکسپلویت در همهی این پیادهسازیهای مهم شدهاند ازجمله دو آسیبپذیری که شبیه به باگهای شناختهشده و بهصورت فراگیر اکسپلویت شده در HTTP/1.x هستند.
چهار آسیبپذیری کلیدی کشفشده در HTTP/2
-
خواندن آهسته(CVE-2016-1546)
این حمله مشابه حملهی شناختهشدهی Slowloris DDoS است که در سال ۲۰۱۰ پردازندههای کارتهای اعتباری زیادی آن را تجربه کردند. در حملات خواندن آهسته، یک مشتری بدخواه، پاسخهای دریافتی را خیلی آهسته میخواند.
حملات خواندن آهسته در محیط HTTP/1.x بسیار مطالعه شدهاند اما همچنان در پیادهسازیهای لایهی کاربرد HTTP/2 وجود دارند.
مرکز دفاعی Imperva انواع مختلفی از این آسیبپذیری را در میان وب سرورهای محبوب شناسایی کرده است.
-
بمب HPACK ا(CVE-2016-15544, CVE-2016-2525)
بمب HPACK یک حملهی لایهی فشردهسازی است که یک حملهی بمب zip یا بمب استخراج فشردهسازی را شبیهسازی میکند
HPACK برای کاهش اندازه ی سرآیند بستهها استفاده میشود. در اینجا فرستنده میتواند حداکثر اندازهی جدول فشردهسازی سرآیندها که برای دیکد کردن سرآیندها استفاده میشود را به گیرنده بگوید.
در این حمله، هکر، یک پیام کوچک و به ظاهر بی خطر را به سرور ارسال می کند که پس از باز شدن در سرور، چند گیگابایت داده تولید می کند و همهی منابع حافظهی سرور را مصرف کرده و سرعت سیستم را پایین میآورد و یا آن را در هم میشکند.
Imperva برای انجام این حمله یک سرآیند ۴ کیلوبایتی را ساخته – هم اندازه جدول فشردهسازی – سپس در همان ارتباط، استریم های جدیدی باز میکند که در هرکدام تا جای ممکن به سرآیند اولیه ارجاع میدهد.(تا ۱۶کیلوبایت ارجاع به سرآیند). پس از ارسال ۱۴ استریم، این ارتباط ۸۹۶ مگابایت از حافظه را مصرف کرد که موجب در هم شکستن سرور شد.
-
حملهی چرخهی وابستگی (CVE-2015-8669)
این حمله از مکانیسمهای کنترل جریانی استفاده میکند که HTTTP/2 برای بهبود شبکه از آنها بهره می برد. یک کاربر بدخواه میتواند از پیامهای خاصی استفاده کند تا یک چرخهی وابستگی ایجاد کند و سرور را به حلقه تمامنشدنی بیندازد.
این نقص میتواند به مهاجم اجازه دهد که حملهی ممانعت از سرویس انجام دهد و یا حتی کد دلخواه خود را بر سیستم اجرا کند.
-
سوءاستفاده از مالتی پلکسینگ(۴) استریم
این حمله به مهاجم اجازه میدهد که آسیبپذیریها را از طریق روشی که سرورها مالتی پلکسینگ استریم ها پیاده می کنند اکسپلویت کند تا سیستم را در هم بشکند. این حمله درنهایت منجر به DOS برای کاربران مجاز میشود.
طبق گفته ی W3Tech هر چهار آسیبپذیری بالا در HTTP/2 فعلی که توسط ۸۵ میلیون وبسایت یا ۹ درصد همهی وبسایتها استفاده میشود تعمیر شده است.
به گفتهی سرپرست Imperva بهبودهای کارایی و پیشرفتهایی برای برنامههای موبایل درHTTP/2 یک مزیت بالقوه برای کاربران اینترنت است. اما انتشار حجم زیادی از کد در زمان کم یک فرصت مناسب برای مهاجمان به وجود آورده است.
درحالیکه یافتن تهدیدات شناختهشدهی HTTP1.x در HTTP/2 مشکل است اما در کنار همهی فنّاوریهای نو نیاز است که راهکارهای حفاظتی برای محکمکاری سطوح جدید در معرض انجام ایجاد شود تا دادههای مشتریها را در برابر حملات سایبری حفاظت کنند.
طبق گفتهی پژوهشگران Imperva با پیادهسازی یک فایروال برنامه وب (WAF) باقابلیتهای وصله سازی مجازی(۵)، میتوان به بنگاهها برای حفظ دادههای حساس خود و برنامههای خود از حملات سایبری مربوط به HTTP/2 کمک کرد.
برای دریافت اطلاعات بیشتر میتوانید به گزارش Imperva مراجعه کنید.
منبع
http://thehackernews.com/2016/08/http2-protocol-security.html
(۱) Crash
(۲) Semantics
(۳) Server-Push
(۴) Multiplexing
(۵) Virtual Patching
ثبت ديدگاه