Можно ли справиться с уязвимостями в программном обеспечении?

Бизнес

Вот еще один риторический вопрос кибербезопасности. Можно ли победить то, что существует столько же, сколько и само программное обеспечение?

В компьютерной безопасности в целом «уязвимостью» называется слабое место, которое позволяет злоумышленнику снизить уровень достоверности информации системы. Сочетаются три элемента: восприимчивость или недостаток системы, доступ злоумышленника к бреши и возможность злоумышленника ей воспользоваться. Что касается программного обеспечения, то «ошибка» в нем есть неисправность, заставляющая его выдавать неверный или неожиданный результат либо провоцирующая на непреднамеренное поведение (для своих разработчиков и пользователей). Другими словами, уязвимое программное обеспечение обычно работает исправно, но когда к нему подступают «иным образом» (т.е. со злым умыслом и соответствующими инструментами), может случиться всякое. И случается.

Если бы не ошибки, то распространение вирусов, троянов, несанкционированных бэкдоров и рост ботнетов осложнились бы существенно. Так что уместно говорить, что ошибки являются основой проблем информационной безопасности. Или, по крайней мере, одной из них. Потому что, кроме уязвимостей в программном обеспечении, всегда есть «человеческий фактор» и возможность использовать социальную инженерию, для того чтобы проникнуть даже в самую защищенную систему.

В «идеальном мире» от неуязвимого программного обеспечения индустрия информационной безопасности выглядела бы совсем по-другому, и, скорее всего, была бы гораздо меньшей, чем сегодня. На самом деле это классическая дилемма: если бы не было войны, не было бы потребности в армии; если бы не было преступлений, не нужна была бы полиция. Не будь заболеваний, и доктора ни к чему. Однако есть и войны, и преступления, и болезни, поэтому есть военные, полицейские и врачи. Все они тоже ошибаются, а порой и совершают преступления.

wide

Уязвимости в программном обеспечении наиболее сопоставимы с заболеваниями, или если точнее, с предрасположенностью к болезням (так что эксперты по безопасности подобны врачам). В живом организме в одних случаях предрасположенность определяется генетически, в других является следствием родовой травмы и/или загрязненной окружающей среды.

А что порождает недостатки в программном обеспечении? Как правило, уязвимости — результаты ошибок разработчиков, недостаточного контроля качества и/или прямо неверного подхода к написанию кода, когда программа пишется с первого же дня без оглядки на безопасность. Позднее могут выходить ворохи патчей, от которых размер оригинального пакета вырастает раза в два, а баги все продолжают и продолжают находить. Просто потому, что программное обеспечение «генетически» уязвимо.

В некоторых религиозных сектах отвергают помощь медицины, провозглашая болезни наказанием свыше. Интересно было бы взглянуть на их «коллег» в киберпространстве, однако вряд ли их существование возможно, хоть это был бы и крутой поворот сюжета в киберпанке.

Так можно ли полностью изжить баги?

Да, конечно, как только древняя максима errare humanum est изживет себя и перестанет быть применима в отношении человечества. Как скоро это произойдет?

На самом деле, всегда есть соблазн возложить вину на разработчиков, то есть тех, кто ошибается в написании кода. Время от времени раздаются «требования» привлечь разработчиков к ответственности за ошибки, которые они не смогли исправить до того, как программное обеспечение поступило в продажу. Но программные уязвимости – это, скорее, организационная проблема, которая имеет мало общего с квалификацией программистов. Кроме того, некоторые ошибки могут оставаться «вне поля зрения» несколько лет, как показали случаи с #heartbleed, багом Stuxnet и, вот буквально только что — с брешью Bash Bug/Shellshock, которая «кошмарит» специалистов ничуть не меньше, а то и больше, чем обнаруженная в апреле многолетняя дыра в OpenSSL. Ни разработчики, ни конечные пользователи не знали о них ничего, пока эти уязвимости не обнаружили эксперты по безопасности или преступники. Так что вопрос о том, кто виноват, интересен, но, в конечном счете, не уместен. Скажем, мало, что можно сделать, чтобы полностью извести ошибки в программном обеспечении, это, очевидно, просто невозможно.

Тем не менее, «оглядка на безопасность», хороший контроль качества и ответственное обращение с новооткрытыми изъянами могут резко уменьшить проблемы, снижая восприимчивость систем к вредоносным программам и прочим попыткам использовать их злонамеренно. Под «ответственным обращением» мы понимаем просто адекватную реакцию на сообщения об ошибках и быстрый выпуск патчей. Сегодня у большинства разработчиков программного обеспечения присутствуют багтрекинг и инструменты сообщения о найденных ошибках. Без них все было бы гораздо хуже. Это нечто вроде профилактики простуды, гриппа и других заболеваний, которая помогает нам сохранить здоровье даже в плохую погоду и в переполненном общественном транспорте, где особенно легко простудиться или подхватить некоторые другие заболевания, распространяющиеся воздушно-капельным путем.

А предприятия и конечные пользователи должны использовать защитные решения, потому что, да, в программном обеспечении бывают уязвимости, которыми пользуются злоумышленники и вредоносные программы, и, к сожалению, они никуда скоро не исчезнут.

Каковы требования предъявляются к эффективному корпоративному решению безопасности, чтобы оно справлялось с уязвимостями? Прежде всего, решение должно уметь выявлять уязвимые программы, предлагать для них обновления или даже обновлять их автоматически. Конечно, это должно происходить автоматически у всех конечных пользователей. Это особенно важно на уровне предприятий, когда ИТ-отделы вынуждены иметь дело с сотнями (если не тысячами) конечных точек с широким спектром установленного на них программного обеспечения.

Во-вторых, защитное решение имеет должно выявлять и блокировать вредоносные атаки, использующие уязвимости, в том числе «нулевого дня» — дыры в безопасности, которые еще не исправлены. В «Лаборатории Касперского» это достигается с помощью ряда технологий, включая интеллектуальную систему Automatic Exploit Prevention, занятую поиском и блокированием необычной и потенциально вредной активности обычных приложений.

Так же в рубрике «Можно ли победить»: