Почему программы уязвимы

Почему программы уязвимы
Уверен, этот вопрос не требует длительного обсуждения. Программное обеспечение уязвимо, потому что люди делают ошибки. Это могут быть как мелкие неточности в коде программ, так и серьезные недоработки на стадии дизайна архитектуры программного обеспечения. И прочие, не такие банальные, но в равной степени пагубные причины.

Более интересен вопрос о том, почему одни программы "уязвимее" других.

Наверняка вы знакомы с некоторыми мнениями по этому поводу. Например, сторонники open source зачастую настаивают, что ПО с открытым исходным кодом содержит меньше ошибок. Потому, мол, что каждый желающий может своими глазами проверить качество кода и сообщить разработчику об уязвимостях. Да, такая теоретическая возможность существует, но на практике она используется реже, чем хотелось бы. Некоторые результаты, показывают, что количество ошибок "на квадратный метр" в открытом и в проприетарном программном коде статистически особенно не отличается ( PDF ). Еще одно распространенное заблуждение - MacOS безопаснее Windows, потому что в ней меньше ошибок. Как показывает практика, это не совсем так.

Я склонен согласиться с версией, что уязвимость ПО зависит в первую очередь от его распространенности. Посмотрим в глаза реальности, лидеры по количеству обнаруженных уязвимостей у нас кто? Adobe Acrobat Reader, Flash PLayer, Javaи всяческие поделки Microsoft - Office, Internet Explorer и т.д. Это программное обеспечение установлено на боле чем 90% компьютеров в мире. А как выросло число обнаруживаемых дыр в Firefox с ростом его доли на рынке браузеров? Именно распространенность привлекает внимание багхантеров - как благородных, так и злонамеренных. Найдя дыру в популярной программе, хакер может (в зависимости от своей системы ценностей) сообщить о ней открыто, предупредить о ней вендора, продать ее ZDI, продать ее на черном рынке, написать Интернет-червя и захватить мир... В общем, перспективы открываются широченные. А кому интересен баг в экзотической программе, которую даже ее создатель использует от случая к случаю? Когда вокруг так много вкусного?

Широкое распространение программы привлекает к ней внимание исследователей, исследователи находят уязвимости, вендоры эти уязвимости исправляют. Процесс повторяется, пока вендоры не начинают утопать в потоке уязвимостей. Тогда в ход идут SDLC, peer review, static analysisи прочие магические трюки по предотвращению возникновения уязвимостей до выхода программы в свет -- компания-производитель вырабатывает иммунитет. Отличным примером может служить Microsoft Inc. Те, кто наблюдает за индустрией хотя бы года с 2000-го, могут сравнить состояние дел у софтверного гиганта -- тогда и сейчас. Со временем, адаптировавшись в условиях непрекращающегося потока 0-day уязвимостей, компания реформировала процесс разработки, уделили больше времени безопасности, и вуаля -- уступила место лидера Adobe. (Правда, если слухи о слиянии подтвердятся, все может вернуться на круги своя).

Резюмируя: все программы уязвимы одинаково. Ну или почти одинаково. Просто кого-то фаззят, а кого-то игнорируют. Помните, как в анекдоте о Неуловимом Джо. Всем солнечных выходных.
Alt text

Если вам нравится играть в опасную игру, присоединитесь к нам - мы научим вас правилам!

Подписаться

Vlad Styran

информационно. безопасно.*