70% ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒΡŽ Π² Chromium Π²Ρ‹Π·Π²Π°Π½Ρ‹ ошибками ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Chromium ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ 912 опасных ΠΈ критичСских уязвимостСй, выявлСнных Π² ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… выпусках Chrome с 2015 Π³ΠΎΠ΄Π°, ΠΈ ΠΏΡ€ΠΈΡˆΠ»ΠΈ ΠΊ Π²Ρ‹Π²ΠΎΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ 70% ΠΈΠ· Π½ΠΈΡ… Π±Ρ‹Π»ΠΈ Π²Ρ‹Π·Π²Π°Π½Ρ‹ нСбСзопасной Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ (ошибками ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с указатСлями Π² ΠΊΠΎΠ΄Π΅ Π½Π° C/C++). Половина ΠΈΠ· Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ (36.1%) Π²Ρ‹Π·Π²Π°Π½Π° обращСниями ΠΊ Π±ΡƒΡ„Π΅Ρ€Ρƒ послС освобоТдСния связанной с Π½ΠΈΠΌ памяти (use-after-free).

70% ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒΡŽ Π² Chromium Π²Ρ‹Π·Π²Π°Π½Ρ‹ ошибками ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ

ΠŸΡ€ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Chromium Π±Ρ‹Π»ΠΎ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π·Π°Π»ΠΎΠΆΠ΅Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π² ΠΊΠΎΠ΄Π΅ Π½Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ появлСниС ошибок, поэтому большая ставка дСлалась Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ sandbox-изоляции для ограничСния послСдствий проявлСния уязвимостСй. Π’ настоящСС врСмя возмоТности примСнСния Π΄Π°Π½Π½ΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ достигли ΠΏΡ€Π΅Π΄Π΅Π»Π° своих возмоТностСй ΠΈ дальнСйшСС Π΄Ρ€ΠΎΠ±Π»Π΅Π½ΠΈΠ΅ Π½Π° процСссы нСцСлСсообразно с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния потрСблСния рСсурсов.

Для поддСрТания бСзопасности ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ‹ Google Ρ‚Π°ΠΊΠΆΠ΅ примСняСт «ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Π΄Π²ΡƒΡ…«, Π² соотвСтствии с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ любой добавляСмый ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ΄ΠΏΠ°Π΄Π°Ρ‚ΡŒ Π½Π΅ большС, Ρ‡Π΅ΠΌ ΠΏΠΎΠ΄ Π΄Π²Π° условия ΠΈΠ· Ρ‚Ρ€Ρ‘Ρ…: Ρ€Π°Π±ΠΎΡ‚Π° с Π½Π΅ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΌΠΈ Π²Ρ…ΠΎΠ΄Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, использованиС нСбСзопасного языка программирования (C/C++) ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ с ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½Ρ‹ΠΌΠΈ привилСгиями. Из этого ΠΏΡ€Π°Π²ΠΈΠ»Π° слСдуСт, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²Π½Π΅ΡˆΠ½ΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ… Π΄ΠΎΠ»ΠΆΠ΅Π½ Π»ΠΈΠ±ΠΎ Π±Ρ‹Ρ‚ΡŒ ΡƒΡ€Π΅Π·Π°Π½ Π΄ΠΎ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ (ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½), Π»ΠΈΠ±ΠΎ Π±Ρ‹Ρ‚ΡŒ написан Π½Π° бСзопасном языкС программирования.

Для дальнСйшСго усилСния защищённости ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ‹ Π·Π°ΠΏΡƒΡ‰Π΅Π½ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΏΠΎ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΡŽ появлСния ошибок Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ Π² ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Π΅. ВыдСляСтся Ρ‚Ρ€ΠΈ основных ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°: созданиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Π‘++ с функциями для бСзопасной Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ области примСнСния сборщика мусора, ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Ρ… ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² Π·Π°Ρ‰ΠΈΡ‚Ρ‹ MTE (Memory Tagging Extension) ΠΈ написаниС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π½Π° языках, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ (Java, Kotlin, JavaScript, Rust, Swift).

ΠžΠΆΠΈΠ΄Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π° Π±ΡƒΠ΄Π΅Ρ‚ сосрСдоточСна Π² Π΄Π²ΡƒΡ… направлСниях:

  • Π—Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ процСсса Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π° Π‘++, Π½Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅Π΅ Π½Π΅Π³Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ влияния Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ (Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π³Ρ€Π°Π½ΠΈΡ† ΠΈ сборка мусора). ВмСсто raw-ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ прСдлагаСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΊΠΎΠ΄Π΅ Ρ‚ΠΈΠΏ MiraclePtr, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ свСсти эксплуатируСмыС ошибки класса use-after-free ΠΊ Π½Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΌ ΡƒΠ³Ρ€ΠΎΠ·Ρƒ бСзопасности ΠΊΡ€Π°Ρ…Π°ΠΌ, Π±Π΅Π· ΠΎΡ‰ΡƒΡ‚ΠΈΠΌΠΎΠ³ΠΎ Π½Π΅Π³Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ влияния Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ памяти ΠΈ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ.
  • ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ языков, рассчитанных Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ бСзопасной Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ Π²ΠΎ врСмя компиляции (ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π½Π΅Π³Π°Ρ‚ΠΈΠ²Π½ΠΎΠ΅ влияниС Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, свойствСнноС ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°ΠΌ Π²ΠΎ врСмя выполнСния ΠΊΠΎΠ΄Π°, Π½ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚ ΠΊ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ расходам Π½Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡŽ взаимодСйствия ΠΊΠΎΠ΄Π° Π½Π° Π½ΠΎΠ²ΠΎΠΌ языкС с ΠΊΠΎΠ΄ΠΎΠΌ Π½Π° Π‘++).

ИспользованиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ для бСзопасной Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ являСтся Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ простым, Π½ΠΎ ΠΈ ΠΌΠ΅Π½Π΅Π΅ эффСктивным способом. ΠŸΠ΅Ρ€Π΅ΠΏΠΈΡΡ‹Π²Π°Π½ΠΈΠ΅ ΠΆΠ΅ ΠΊΠΎΠ΄Π° Π½Π° Rust оцСниваСтся ΠΊΠ°ΠΊ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ эффСктивный, Π½ΠΎ ΠΈ ΠΎΡ‡Π΅Π½ΡŒ Π΄ΠΎΡ€ΠΎΠ³ΠΎΠΉ ΠΏΡƒΡ‚ΡŒ.

70% ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒΡŽ Π² Chromium Π²Ρ‹Π·Π²Π°Π½Ρ‹ ошибками ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ

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

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ