Введение
Компьютерный червь SQL Slammer 2003 года — это компьютерный червь, появившийся в 2003 году, который вызвал отказ в обслуживании ряда интернет-хостов и значительно замедлил общий интернет-трафик. Он также привел к сбоям в работе маршрутизаторов по всему миру, что вызвало еще большие задержки. Червь распространялся очень быстро, заразив большинство из своих 75 000 жертв в течение 10 минут. Программа использовала уязвимость, связанную с переполнением буфера, в продуктах баз данных Microsoft SQL Server и Desktop Engine. Несмотря на то, что исправление MS02-039 (CVE-2002-0649) было выпущено за шесть месяцев до этого, многие организации еще не установили его. Наиболее пострадавшими регионами были Европа, Северная Америка и Азия (включая Восточную и Южную Азию (Индию) и другие страны).
SQL Slammer is a 2003 computer worm that caused a denial of service on some Internet hosts and dramatically slowed general Internet traffic. It also crashed routers around the world, causing even more slowdowns. It spread rapidly, infecting most of its 75,000 victims within 10 minutes. The program exploited a buffer overflow bug in Microsoft's SQL Server and Desktop Engine database products. Although the MS02 039 (CVE 2002 0649) patch had been released six months earlier, many organizations had not yet applied it. The most infected regions were Europe, North America, and Asia (including East Asia and southern Asia (India) etc.
Технические детали
Червь был основан на демонстрационном коде, подтверждающем концепцию, представленном Дэвидом Литчфилдом на брифингах Black Hat, который изначально обнаружил уязвимость переполнения буфера, эксплуатируемую червем. Это небольшой фрагмент кода, который, по сути, генерирует случайные IP-адреса и рассылает себя на эти адреса. Если выбранный адрес принадлежит хосту, на котором работает незащищенная копия Microsoft SQL Server Resolution Service, прослушивающая UDP-порт 1434, хост немедленно заражается и начинает распространять копии червя по сети. Домашние компьютеры, как правило, не уязвимы для этого червя, если на них не установлена MSDE. Червь настолько мал, что не содержит кода для записи на диск, поэтому он остается только в памяти, и его легко удалить. Например, Symantec предоставляет бесплатную утилиту для удаления, или его можно удалить, перезапустив SQL Server (хотя машина, скорее всего, будет немедленно повторно заражена). Червь стал возможен из-за уязвимости безопасности программного обеспечения SQL Server, о которой Microsoft впервые сообщила 24 июля 2002 года. За шесть месяцев до появления червя Microsoft выпустила исправление, но многие установки не были обновлены, в том числе и многие в самой Microsoft. Червь начали замечать в начале 25 января 2003 года, когда он замедлил работу систем по всему миру. Замедление было вызвано сбоями в работе многочисленных маршрутизаторов из-за огромного объема трафика от зараженных серверов. Обычно, когда трафик превышает возможности маршрутизаторов, они должны задерживать или временно останавливать сетевой трафик. Вместо этого некоторые маршрутизаторы вышли из строя (стали неработоспособными), и соседние маршрутизаторы обнаружили, что они перестали отвечать и их следует исключить из таблицы маршрутизации. Маршрутизаторы начали отправлять уведомления об этом другим известным маршрутизаторам. Поток уведомлений об обновлении таблицы маршрутизации привел к сбоям в работе дополнительных маршрутизаторов, усугубив проблему. В конечном итоге администраторы перезапустили вышедшие из строя маршрутизаторы, что привело к повторной отправке информации об их статусе и новой волне обновлений таблицы маршрутизации. Вскоре значительная часть пропускной способности Интернета была занята обменом информацией между маршрутизаторами для обновления таблиц маршрутизации, что привело к замедлению или полной остановке обычного трафика данных. Поскольку червь SQL Slammer был очень мал, он иногда мог проникать даже при наличии легитимного трафика. Два ключевых фактора способствовали быстрому распространению SQL Slammer. Червь заражал новые хосты по протоколу UDP без установления сеанса, а весь червь (всего 376 байт) помещался в один пакет. В результате каждый зараженный хост мог просто отправлять пакеты максимально быстро, не заботясь об их доставке.