CRITICAL🇬🇧 English

CVE-2023-45133

RCE w Babel (@babel/traverse) podczas kompilacji złośliwego kodu JS

CVSS 9.3v3.1pub. 2023-10-12upd. 2024-11-21

Podatność w bibliotece `@babel/traverse` kompilatora Babel umożliwia wykonanie dowolnego kodu (RCE) w trakcie kompilacji JavaScript, jeśli przetwarzany kod został specjalnie spreparowany przez atakującego. Dotyczy wyłącznie scenariuszy kompilacji niezaufanego kodu przy użyciu określonych wtyczek.

Pokaż oryginał (EN)

Babel is a compiler for writingJavaScript. In `@babel/traverse` prior to versions 7.23.2 and 8.0.0-alpha.4 and all versions of `babel-traverse`, using Babel to compile code that was specifically crafted by an attacker can lead to arbitrary code execution during compilation, when using plugins that rely on the `path.evaluate()`or `path.evaluateTruthy()` internal Babel methods. Known affected plugins are `@babel/plugin-transform-runtime`; `@babel/preset-env` when using its `useBuiltIns` option; and any "polyfill provider" plugin that depends on `@babel/helper-define-polyfill-provider`, such as `babel-plugin-polyfill-corejs3`, `babel-plugin-polyfill-corejs2`, `babel-plugin-polyfill-es-shims`, `babel-plugin-polyfill-regenerator`. No other plugins under the `@babel/` namespace are impacted, but third-party plugins might be. Users that only compile trusted code are not impacted. The vulnerability has been fixed in `@babel/traverse@7.23.2` and `@babel/traverse@8.0.0-alpha.4`. Those who cannot upgrade `@babel/traverse` and are using one of the affected packages mentioned above should upgrade them to their latest version to avoid triggering the vulnerable code path in affected `@babel/traverse` versions: `@babel/plugin-transform-runtime` v7.23.2, `@babel/preset-env` v7.23.2, `@babel/helper-define-polyfill-provider` v0.4.3, `babel-plugin-polyfill-corejs2` v0.4.6, `babel-plugin-polyfill-corejs3` v0.8.5, `babel-plugin-polyfill-es-shims` v0.10.0, `babel-plugin-polyfill-regenerator` v0.5.3.

🤖 Analiza AI
Jak działa

Luka wynika z nieprawidłowej listy dozwolonych wartości oraz błędu w logice porównań (CWE-184, CWE-697) w metodach `path.evaluate()` i `path.evaluateTruthy()` biblioteki `@babel/traverse`. Atakujący może spreparować kod JavaScript, który po przetworzeniu przez te metody doprowadza do wykonania arbitralnego kodu w trakcie procesu kompilacji. Podatność jest wyzwalana przez konkretne wtyczki Babel, które wewnętrznie wywołują wspomniane metody, takie jak `@babel/plugin-transform-runtime`, `@babel/preset-env` z opcją `useBuiltIns` oraz wtyczki z rodziny polyfill korzystające z `@babel/helper-define-polyfill-provider`.

Skutki

Atakujący, który może dostarczyć złośliwy kod JavaScript do skompilowania przez podatną konfigurację Babel, może doprowadzić do wykonania arbitralnego kodu na maszynie przeprowadzającej kompilację, co grozi pełnym przejęciem środowiska budowania (CI/CD, stacja deweloperska).

Mitygacja

Należy zaktualizować `@babel/traverse` do wersji 7.23.2 lub 8.0.0-alpha.4. Jeśli aktualizacja `@babel/traverse` nie jest możliwa, należy zaktualizować używane wtyczki do następujących wersji (lub nowszych): `@babel/plugin-transform-runtime` v7.23.2, `@babel/preset-env` v7.23.2, `@babel/helper-define-polyfill-provider` v0.4.3, `babel-plugin-polyfill-corejs2` v0.4.6, `babel-plugin-polyfill-corejs3` v0.8.5, `babel-plugin-polyfill-es-shims` v0.10.0, `babel-plugin-polyfill-regenerator` v0.5.3. Dodatkowo należy unikać kompilowania niezaufanego kodu JavaScript w środowiskach produkcyjnych lub CI/CD.

Kogo dotyczy

`@babel/traverse` w wersjach wcześniejszych niż 7.23.2 oraz 8.0.0-alpha.4, a także wszystkie wersje `babel-traverse`. Podatność ujawnia się przy użyciu następujących wtyczek: `@babel/plugin-transform-runtime` (przed v7.23.2), `@babel/preset-env` z opcją `useBuiltIns` (przed v7.23.2), `@babel/helper-define-polyfill-provider` (przed v0.4.3), `babel-plugin-polyfill-corejs2` (przed v0.4.6), `babel-plugin-polyfill-corejs3` (przed v0.8.5), `babel-plugin-polyfill-es-shims` (przed v0.10.0), `babel-plugin-polyfill-regenerator` (przed v0.5.3). Użytkownicy kompilujący wyłącznie zaufany kod nie są narażeni.

Uwagi

Podatność dotyczy wyłącznie scenariuszy, w których Babel przetwarza kod dostarczony przez niezaufane źródło. Środowiska kompilujące wyłącznie własny, kontrolowany kod nie są narażone na ryzyko. Wtyczki spoza przestrzeni nazw `@babel/` mogą być podatne, jeśli korzystają z metod `path.evaluate()` lub `path.evaluateTruthy()`.

CVSS Vector
CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
  • Babeljs Babel

    APP
    Babeljs
    8.0.0< 7.23.2
  • Babeljs Babel Helper Define Polyfill Provider

    APP
    Babeljs
    < 0.4.3
  • Babeljs Babel Plugin Polyfill Corejs2

    APP
    Babeljs
    < 0.4.6
  • Babeljs Babel Plugin Polyfill Corejs3

    APP
    Babeljs
    < 0.8.5
  • Babeljs Babel Plugin Polyfill Es Shims

    APP
    Babeljs
    < 0.10.0
  • Babeljs Babel Plugin Polyfill Regenerator

    APP
    Babeljs
    < 0.5.3
  • Babeljs Babel Plugin Transform Runtime

    APP
    Babeljs
    < 7.23.2
  • Babeljs Babel Preset Env

    APP
    Babeljs
    < 7.23.2
  • Debian

    OS
    Debian
    10.011.012.0
🔵
ZWERYFIKUJ U PRODUCENTA
Brak jednoznacznych danych o patchu. Sprawdź referencje od producenta.
Tagi
RCE
CWE
Referencje

Powiązane podatności

CVE-2026-24061CRITICAL9.8⚠ KEVPL ✓ten sam produkt

GNU Inetutils telnetd: ominięcie uwierzytelnienia przez zmienną USER

CVE-2025-32463CRITICAL9.3⚠ KEVPL ✓ten sam produkt

Sudo: eskalacja uprawnień do root poprzez opcję --chroot (CVE-2025-32463)

CVE-2025-49113CRITICAL9.9⚠ KEVPL ✓ten sam produkt

RCE przez deserializację PHP w Roundcube Webmail (parametr _from)

CVE-2025-32433CRITICAL10.0⚠ KEVPL ✓ten sam produkt

Erlang/OTP SSH — nieuwierzytelniony RCE (CVSS 10.0)

CVE-2025-24201CRITICAL10.0⚠ KEVPL ✓ten sam produkt

Apple WebKit: out-of-bounds write umożliwiający ucieczkę z sandbox przeglądarki