ΠΠ·ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΏΠΎ ΡΠΈΠ³ΡΡΠ½ΠΎΡΡΡΠ° ΠΎΡ Google ΡΠ° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ°Π»ΠΈ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡ (CVE-2025-38236) Π² ΡΠ΄ΡΠΎΡΠΎ Π½Π° Linux, ΠΊΠΎΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΅ΡΠΊΠ°Π»Π°ΡΠΈΡ Π½Π° ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈΡΠ΅. ΠΡΠ²Π΅Π½ Π²ΡΠΈΡΠΊΠΎ Π΄ΡΡΠ³ΠΎ, ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π·Π°ΠΎΠ±ΠΈΠΊΠ°Π»ΡΠ½Π΅ Π½Π° ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° Π·Π° ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½Π΅ Π² ΠΏΡΡΡΡΠ½ΠΈΠΊ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ Π² Google Chrome, ΠΈ ΠΏΠΎΡΡΠΈΠ³Π°Π½Π΅ Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ΄ Π½Π° Π½ΠΈΠ²ΠΎ ΡΠ΄ΡΠΎ ΠΏΡΠΈ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ΄ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π½Π° ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½ ΠΏΡΠΎΡΠ΅Ρ Π½Π° ΡΠ΅Π½Π΄ΠΈΡΠ°Π½Π΅ Π½Π° Chrome (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠΈ Π΅ΠΊΡΠΏΠ»ΠΎΠ°ΡΠΈΡΠ°Π½Π΅ Π½Π° Π΄ΡΡΠ³Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡ Π² Chrome). ΠΡΠΎΠ±Π»Π΅ΠΌΡΡ ΡΠ΅ ΠΏΠΎΡΠ²ΡΠ²Π°, Π·Π°ΠΏΠΎΡΠ²Π°ΠΉΠΊΠΈ Ρ ΡΠ΄ΡΠΎΡΠΎ Π½Π° Linux Π²Π΅ΡΡΠΈΡ 6.9 ΠΈ Π΅ ΠΎΡΡΡΡΠ°Π½Π΅Π½ Π² Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈΡΠ΅ Π½Π° ΡΠ΄ΡΠΎΡΠΎ Π½Π° Linux 6.1.143, 6.6.96, 6.12.36 ΠΈ 6.15.5. ΠΡΠΎΡΠΎΡΠΈΠΏ Π½Π° Π΅ΠΊΡΠΏΠ»ΠΎΠΉΡΠ° Π΅ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π·Π° ΠΈΠ·ΡΠ΅Π³Π»ΡΠ½Π΅.
Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡΡΠ° Π΅ ΠΏΡΠΈΡΠΈΠ½Π΅Π½Π° ΠΎΡ Π³ΡΠ΅ΡΠΊΠ° Π² ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ° Π½Π° ΡΠ»Π°Π³Π° MSG_OOB, ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π·Π°Π΄Π°Π΄Π΅Π½ Π·Π° AF_UNIX ΡΠΎΠΊΠ΅ΡΠΈ. Π€Π»Π°Π³ΡΡ MSG_OOB (βΠΈΠ·Π²ΡΠ½ ΠΎΠ±Ρ Π²Π°ΡΠ°β) ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΊΡΠΌ ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΡΠΈΠΊΠ°ΡΠ΅Π½ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π΅Π½ Π±Π°ΠΉΡ, ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»ΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡΠΎΡΠ΅ΡΠ΅, ΠΏΡΠ΅Π΄ΠΈ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈ ΠΎΡΡΠ°Π½Π°Π»ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ. Π’ΠΎΠ·ΠΈ ΡΠ»Π°Π³ Π±Π΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ Π² ΡΠ΄ΡΠΎΡΠΎ Π½Π° Linux 5.15 ΠΏΠΎ ΠΈΡΠΊΠ°Π½Π΅ Π½Π° Oracle ΠΈ Π±Π΅ΡΠ΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ Π·Π° ΠΎΡΡ Π²ΡΡΠ»ΡΠ½Π΅ ΠΌΠΈΠ½Π°Π»Π°ΡΠ° Π³ΠΎΠ΄ΠΈΠ½Π°, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π½Π΅ Π±Π΅ΡΠ΅ ΡΠΈΡΠΎΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½.
ΠΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ° Π½Π° sandbox Π² Chrome ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΡΠ΅ UNIX socket ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡ send()/recv(), ΠΊΡΠ΄Π΅ΡΠΎ ΡΠ»Π°Π³ΡΡ MSG_OOB Π±Π΅ΡΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ Π·Π°Π΅Π΄Π½ΠΎ Ρ Π΄ΡΡΠ³ΠΈ ΠΎΠΏΡΠΈΠΈ ΠΈ Π½Π΅ Π±Π΅ΡΠ΅ ΡΠΈΠ»ΡΡΠΈΡΠ°Π½ ΠΎΡΠ΄Π΅Π»Π½ΠΎ. ΠΡΠ΅ΡΠΊΠ° Π² ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ° Π½Π° MSG_OOB ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΡΠ΅ Π²ΡΠ·Π½ΠΈΠΊΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ»ΠΎΠ²ΠΈΠ΅ βuse-after-freeβ ΡΠ»Π΅Π΄ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡ ΠΎΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡ: char dummy; int socks[2]; socketpair(AF_UNIX, SOCK_STREAM, 0, socks); send(socks[1], "A", 1, MSG_OOB); recv(socks[0], &dummy, 1, MSG_OOB); send(socks[1], "A", 1, MSG_OOB); recv(socks[0], &dummy, 1, MSG_OOB); send(socks[1], "A", 1, MSG_OOB); recv(socks[0], &dummy, 1, MSG_OOB); send(socks[0], "A", 0, MSG_OOB); recv(socks[1], &dummy, XNUMX, XNUMX); recv(ΡΠΎΡΠ°ΠΏΠΈ[XNUMX], &dummy, XNUMX, MSG_OOB);
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
