ویرگول
ورودثبت نام
میلاد جعفری
میلاد جعفری
میلاد جعفری
میلاد جعفری
خواندن ۱ دقیقه·۳ ماه پیش

آسیب‌پذیری در Angular SSR: نشت داده به دلیل Race Condition در Platform Injector

در نسخه‌های خاصی از Angular SSR، یک آسیب‌پذیری امنیتی کشف شده که می‌تواند باعث نشت داده بین درخواست‌های هم‌زمان شود. این مشکل به دلیل استفاده از یک متغیر سراسری (global) برای نگهداری وضعیت تزریق وابستگی‌ها (Dependency Injection) در سمت سرور رخ می‌دهد.

جزئیات آسیب‌پذیری

Angular برای نگهداری وضعیت مربوط به هر درخواست در SSR از یک container به نام platform injector استفاده می‌کند. این container به‌صورت یک متغیر سراسری در سطح ماژول جاوااسکریپت تعریف شده بود. در شرایطی که چند درخواست به‌طور هم‌زمان پردازش شوند، این متغیر می‌تواند به اشتباه بین درخواست‌ها به اشتراک گذاشته شود یا بازنویسی شود. نتیجه‌ی این رفتار، ارسال داده‌های مربوط به یک درخواست در پاسخ به درخواست دیگر است—که می‌تواند شامل اطلاعات حساس یا توکن‌ها باشد.

نسخه‌های آسیب‌پذیر

ماژول‌های زیر تحت تأثیر قرار گرفته‌اند:

  • @angular/platform-server: نسخه‌های 16.0.0 تا قبل از 18.2.14، 19.0.0 تا قبل از 19.2.15، 20.0.0 تا قبل از 20.3.0، و 21.0.0 تا قبل از 21.0.0-next.3

  • @angular/ssr: نسخه‌های مشابه با بالا

  • @nguniversal/common: نسخه‌های 16.0.0 تا 16.2.0

راه‌حل‌ها و اصلاحات

Angular تغییراتی در APIهای SSR اعمال کرده تا از بروز این مشکل جلوگیری شود:

  • تابع bootstrapApplication اکنون نیاز به آرگومان جدیدی به نام BootstrapContext دارد.

  • توابع getPlatform و destroyPlatform در محیط سرور دیگر رفتار قبلی را ندارند و به‌صورت امن بازنویسی شده‌اند.

  • برای پروژه‌هایی که از CommonEngine استفاده می‌کنند، آرگومان context به تنظیمات bootstrap اضافه شده است.

برای اعمال اصلاحات، می‌توان از دستور ng update استفاده کرد. به‌عنوان مثال:

ng update @angular/cli @angular/core

یا برای نسخه‌های خاص:

ng update @angular/core@19 --name add-bootstrap-context-to-server-main

اقدامات پیشگیرانه

  • غیرفعال‌سازی SSR در مسیرهای سرور یا تنظیمات builder

  • حذف رفتارهای ناهمگام در توابع bootstrap سفارشی

  • عدم استفاده از getPlatform() در کد برنامه

  • اطمینان از اینکه ngJitMode در ساخت سرور برابر false باشد

شدت آسیب‌پذیری

این آسیب‌پذیری با امتیاز 7.1 از 10 در سیستم CVSS طبقه‌بندی شده و در دسته‌ی «شدید» قرار می‌گیرد.

لینک منبع:

Angular SSR: Global Platform Injector Race Condition Leads to Cross-Request Data Leakage · Advisory · angular/angular

۱
۰
میلاد جعفری
میلاد جعفری
شاید از این پست‌ها خوشتان بیاید