ΠžΡ†Π΅Π½ΠΊΠ° эффСктивности примСнСния MiraclePtr для прСдотвращСния уязвимостСй Π² Chrome

Компания Google ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π»Π° ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ использования Π² ΠΊΠΎΠ΄Π΅ Π½Π° языкС Π‘++ Ρ‚ΠΈΠΏΠ° MiraclePtr (raw_ptr<T>) вмСсто ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ уязвимостСй, Π²Ρ‹Π·Π²Π°Π½Π½Ρ‹Ρ… ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ΠΌ ΠΊ ΡƒΠΆΠ΅ освобоТдённым областям памяти (use-after-free). MiraclePtr прСдоставляСт обвязку Π½Π°Π΄ указатСлями, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΡƒΡŽ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΈ Π°Π²Π°Ρ€ΠΈΠΉΠ½ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‰ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π² случаС обнаруТСния обращСния ΠΊ освобоТдённым областям памяти. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° MiraclePtr Π±Ρ‹Π»Π° Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ… Windows ΠΈ Android Π² ΠΌΠ°Π΅ 2022 Π³ΠΎΠ΄Π° (Π² Chrome 102), Π° Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ… ChromeOS, Linux ΠΈ macOS Π² июнС 2023 Π³ΠΎΠ΄Π°. Π—Π°Ρ‰ΠΈΡ‚Π° Π½Π° Π±Π°Π·Π΅ MiraclePtr Π² Chrome примСняСтся для всСх процСссов, ΠΊΡ€ΠΎΠΌΠ΅ процСсса, ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰Π΅Π³ΠΎ Π·Π° отрисовку (renderer).

ПослС изучСния Π΄ΠΈΠ½Π°ΠΌΠΈΠΊΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ΠΎΡ‚Ρ‡Ρ‘Ρ‚ΠΎΠ² ΠΎΠ± уязвимостях ΠΈ Π°Π²Π°Ρ€ΠΈΠΉΠ½Ρ‹Ρ… Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡΡ… Ρ€Π°Π±ΠΎΡ‚Ρ‹, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π·Π±ΠΎΡ€Π° связанных с Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚ΠΎΠ² ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² fuzzing-тСстирования, Π±Ρ‹Π» сдСлан Π²Ρ‹Π²ΠΎΠ΄, Ρ‡Ρ‚ΠΎ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ MiraclePtr прСдоставило Π·Π°Ρ‰ΠΈΡ‚Ρƒ ΠΎΡ‚ 57% уязвимостСй класса use-after-free, благодаря ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρƒ Π½Π° использованиС MiraclePtr ΠΏΠΎΠ»Π΅ΠΉ классов ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² callback-Π²Ρ‹Π·ΠΎΠ²ΠΎΠ². ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, упоминаСтся, Ρ‡Ρ‚ΠΎ 5 ΠΈΠ· 6 выявлСнных Π·Π° ΠΏΡ€ΠΎΡˆΠ»Ρ‹ΠΉ Π³ΠΎΠ΄ критичСских уязвимостСй Π² ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠ΅ Chrome Π±Ρ‹Π»ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ благодаря ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΡŽ ΠΎΡ‚Ρ‡Ρ‘Ρ‚ΠΎΠ² ΠΎΠ± Π°Π²Π°Ρ€ΠΈΠΉΠ½Ρ‹Ρ… Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡΡ…, связанных с использованиСм MiraclePtr.

Π¦Π΅Π½ΠΎΠΉ примСнСния MiraclePtr являСтся ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ потрСблСния памяти, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ для ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ трСбуСтся Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ 4 Π±Π°ΠΉΡ‚Π° со счётчиком ссылок. ΠŸΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ памяти основным процСссом Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° ΠΏΡ€ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ MiraclePtr увСличиваСтся Π½Π° 5.5-8% Π² сборках для Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½Ρ‹Ρ… систСм ΠΈ Π½Π° 2% Π² вСрсии для Android. Π‘Ρ€Π΅Π΄Π½Π΅Π΅ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ потрСблСния для всСх процСссов оцСниваСтся Π² 1-3%. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΡ€ΠΈ использовании MiraclePtr зафиксированы ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ рСгрСссии, приводящиС ΠΊ сниТСнию ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π½ΠΎ Π½Π΅ связанныС с ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌΠΈ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠ°ΠΌΠΈ, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ врСмя Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ отрисовки страницы. Из выявлСнных рСгрСссий отмСчаСтся Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ° Π½Π° 1.5% ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π° Π² Chrome OS, Π·Π°ΠΌΠ΅Π΄Π»Π΅Π½ΠΈΠ΅ Π½Π° 1.5% ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Π²ΠΊΠ»Π°Π΄ΠΎΠΊ Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Android, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ вСроятности Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ Π²Π²ΠΎΠ΄Π° ΠΈΠ·-Π·Π° ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ†ΠΈΠΈ Π² основном ΠΏΠΎΡ‚ΠΎΠΊΠ΅ (ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ вСроятности Π½Π° 10% Π² 99-ΠΎΠΌ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ΠΈΠ»Π΅).

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru