آسیبپذیری بحرانی Fastjson 1.x به مهاجمان امکان اجرای کد در برنامههای Spring Boot را میدهد؛ بدون وصله رسمی

یک آسیبپذیری بحرانی اجرای کد از راه دور در Fastjson 1.x، کتابخانه سریالسازی JSON پرکاربرد علیبابا (Alibaba) برای جاوا، به گزارش The Hacker News، به طور فعال در محیط واقعی در حال بهرهبرداری است. این نقص که با شناسه CVE-2026-16723 ردیابی میشود و امتیاز CVSS آن ۹.۰ است، نسخههای Fastjson ۱.۲.۶۸ تا ۱.۲.۸۳ را تحت تأثیر قرار میدهد و به مهاجم اجازه میدهد کد دلخواه را با مجوزهای فرآیند جاوا اجرا کند – بدون احراز هویت، بدون نیاز به فعال بودن ویژگی AutoType در Fastjson و بدون اتکا به کلاسهای گجت شخص ثالث که بهرهبرداریهای پیشین Fastjson معمولاً به آنها نیاز داشتند.
نحوه عملکرد زنجیره بهرهبرداری
این آسیبپذیری برنامههای Spring Boot را هدف قرار میدهد که به صورت «fat-JAR»های قابل اجرا مستقر شدهاند – فرمت JAR خودکفا و همهکاره که Spring Boot معمولاً برای استقرار (deployment) تولید میکند. این بهرهبرداری روی نسخههای Spring Boot 2.x، 3.x و 4.x و همچنین نسخههای JDK 8، 11، 17 و 21 تأیید شده است که اکثریت قریب به اتفاق تیمهای جاوا را که هنوز از Fastjson 1.x در تولید استفاده میکنند، پوشش میدهد.
حمله به این صورت است که یک درخواست JSON دستکاریشده حاوی یک مقدار @type تغییر یافته ارسال میشود که منطق تفکیک نوع Fastjson را برای انجام جستجوی منبع کلاس (class-resource lookup) تحریک میکند. درون یک fat-JAR سازگار Spring Boot، یک مسیر JAR تودرتو (nested JAR path) که به طور خاص ساخته شده میتواند سپس بایتکد تحت کنترل مهاجم را واکشی کند. یک حاشیهنویسی @JSONType در آن منبع توسط Fastjson به عنوان نشانهای از اعتماد در نظر گرفته میشود و به کلاس مخرب اجازه میدهد تا از تمام موانع بررسی نوع Fastjson عبور کرده و در برنامه در حال اجرا بارگذاری شود. از آنجا که این بهرهبرداری تحت پیکربندی پیشفرض Fastjson کار میکند – SafeMode به طور پیشفرض خاموش است – هر سرویس Spring Boot که وصله نشده و در معرض اینترنت است و از نسخه Fastjson آسیبپذیر استفاده میکند، بدون نیاز به هیچ پیکربندی خاصی از سوی مهاجم، بالقوه قابل بهرهبرداری است.
بدون وصله، اما راهکارهای کاهش خطر وجود دارد
تا تاریخ ۲۵ ژوئیه ۲۰۲۶، علیبابا وصله رسمی خاصی برای شاخه Fastjson 1.x منتشر نکرده است. تیمهای امنیتی در این فاصله سه گزینه عملی دارند. اولین گزینه فعالسازی مستقیم SafeMode از طریق ویژگی سیستمی -Dfastjson.parser.safeMode=true است که رفتار تفکیک نوع مورد نیاز بهرهبرداری را مسدود میکند. دومین گزینه تغییر به بسته خاص com.alibaba:fastjson:1.2.83_noneautotype است که قابلیتهای AutoType را به طور کامل حذف میکند. سومین گزینه، و گزینهای که علیبابا به عنوان راهحل بلندمدت توصیه میکند، مهاجرت از Fastjson 1.x به Fastjson2، کتابخانه جانشینی است که به طور فعال نگهداری میشود.
چه چیزی تحت تأثیر قرار نمیگیرد
زنجیره بهرهبرداری خاص به فرمت استقرار fat-JAR نیاز دارد که Spring Boot به طور پیشفرض از آن استفاده میکند – JARهای ساده غیر-fat، uber-JARهای عمومی ساخته شده با ابزارهایی مانند Maven Shade و برنامههایی که به صورت فایلهای WAR درون Tomcat یا Jetty مستقر شدهاند در برابر این مسیر حمله خاص آسیبپذیر نیستند، زیرا آنها جستجوی منبع کلاس در JAR تودرتو که بهرهبرداری به آن وابسته است را در معرض قرار نمیدهند. این امر دامنه تحت تأثیر را محدود میکند اما خطر را از بین نمیبرد: استقرار fat-JAR انتخاب پیشفرض و رایجترین روش بستهبندی برای برنامههای Spring Boot است، دقیقاً به این دلیل که استقرار را به یک فایل اجرایی واحد سادهسازی میکند.
چرا این موضوع فراتر از یک کتابخانه اهمیت دارد
Fastjson سابقه طولانی از آسیبپذیریهای جدی عدمسریالسازی (deserialization) دارد که به حدود یک دهه پیش بازمیگردد و Fastjson 1.x علیرغم توصیه خود علیبابا برای مهاجرت به Fastjson2، همچنان به طور گسترده در سیستمهای جاوا در سطح تولید مستقر است. سازمانهایی که از استقرار fat-JAR Spring Boot با Fastjson 1.x در محدوده 1.2.68 تا 1.2.83 استفاده میکنند، باید این موضوع را یک اولویت وصلهگذاری اضطراری در نظر بگیرند: بلافاصله SafeMode را به عنوان یک راهحل موقت فعال کنند و مهاجرت به Fastjson2 را به جای اختیاری، فوری تلقی کنند، زیرا تصمیم علیبابا برای وصله نکردن شاخه 1.x نشان میدهد که آسیبپذیریهای آینده در این خط نیز احتمالاً برطرف نخواهند شد.
Originally reported by The Hacker News. Read the original article for additional details.
View original source