یک آسیبپذیری مهم در پیادهسازی پروتکل TCP در سیستمهای لینوکس کشف شده که در واقع از سال 2012 گسترش یافته است (از نسخه کِرنل لینوکسِ 3.6 به بعد).
این آسیبپذیری میتواند توسط مهاجمان برای شناسایی میزبانهایی بهکار گرفته شود که روی این پروتکل ارتباط برقرار میکنند. در نهایت این حمله میتواند منجر به بهرهبرداری از ترافیک میزبان گردد.
این اشکال که در پروتکل TCP/IP مشاهده میشود، به نفوذگران این امکان را میدهد تا ارتباطات میان دو مدخل را شناسایی کرده و اقدام به شنود ترافیک نمایند. این مشکل از آن جهت نگرانکننده است که سیستمعامل لینوکس بهصورت گسترده در سرویسدهندههای وب، موبایلهای با سیستمعامل آندروید، تبلتها و تلویزیونها مورد استفاده قرار میگیرد.
پژوهشگران دانشگاه ریورساید ایالت کالیفرنیا و آزمایشگاه تحقیقاتی ارتش آمریکا در مقالهای تحت عنوان:
“Off-Path TCP Exploits: Global Rate Limit Considered Dangerous”
به شرح این آسیبپذیری پرداختهاند و در همایش امنیتی USENIX نشان دادند که چگونه میتوان به دو میزبان که از طریق پروتکل TCP با یکدیگر در ارتباط میباشند، حمله نمود و در آخر توصیههایی را برای چگونگی کاهش اثرات آن ارائه دادهاند.
Zhiyun Qian استادیار علوم کامیپیوتر در دانشگاه کالیفرنیا و یکی از نویسندگان مقاله مذکور در این خصوص میگوید:
"وصلههایی برای این آسیبپذیری در کرنل لینوکس جاری توسعه یافتهاند.
Qian و محققان همکار وی از جمله: Yue Cao Zhongjie Wang ، Tuan Dao ، Srikanth V.Krishnamurthy و Lisa M.Marvel وصلهای را برای سرویسگیرندگان و میزبانهای سرویسدهنده توسعه دادهاند که چالش محدودیت نرخ ACK را برای مقادیر بزرگ ایجاد مینماید که باعث میشود بهرهبرداری از آن دشوارتر گردد".
برای بهرهبرداری از آسیبپذیری، مهاجمان نیازی به بودن در مسیر ترافیک (یعنی اجرای حملات فردی در میان) ندارند و Qian میگوید هیچگونه تعامل کاربری از سوی قربانی مورد نیاز نمیباشد.
Qian در یک بیانیهای که توسط دانشگاه منتشر گردیده، گفته است:
"جنبهی منحصربه فرد این حمله در قابلیت بسیار پایین لازم برای انجام آن است. اصولاً این حمله به راحتی توسط هر فردی در هر جایی از دنیا که ماشینی در یک شبکه داشته باشد و قابلیت Spoofing IP را دارا باشد، قابل انجام است. فقط بخشی از اطلاعات مورد نیاز، جفت آدرسهای IP (برای سرویسگیرنده و سرویسدهنده) میباشد که آنها نیز به آسانی بهدست خواهند آمد".
آسیبپذیری پیادهسازیTCP (CVE-2016-5696) میتواند تعداد زیادی از تجهیزاتی که از سیستمعامل لینوکس استفاده میکنند (از قبیل کامپیوترهای شخصی، گوشیهای موبایل و موارد دیگر) را تحت تأثیر قرار دهد.
محققان اعلام نمودهاند که این حمله میتواند در کمتر از یک دقیقه انجام پذیرد و بنا به تجربه آنها افراد متخصص در حوزه امنیت و یا دانشگاهیان در حدود 88 الی 97 درصد موفق بودهاند.
محققان در مقاله خود نوشتند:
"بهطور خلاصه، این آسیبپذیری امکانی را برای یک مهاجم خارج از مسیر فراهم میآورد تا پی ببرد که آیا هر دو میزبان مورد نظر در اینترنت با استفاده از یک اتصال TCP ارتباط برقرار نمودهاند یا خیر. علاوهبراین در صورتیکه اتصال وجود داشته باشد، این مهاجم خارج از مسیر میتواند Sequence Number مورد استفاده در TCP را برای هر دو طرف ارتباط استنباط نماید. این مورد به نوبه خود به مهاجم اجازه میدهد تا ارتباط را خاتمه داده و حملات تزریق داده را انجام دهد".
"معمولاً پروتکل TCP پیامها را به تعدادی بسته با شمارههای ترتیب خاص تبدیل میکند و به سمت گیرنده ارسال مینماید. پس از آن در سمت گیرنده بستهها با توجه به شمارهها به یکدیگر متصل شده و پیام اصلی بازیابی میشود".
محققان دریافتهاند که با استفاده از حملات side channel میتوان شماره بستههای TCP را در۱۰ ثانیه اول ارتباط فقط با داشتن آدرس IP طرفین ارتباط حدس زد. این کار بدین معنی است که بدون اجرای حمله مردی در میان میتوان بستههای TCP را شنود و یا تزریق کرد. از این جهت حملات احتمالی ناشی از این اشکال از سوی پژوهشگران یک حمله مردی در میان محسوب نمیشود، چرا که نفوذگر در آن تنها باید بخشهای مخربی را به دوسوی ارتباط ارسال نماید و این امر به راحتی با دانستن نشانی آدرس IP آنها و پورت مقصد به آسانی امکانپذیر است.
محققان در ادامه نوشتهاند که این حملات میتوانند ترافیک به ظاهر رمزگذاری شده از جمله ارتباط میان شبکه Tor را نیز مختل نماید و یا حتی از بین ببرد.
پژوهش جدید انجام شده فرضیات قبلی را زیر سوال برده است، چرا که فرضیات قبلی در این زمینه اذعان میکردند که یک مهاجم بدون قرار گرفتن در یک موقعیت فردی در میان (Man-in-the-Middle) بهراحتی نمیتواند مشخص نماید که آیا هر دو انتهای یک نشست از طریق یک اتصال TCP ارتباط برقرار نمودهاند و بنابراین وی نمیتواند ترافیک را سرقت یا دستکاری نماید.
“off-path attack” یا حمله خارج از مسیر میتواند تعیین نمایند که آیا میزبانها در حال استفاده از اتصالات TCP هستند و سپس شماره پورتهای این اتصالات را نیز مشخص مینماید. این حمله به شخص خارج از مسیر اجازه میدهد تا شماره ترتیب TCP یا (TCP Sequences number) را استنباط نماید و سپس اکسپلویتهایی را تزریق کند و یا جریان ترافیک را خاتمه دهد.
محققان نوشتند:
"ما تأکید مینماییم که این حمله صرفاً توسط مهاجم خارج از مسیر که به اصطلاح به آن off the path گفته میشود، بدون اجرای کد بدخواه بر روی ارتباط سرویسگیرنده یا سرویسدهنده قابل انجام است. این حملات در مقیاس وسیع میتواند آثار جدی برامنیت و محرمانگی اینترنت داشته باشد".
محققان اظهار داشتهاند که این مشکل مربوط به پاسخهای چالش آفرین ACK و تحمیل محدودیت نرخ سراسری بر بستههای کنترل TCP است. "در سطح بسیار بالا، این آسیبپذیری به مهاجم اجازه میدهد، رقابتی را بر سر یک منبع مشترک ایجاد نماید؛ یعنی نرخ سراسری شمارنده را در سیستم هدف از طریق ارسال بستههای دستکاری شده محدود مینماید. سپس مهاجم میتواند اثر ایجاد شده بر تغییر شمارنده را که از طریق ردیابی بستهها قابل اندازهگیری است، مشاهده کند".
"از طریق آزمایشهای وسیع نشان داده میشود که این حمله بینهایت مؤثر و قابل اطمینان است. در این شرایط تعیین اینکه آیا دو میزبان در حال برقراری ارتباط هستند، تنها 10 ثانیه طول میکشد. اگر اتصالی وجود داشته باشد، متعاقباً فقط چندتا ده ثانیه طول میکشد تا شماره ترتیبهای TCP بهکار رفته در اتصال تعیین شود".
راه حل
برای خنثی سازی این حملات میبایست حد مربوط به نرخ ACK را در سیستمهای لینوکسی به مقدار بالایی تغییر داد. برای اینکار کافی است که در فایل Sysctl.conf که در شاخه etc میباشد، مقدار رشته زیر اضافه گردد:
net.ipv4.tcp_challenge_ack_limit = 999999999
پس از تغییرات انجام شده، باید قانون جدید ایجاد شده را با دستور زیر فعال نمود:
sysctl -p
یا بهطور کلی از دستور زیر استفاده نمود:
echo 'net.ipv4.tcp_challenge_ack_limit = 999999999' >>/etc/sysctl.conf;sysctl -p