Astro — это веб-фреймворк. До версии 10.0.2 бессерверная точка входа @astrojs/vercel считывает заголовок x-astro-path и параметр запроса x_astro_path, чтобы перезаписать внутренний путь запроса без какой-либо аутентификации. В развертываниях без Edge Middleware это позволяет любому полностью обойти ограничения пути Vercel на уровне платформы.
Переопределение сохраняет исходный метод и тело HTTP, поэтому это не ограничивается GET. ОТПРАВИТЬ, ПОЛОЖИТЬ, УДАЛИТЬ все земли на переписанном пути. Правило брандмауэра, блокирующее /admin/*, ничего не делает, когда запрос поступает как POST /api/health?x_astro_path=/admin/delete-user.
Эта проблема исправлена в версии 10.0.2.
Показать оригинальное описание (EN)
Astro is a web framework. Prior to version 10.0.2, the @astrojs/vercel serverless entrypoint reads the x-astro-path header and x_astro_path query parameter to rewrite the internal request path, with no authentication whatsoever. On deployments without Edge Middleware, this lets anyone bypass Vercel's platform-level path restrictions entirely. The override preserves the original HTTP method and body, so this isn't limited to GET. POST, PUT, DELETE all land on the rewritten path. A Firewall rule blocking /admin/* does nothing when the request comes in as POST /api/health?x_astro_path=/admin/delete-user. This issue has been patched in version 10.0.2.
Характеристики атаки
Последствия
Строка CVSS v3.1
Тип уязвимости (CWE)
Уязвимые продукты 1
| Конфигурация | От (включительно) | До (исключительно) |
|---|---|---|
|
Astro \@Astrojs\/Vercel
cpe:2.3:a:astro:\@astrojs\/vercel:*:*:*:*:*:*:*:*
|
— |
10.0.2
|