کشف حفره امنیتی جدی در کتابخانه فشردهسازی Brotli توسط OpenAI
شرکت OpenAI در جریان ارزیابیهای امنیتی داخلی خود، حفرهای امنیتی مهم را در کتابخانه فشردهسازی Brotli کشف کرده است. این کتابخانه که به طور گسترده در پروژههای نرمافزاری مختلف مورد استفاده قرار میگیرد، دارای نقصی است که امکان اجرای از راه دور کد (Remote Code Execution) را فراهم میکند. این بدان معناست که مهاجمان بالقوه میتوانند دستورات خود را بر روی دستگاه هدف اجرا کنند. OpenAI این یافته را به پروژههای تحت تأثیر اطلاع داده و Node.js در میان اولین پروژههایی است که بهروزرسانیهای امنیتی را منتشر کرده است.
جزئیات آسیبپذیری
این آسیبپذیری با شناسه CVE-2026-111497 و نام مستعار “Node2Shell” شناخته میشود. محققان OpenAI این نقص را در مرحله بازگشایی (unsealing) دادههای فشرده شده در دیکودر Brotli شناسایی کردهاند. مشکل به یک خطای نوشتن خارج از محدوده (out-of-bounds write) مربوط میشود که با ورودیهای فشردهشدهای که به صورت مخرب طراحی شدهاند، قابل تحریک است. یک بسته نرمافزاری مخرب میتواند دیکودر را فریب دهد تا دادهها را در حافظهای بنویسد که مجاز به دسترسی به آن نیست. پس از دستیابی به این قابلیت، اجرای کد دلخواه توسط مهاجم، گام بعدی محتمل خواهد بود.
شدت و دامنه تأثیر
این حفره امنیتی با امتیاز بحرانی CVSS 9.2 طبقهبندی شده است که نشاندهنده شدت بالای آن است. این امتیاز بالا معمولاً تیمهای امنیتی را به سرعت به واکنش وامیدارد. دو عامل، این امتیاز را نگرانکنندهتر میکنند: حمله نیازی به احراز هویت ندارد و میتواند هم سمت کلاینت و هم سمت سرور را تحت تأثیر قرار دهد. این بدان معناست که برنامههایی که دادهها را دریافت میکنند و همچنین سرورهایی که دادهها را ارائه میدهند، در معرض خطر هستند.
واکنشها و بهروزرسانیها
پس از کشف، این باگ به چندین پروژه کلیدی گزارش شد و منجر به یک واکنش هماهنگ گردید. Node.js در تاریخ ۲۱ اکتبر ۲۰۲۶، نسخههای بهروزرسانی شده ۲۲.۲۳.۴، ۲۴.۲۲.۱ و ۲۶.۱.۲.۱ را منتشر کرد. این بهروزرسانیها تنها به این یک آسیبپذیری نمیپردازند، بلکه ۹ آسیبپذیری دیگر از جمله چندین مورد دور زدن بررسی نام میزبان TLS را نیز برطرف میکنند.
پروژههای تحت تأثیر دیگر
Node.js تنها پروژه تحت تأثیر نیست. نسخههای Bun پیش از ۱.۴.۴، Envoy و چندین بسته پایتون در PyPI نیز تحت تأثیر این آسیبپذیری قرار دارند. بیشترین میزان در معرض خطر بودن مربوط به برنامههایی است که از تابع fetch()، Express 5 با body-parser استفاده میکنند یا دادههای Brotli غیرقابل اعتماد را مستقیماً بازگشایی میکنند.
وضعیت فعلی و نگرانیها
تا تاریخ ۲۳ اکتبر ۲۰۲۶، هیچ مدرک عمومی مبنی بر سوءاستفاده گسترده از این آسیبپذیری وجود نداشت. با این حال، کد اثبات مفهوم (proof-of-concept) منتشر شده است و محققان Imperva نیز نشان دادهاند که این آسیبپذیری را میتوان به طور قابل اعتمادی علیه نسخههای آسیبپذیر Node.js مورد سوءاستفاده قرار داد.
چالشهای انتشار هماهنگ
یک نکته قابل توجه در جدول زمانی این کشف وجود دارد: رفع ریشهای مشکل در کد منبع Brotli در فوریه ۲۰۲۶ انجام شده بود، اما افشای رسمی آن تا اکتبر ۲۰۲۶ به تعویق افتاد. این تأخیر نشاندهنده یک چالش ساختاری در اکوسیستم متنباز است. بسیاری از برنامهها نسخه اختصاصی خود از Brotli را به جای استفاده از نسخه نصب شده در سیستمعامل، در خود جای میدهند. بنابراین، رفع کتابخانه در سطح اصلی (upstream) تنها گام اول است و هر پروژه باید این تغییر را دریافت، نسخه جدیدی منتشر کند و سپس کاربران را به نصب آن ترغیب نماید. این پویایی، اهمیت افشای هماهنگ را برجسته میسازد؛ گزارش مستقیم باگ به پروژههای پاییندستی مانند Node.js به توسعهدهندگان فرصت آمادهسازی اصلاحات را پیش از انتشار عمومی جزئیات داد.
توصیهها برای تیمهای مهندسی
وظیفه فوری برای تیمهای مهندسی، شناسایی محل استفاده از Brotli در پشته نرمافزاری خود است. این شامل نسخههای بستهبندی شده در محیطهای اجرایی، پراکسیها و وابستگیهای پایتون میشود. تیمهایی که از Node.js استفاده میکنند، باید به نسخههای ۲۲.۲۳.۴، ۲۴.۲۲.۱ یا ۲۶.۱.۲.۱ بهروزرسانی کنند. کاربران Bun که از نسخههای قدیمیتر از ۱.۴.۴ استفاده میکنند، همچنین کاربران Envoy و بستههای PyPI نیز باید نسخههای خود را بررسی کنند. اولویتبندی باید با سرویسهایی باشد که دادههای فشرده را از منابع غیرقابل اعتماد دریافت یا پردازش میکنند.

Leave a Reply