Низкокачественное написание скриптов часто влияет на безопасность системы в целом. Существует возможности использования уязвимостей в Perl-скриптах для доступа к файлам вне пределах файловой системы веб-сервера или выполнения несанкционированных команд.

Атака "Посредник" (Man in the Middle)

Главной целью атаки является перенаправление трафика между двумя машинами. Это нужно для перехвата, модификации или уничтожения данных, которыми обмениваются системы. Эта атака, скорее концептуальная, нежели практическая. Существует множество типов атак, реализующих принцип "Посредника" , например "посредник" в DNS, использующая подмену DNS для перенаправления трафика между веб-сервером и клиентом. Недавно созданы программы для перенаправления SSH-трафика.

Отказ в обслуживании

Название этих атак хорошо отражает их суть, поскольку результатом данных атак является недоступность того или иного сервиса (определенного приложения) или целевой машины. Мы рассмотрим два типа отказа в обслуживании: один, основанный на ошибке в приложении, и другой, основанный на плохой реализации или уязвимости протокола.

Атаки, основанные на IP-фрагментации

Данная атака направлена на оборудование, находящееся за защитой IP фильтрующего оборудования. Для ее реализации злоумышленники используют два разных метода: "микрофрагменты" (Tiny Fragments) и "перекрытие фрагментов" (Fragment Overlapping). Эти атаки становятся достоянием истории, поскольку современные межсетевые экраны давно успешно с ними справляются.

Отказ в обслуживании приложения

Если уязвимости приложения ведут к возможности получения контроля над машиной (например, с помощью переполнения буфера), они также могут вести к отказу в обслуживании. Приложение станет недоступным либо из-за нехватки ресурсов, либо из-за аварийного завершения.

Сетевой отказ в обслуживании

Существует несколько типов атак "отказ в обслуживании", основывающихся на особенностях стека протоколов TCP/IP.

SYN-наводнение

Мы уже рассматривали механизм установления TCP-соединения (механизм тройного квитирования). SYN-наводнение использует этот механизм. Как вы помните, есть три состояния: посылка SYN-пакета, получение пакета SYN-ACK и посылка ACK-пакета. Идея атаки состоит в создании большого количества не до конца установленных TCP-соединений. Для реализации этого, злоумышленник посылает множество запросов на установление соединения (пакеты, с выставленным флагом SYN), целевая машина отвечает пакетами SYN-ACK. Злоумышленник же не завершает процесс установки соединения, а оставляет их в полу-открытом состоянии. Следовательно, для каждого полученного SYN-пакета сервер выделяет ресурсы и вскоре они исчерпываются. В результате, новые соединения не могут быть открыты. Этот тип отказа в обслуживании направлен только на целевую машину.

Для реализации атаки SYN-наводнения злоумышленник может использовать программу synk4, передавая ей в качестве параметра целевой хост, порт и случайный адрес источника. Последнее затрудняет определение машины злоумышленника.

UDP-наводнение

Этот тип атаки "отказ в обслуживании" использует бессеансовый режим протокола UDP. Злоумышленник генерирует большое количество UDP-пакетов ("шторм UDP-пакетов") направленных на одну или две машины. В результате происходит перегрузка сети и целевых машин. Эффективность данной атаки особенно высокая, поскольку UDP-трафик приоритетнее TCP-трафика. В протоколе TCP есть механизмы предотвращения перегрузок, если подтверждения приема пакетов приходят с значительной задержкой, передающая сторона замедляет скорость передачи TCP-пакетов. В протоколе UDP такой механизм отсутствует, и после начала атаки, UDP-трафик быстро захватит всю доступную полосу пропускания, и TCP-трафику останется лишь малая ее часть.

Наиболее известный пример UDP-наводнения это атака на сервис chargen. Реализация этой атаки проста: достаточно установить связь между сервисами chargen на одной машине и сервисом echo на другой. Сервис chargen генерирует символы, а сервис echo дублирует полученные данные. Злоумышленник посылает UDP-пакеты на порт 19 (chargen) одной из машин-жертв, подделывая IP-адрес и порт источника. В данном случае, портом источника будет UDP-порт 7 (echo). Атака UDP-наводнение приводит к перегрузке сети на отрезке между двумя машинами. В результате, пострадать может вся сеть.

Пакетная фрагментация

Отказ в обслуживании, достигаемый с помощью пакетной фрагментации использует уязвимости некоторых стеков TCP/IP, связанных с дефрагментацией пакетов (сборкой IP-фрагментов).

Известная атака, использующая этот подход -- это Teardrop. Фрагментарное смещение второго сегмента меньше размера первого сегмента. Это означает, что при сборке фрагментов первый сегмент должен будет содержать данные второго сегмента, происходит перекрытие фрагментов. Во время сборки таких пакетов, некоторые системы не могут обработать сложившуюся ситуацию, что приводит к отказу в обслуживании. Существуют разные варианты этой атаки, например bonk, boink и newtear. Атака отказ в обслуживании "пинг смерти" использует некорректную обработку ICMP-фрагментов, посылая больше данных, чем максимальный размер IP-пакета. Разные типы атак "отказ в обслуживании" ведут к отказам целевой системы.

Smurfing

Данная атака использует ICMP-протокол. При посылке ping-пакета (сообщение ICMP ECHO) по широковещательному адресу (например, 10.255.255.255), он доставляется каждой машине в этой сети. Принцип атаки заключается в посылке пакета ICMP ECHO REQUEST с адресом-источником машины-жертвы. Злоумышленник шлет постоянный поток ping-пакетов по сетевому широковещательному адресу. Все машины, получив запрос, отвечают источнику пакетом ICMP ECHO REPLY. Соответственно, размер ответного потока пакетов возрастает в пропорциональное количеству хостов число раз. В результате, вся сеть подвергается отказу в обслуживании из-за перегрузки