Google намерена излечить Chrome от проблем с управлением памятью
Программные инженеры Google ищут пути устранения ошибок, связанных с управлением памятью в Chrome - самом популярном веб-браузере, используемом двумя из каждых трех "серферов" Интернета.
На прошлой неделе компания сообщила, что на проблемы такого типа приходится примерно 70% всех серьезных уязвимостей в кодовой базе Chrome. Эту цифру инженеры Google получили, проанализировав 912 багов "высокой" и "критической" серьезности, которые были исправлены в стабильных релизах Chrome c 2015 года. С марта прошлого года 125 из 130 критических ошибок в этом браузере относились к проблемам повреждения памяти.
Проблемы некорректной работы с памятью в большинстве своем проистекают от использования в разработке языков C и C++. Эти доминирующие инструменты программирования были созданы в те древние времена, когда недочеты безопасности приложений еще никто всерьез не рассматривал как фактор риска. Поэтому C и C++ предоставляют программистам полный контроль над указателями (адресами) памяти. В обоих этих языках не предусмотрены предупреждения или ограничения, которые не позволяли бы совершать хотя бы основные ошибки в управлении памятью.
Такие ранние ошибки кодирования приводят к появлению в программном обеспечении целого букета уязвимостей управления памятью, таких как использование после освобождения (use-after-free), переполнение буфера (buffer overflow), висячие указатели (wild pointers), состояния гонки (race conditions), попытки двойного освобождения ячейки (double free) и другие.
Баги управления памятью наиболее привлекательны для хакеров, так как они дают возможность внедрить свой код в память устройства и заставить приложение (браузер, сервер или ОС) его выполнять.
В начале года корпорация MITRE, контролирующая в США правительственную базу уязвимостей, присудила переполнению буфера рейтинг самой опасной ошибки. На пятом месте - чтение за пределами выделенного буфера (out-of-bounds read) и на 7 - использование после освобождения.
Google в прошлую пятницу сообщила о планах наконец разобраться с вопросами безопасности памяти для Chrome.
Инженеры компании заявили, что изолирование процессов и ресурсов веб-сайтов в отдельных "песочницах", массово применявшиеся в Chrome до последнего времени, исчерпало свою полезность, и нужно искать новые пути.
В дальнейшем Google планирует заняться разработкой специализированных библиотек C++ для использования с кодовой базой Chrome - таких, которые имеют лучшую защиту от ошибок, связанных с памятью.
Производитель браузера также изучает проект MiraclePtr, целью которого является превращение критических уязвимостей use-after-free в неопасные сбои с минимальным ущербом для производительности и стабильности.
И напоследок, компания заявила, что, по примеру Microsoft, Mozilla и прочих, планирует везде, где только возможно применять "безопасные" языки программирования. Среди рассматриваемых кандидатов - Rust, Swift, JavaScript, Kotlin и Java.