کمیته رکن چهارم – آسیبپذیری بحرانی در محصولات JENKINS شناسایی شده است که روی برخی نسخههای نرمافزار Eclipse Jetty اثر میگذارد.
این آسیبپذیری بحرانی با شناسه CVE-۲۰۱۹-۱۷۶۳۸ و شدت ۹.۴ شناخته میشود و بر نرمافزار Eclipse Jetty نسخههای ۹.۴.۲۷.v۲۰۲۰۰۲۲۷ تا ۹.۴.۲۹.v۲۰۲۰۰۵۲۱ اثر میگذارد.
Jenkins که از طریق یک رابط خط فرمان به نام Winstone از Jetty استفاده میکند به عنوان سرور HTTP و servlet در هنگام استفاده از java -jar jenkins.war عمل میکند. بدینترتیب Jenkins هنگام استفاده از هریک از نصبکنندهها یا بستهها اجرا میشود، اما هنگام استفاده از Servlet Container مانند Tomcat، اجرا نخواهد شد. این آسیبپذیری ممکن است به یک مهاجم بدون نیاز به احراز هویت امکان دسترسی به سرآیندهای مربوط به پاسخ HTTP که ممکن است حاوی اطلاعات حساسی باشند، فراهم میکند. به نظر میرسد این نقض که بر Jetty و هسته Jenkins تأثیر میگذارد در Jetty نسخه ۹.۴.۲۷ نیز وجود داشته است که مکانیزمی برای کنترل سرآیندهای بزرگ پاسخ HTTP و جلوگیری از سرریز بافر به آن اضافه شده است.
برای رفع این مشکل، Jetty جهت تولید خطای HTTP ۴۳۱، سرآیند پاسخ HTTP را دو بار به داخل بافر وارد میکند که این مسئله منجر به memory corruption و افشای اطلاعات خواهد شد. به دلیل این نوع انتشار دوگانه، دو thread میتوانند همزمان یک بافر را از مخزن بدست آورند و باعث میشود یک درخواست، به پاسخ درخواست داده شده توسط thread دیگر دسترسی داشته باشد که این پاسخ ممکن است شامل شناسه نشستها، اعتبارنامههای احراز هویت و سایر اطلاعات حساس باشد.
هنگامی که thread اول قصد دارد از ByteBuffer برای نوشتن دادههای پاسخ ۱ استفاده کند، thread دوم، ByteBuffer را با دادههای پاسخ پر میکند. سپس thread اول نوشتن بافر که اکنون حاوی دادههای پاسخ۲ است را جهت مشاهده پاسخ که میتواند حاوی دادههای حساس متعلق به کلاینت دوم باشد، ادامه میدهد.
memory corruption این امکان را برای کلاینت فراهم میکند که بین نشستها حرکت کند و از این طریق به حسابهای کاربری دیگر دسترسی داشته باشد، زیرا کوکیهای احراز هویت از پاسخ یک کاربر به یک کاربر دیگر ارسال شده است و کاربر A میتواند در جلسه کاربر B پرش کند.
این آسیبپذیری که در ماه گذشته در Jetty ۹.۴.۳۰.v۲۰۲۰۰۶۱۱ منتشر شده بود، وصله شد. Jenkins این نقص را در برنامههای خود در Jenkins ۲.۲۴۳ و Jenkins LTS ۲.۲۳۵.۵ وصله کرده است. به کاربران Jenkins توصیه میشود به منظور کاهش نقض corruption در بافر، هرچه سریعتر نرمافزار خود را به آخرین نسخه بهروزرسانی کنند.