Уязвимости «нулевого дня»
Что происходит после того, как хакер обнаруживает новую или так называемую 0day уязвимость? Учитывая то, что никаких защитных механизмов против нее еще не разработано, уязвимость может эксплуатироваться в приложении без какой-либо возможности от нее защититься. Сам этот термин означает, что у разработчиков не было ни одного дня на исправление обнаруженного дефекта. Если требуется гарантированный результат, то злоумышленник должен использовать именно 0day уязвимость, иначе производитель ПО выпустит патч, который со временем ее закроет. Кроме того, попытка воспользоваться эксплоитом (программой, использующей данную ошибку в софте для атаки системы) может привести к срабатыванию соответствующей сигнатуры антивирусной программы или межсетевого экрана. Однако если вирусописатель применил шифрование тела вируса и обфускацию его исходного кода, антивирусная программа, скорее всего, не обнаружит вирус, эксплуатирующий неизвестную уязвимость.
Сколько времени обычно проходит от обнаружения уязвимости до выпуска патча?
Если хакер является именно злоумышленником, а не легальным пентестером, то сразу после эксплуатации уязвимости и достижения своих черных целей он может опубликовать результаты своих исследований на соответствующих форумах. Даже если он этого не сделает, после удачного взлома часто остаются следы, которые позволяют определить, какая именно уязвимость привела к утечке информации, и передать данные производителю программы. Если уязвимость критическая, то устранение ее займет дни и недели - после этого пользователям будет предложено обновиться и система будет снова защищена. Однако после обнаружения уязвимости могут пройти месяцы - и все это время система будет незащищенной. Самое важное - насколько широкий круг лиц посвящен в проблему: чем он больше, тем выше вероятность эксплуатации уязвимости.
Уязвимости операционной системы
Если речь идет об уязвимостях операционной системы, то тут все усложняется. В большинстве случаев, ваш ПК является частью локальной сети. Если одна из рабочих станций уязвима (например, там установлена устаревшая версия ОС), то она представляет собой слабое звено цепи, через которое легко получить доступ к другим компьютерам и скомпрометировать всю сеть. Если речь идет о домашнем ПК, то угроза не столь высока. Однако, через эксплуатацию какой-либо известной уязвимости ваш компьютер будет инфицирован и, например, без вашего ведома будет принимать участие в DDoS-атаках, т.е. станет частью ботнета.
Зачем это нужно знать разработчику?
Уязвимости можно найти практически в любой программе, вопрос лишь в том, сколько времени и усилий злоумышленнику на это потребуется. В большинстве случаев, уязвимости можно обнаружить стандартным сканером. Например, если вы пишете веб-приложение, то одним из самых известных сканеров является Acunetix. Если злоумышленник не сможет в короткий срок найти уязвимость в программе с помощью сканера, есть высокая вероятность того, что он вообще откажется от попыток взлома. Поиск неизвестных ранее уязвимостей с помощью реверсинга программы может занять довольно продолжительное время и потребует совершенно другой квалификации хакера. В то же время, как уже было сказано выше, неизвестная ранее 0day уязвимость – это успех, что позволит гарантированно взломать приложение без каких-либо шансов предотвратить атаку с помощью антивирусного ПО.
Защита от реверсинга и взлома
Затруднить взлом своей программы можно и нужно, для этого используется целый ряд способов, начиная от обфускации кода до удаленного запуска части кода на удаленных серверах, однако это уже тема для отдельной статьи.
Интересно почитать продолжение?
А тем, кто определился с тем, что хочет стать программистом, рекомендуем профессию «Веб-разработчик».