Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° Chromium 912 ΠΎΠΏΠ°ΡΠ½ΠΈ ΠΈ ΠΊΡΠΈΡΠΈΡΠ½ΠΈ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ, ΠΎΡΠΊΡΠΈΡΠΈ Π² ΡΡΠ°Π±ΠΈΠ»Π½ΠΈΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Π½Π° Chrome ΠΎΡ 2015 Π³., ΠΈ ΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅, ΡΠ΅ 70% ΠΎΡ ΡΡΡ
ΡΠ° Π±ΠΈΠ»ΠΈ ΠΏΡΠΈΡΠΈΠ½Π΅Π½ΠΈ ΠΎΡ Π½Π΅Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΠΏΠ°ΠΌΠ΅ΡΡΠ° (Π³ΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ° Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ Π² ΠΊΠΎΠ΄Π° Π½Π° C/C++). ΠΠΎΠ»ΠΎΠ²ΠΈΠ½Π°ΡΠ° ΠΎΡ ΡΠ΅Π·ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ (36.1%) ΡΠ° ΠΏΡΠΈΡΠΈΠ½Π΅Π½ΠΈ ΠΎΡ Π΄ΠΎΡΡΡΠΏΠΈ Π΄ΠΎ Π±ΡΡΠ΅ΡΠ° ΡΠ»Π΅Π΄ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ²ΡΡΠ·Π°Π½Π°ΡΠ° Ρ Π½Π΅Π³ΠΎ ΠΏΠ°ΠΌΠ΅Ρ (use-after-free).
ΠΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Chromium ΠΏΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΎ , ΡΠ΅ Π² ΠΊΠΎΠ΄Π° Π½Π΅ ΡΠ΅ ΠΈΠ·ΠΊΠ»ΡΡΠ²Π° ΠΏΠΎΡΠ²Π°ΡΠ° Π½Π° Π³ΡΠ΅ΡΠΊΠΈ, Π·Π°ΡΠΎΠ²Π° Π³ΠΎΠ»ΡΠΌ Π°ΠΊΡΠ΅Π½Ρ Π΅ ΠΏΠΎΡΡΠ°Π²Π΅Π½ Π½Π° ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ΡΠΎ Π½Π° sandbox-ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ Π·Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΡΡΠ° ΠΎΡ ΠΏΡΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈΡΠ΅. Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π·Π° ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° ΡΠ°Π·ΠΈ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ Π΄ΠΎΡΡΠΈΠ³Π½Π°Ρ Π° ΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ Π½Π° ΡΠ²ΠΎΠΈΡΠ΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΈ ΠΏΠΎ-Π½Π°ΡΠ°ΡΡΡΠ½ΠΎΡΠΎ Π΄ΡΠΎΠ±Π΅Π½Π΅ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΈΡΠ΅ Π½Π΅ Π΅ ΡΠ΅Π»Π΅ΡΡΠΎΠ±ΡΠ°Π·Π½ΠΎ ΠΎΡ Π³Π»Π΅Π΄Π½Π° ΡΠΎΡΠΊΠ° Π½Π° ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠ΅ΡΡΡΡΠΈ.
ΠΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½Π΅ Π½Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡΡΠ° Π½Π° ΠΊΠΎΠ΄ΠΎΠ²Π°ΡΠ° Π±Π°Π·Π° Google ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΠΏΡΠΈΠ»Π°Π³Π° "". Π’ΠΎΠ²Π° ΠΏΡΠ°Π²ΠΈΠ»ΠΎ Π³Π»Π°ΡΠΈ, ΡΠ΅ Π²ΡΠ΅ΠΊΠΈ Π΄ΠΎΠ±Π°Π²Π΅Π½ ΠΊΠΎΠ΄ ΡΡΡΠ±Π²Π° Π΄Π° ΠΎΡΠ³ΠΎΠ²Π°ΡΡ Π½Π° Π½Π΅ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ Π΄Π²Π΅ ΠΎΡ ΡΡΠΈΡΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ: ΡΠ°Π±ΠΎΡΠ° Ρ Π½Π΅ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½ΠΈ Π²Ρ ΠΎΠ΄Π½ΠΈ Π΄Π°Π½Π½ΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π½Π΅Π±Π΅Π·ΠΎΠΏΠ°ΡΠ΅Π½ Π΅Π·ΠΈΠΊ Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ (C/C++) ΠΈ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Ρ ΠΏΠΎΠ²ΠΈΡΠ΅Π½ΠΈ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ. ΠΡ ΡΠΎΠ²Π° ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΡΠ»Π΅Π΄Π²Π°, ΡΠ΅ ΠΊΠΎΠ΄ΡΡ Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π²ΡΠ½ΡΠ½ΠΈ Π΄Π°Π½Π½ΠΈ ΡΡΡΠ±Π²Π° ΠΈΠ»ΠΈ Π΄Π° Π±ΡΠ΄Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ Π΄ΠΎ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ (ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½), ΠΈΠ»ΠΈ Π΄Π° Π±ΡΠ΄Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ΅Π½ Π΅Π·ΠΈΠΊ Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅.
ΠΠ° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ ΡΡΠΈΠ»Π²Π°Π½Π΅ Π½Π° Π·Π°ΡΠΈΡΠ°ΡΠ° Π½Π° ΠΊΠΎΠ΄ΠΎΠ²Π°ΡΠ° Π±Π°Π·Π° Π΅ ΡΡΠ°ΡΡΠΈΡΠ°Π½ ΠΏΡΠΎΠ΅ΠΊΡ Π·Π° ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠΎΡΠ²Π°ΡΠ° Π½Π° Π³ΡΠ΅ΡΠΊΠΈ Π² ΡΠ°Π±ΠΎΡΠ°ΡΠ° Ρ ΠΏΠ°ΠΌΠ΅ΡΡΠ° Π² ΠΊΠΎΠ΄ΠΎΠ²Π°ΡΠ° Π±Π°Π·Π°. ΠΠ·Π²Π΅ΠΆΠ΄Π°Ρ ΡΠ΅ ΡΡΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π°: ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° C++ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Ρ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΠΏΠ°ΠΌΠ΅ΡΡΠ° ΠΈ ΡΠ°Π·ΡΠΈΡΡΠ²Π°Π½Π΅ Π½Π° ΠΎΠ±Ρ Π²Π°ΡΠ° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° ΡΠ±ΠΎΡΡΠΈΠΊΠ° Π½Π° Π±ΠΎΠΊΠ»ΡΠΊ, ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° Ρ Π°ΡΠ΄ΡΠ΅ΡΠ½ΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΈ Π·Π° Π·Π°ΡΠΈΡΠ° (Memory Tagging Extension) ΠΈ ΠΏΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π½Π° Π΅Π·ΠΈΡΠΈ, ΠΎΡΠΈΠ³ΡΡΡΠ²Π°ΡΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΠΏΠ°ΠΌΠ΅ΡΡΠ° (Java, Kotlin, JavaScript, Rust, Swift).
ΠΡΠ°ΠΊΠ²Π° ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π΄Π° Π±ΡΠ΄Π΅ ΡΡΡΡΠ΅Π΄ΠΎΡΠΎΡΠ΅Π½Π° Π² Π΄Π²Π΅ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ:
- Π‘ΡΡΠ΅ΡΡΠ²Π΅Π½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° C++, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΠΈΠ·ΠΊΠ»ΡΡΠ²Π°Ρ Π½Π΅Π³Π°ΡΠΈΠ²Π½ΠΎ Π²Π»ΠΈΡΠ½ΠΈΠ΅ Π²ΡΡΡ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° (Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π½Π° Π³ΡΠ°Π½ΠΈΡΠΈ ΠΈ ΡΡΠ±ΠΈΡΠ°Π½Π΅ Π½Π° Π±ΠΎΠΊΠ»ΡΠΊΠ°). ΠΠΌΠ΅ΡΡΠΎ raw-ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ ΡΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π° Π² ΠΊΠΎΠ΄Π° Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠΈΠΏΡΡ , ΠΊΠΎΠΉΡΠΎ Π΄Π° Π½Π°ΠΌΠ°Π»ΠΈ Π΅ΠΊΡΠΏΠ»ΠΎΠ°ΡΠΈΡΠ°Π½ΠΈΡΠ΅ Π³ΡΠ΅ΡΠΊΠΈ ΠΎΡ ΠΊΠ»Π°ΡΠ° use-after-free Π΄ΠΎ Π½Π΅ΠΎΠΏΠ°ΡΠ½ΠΈ ΡΡΠΈΠ²ΠΎΠ²Π΅, Π±Π΅Π· ΠΎΡΠ΅Π·Π°Π΅ΠΌΠΎ Π½Π΅Π³Π°ΡΠΈΠ²Π½ΠΎ Π²Π»ΠΈΡΠ½ΠΈΠ΅ Π²ΡΡΡ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ°, ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ ΠΈ ΡΡΠ°Π±ΠΈΠ»Π½ΠΎΡΡΡΠ°.
- ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Π΅Π·ΠΈΡΠΈ, ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ°Π½ΠΈ Π΄Π° ΠΈΠ·Π²ΡΡΡΠ²Π°Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π·Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΠΏΠ°ΠΌΠ΅ΡΡΠ° ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ (ΡΠΎΠ²Π° ΡΠ΅ ΠΈΠ·ΠΊΠ»ΡΡΠΈ Π½Π΅Π³Π°ΡΠΈΠ²Π½ΠΎΡΠΎ Π²Π»ΠΈΡΠ½ΠΈΠ΅ Π²ΡΡΡ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ°, ΠΏΡΠΈΡΡΡΠΎ Π·Π° ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ΄Π°, Π½ΠΎ ΡΠ΅ Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΡΠ°Π·Ρ ΠΎΠ΄ΠΈ Π·Π° ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠ΄Π° Π½Π° Π½ΠΎΠ²ΠΈΡ Π΅Π·ΠΈΠΊ Ρ ΠΊΠΎΠ΄Π° Π½Π° C++).
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π·Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΠΏΠ°ΠΌΠ΅ΡΡΠ° Π΅ Π½Π°ΠΉ-ΠΏΡΠΎΡΡΠΈΡΡ, Π½ΠΎ ΠΈ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π΅Π½ ΠΌΠ΅ΡΠΎΠ΄. ΠΡΠ΅Π½Π°ΠΏΠΈΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠ΄Π° Π½Π° Rust ΡΠ΅ ΠΎΡΠ΅Π½ΡΠ²Π° ΠΊΠ°ΡΠΎ Π½Π°ΠΉ-Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΈΡ, Π½ΠΎ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΊΡΠΏ ΠΏΡΡ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
