Оригинал: old.computerra.ru/focus/coment/201104/
27.01.2003

По многочисленным просьбам: SQL Slammer "весит" Сеть

Cегодняшнюю колонку планировалось посвятить любопытнейшей электронно-коммерческой системе, созданной в России. Но развернувшиеся в субботу события внесли коррективы: на Сеть обрушилась гигантская эпидемия очередной заразы. В списке жертв - десятки компаний, сотни тысяч серверов и миллионы человек по всему миру. Краткие сообщения о том, что случилось, наверняка, доводилось слышать и вам, но подробности появились только в последние сутки. Поэтому давайте забудем о коммерции и рассмотрим, что поставило Интернет на колени в этот раз.

Всё началось в субботу вечером, когда наблюдатели в США и Южной Корее впервые отметили необычную сетевую активность: отслеживая входящий трафик, можно было заметить идущие со всех направлений (в смысле, от узлов со случайными IP-адресами) короткие пакеты. Длиною в три-четыре сотни байт, они приходили на порт с номером 1434. Всего за пару часов количество этих пакетов возросло настолько, что каналы, объединяющие многих провайдеров (т.н. бэкбон-сети) перестали справляться с нагрузкой, недопустимо увеличив время прохождения через них данных.

Попросту говоря, попытка рядового сетянина достучаться до какого-то сайта в пяти случаях из десяти (!) заканчивалась неудачей. Таково было положение дел в Японии, странах Европы и ряде других государств. В Штатах и Южной Корее ситуация оказалась самой тяжёлой: многие провайдеры попросту прекратили свою работу, больше того - начались перебои в работе оборудования, подключенного к Сети (так, отказались выдавать деньги 13 тысяч банкоматов Bank of America). Пиком эпидемии стал выход из строя пяти из тринадцати корневых серверов службы DNS, поддерживающих работу всего интернета.

Причины происходящего прояснялись мучительно медленно. В первые часы удалось лишь выяснить, что виноват во всём "червь", эксплуатирующий уязвимость в программном продукте Microsoft SQL Server. Именно эта программа "слушает" порт 1434, обрабатывая поступающую на него информацию. На основании этих сведений были выработаны и первые рекомендации по ограничению масштабов эпидемии: закрыть порт от связи с внешним миром. Благодаря этому уже в течение шести часов после начала, развитие инфекции удалось приостановить. А чуть позже появились и сведения о её масштабах: по различным данным (так Symantec приводит цифру 22 тысячи), эпидемия охватила от двух десятков до 25 тысяч узлов, на которых работал MS SQL Server. Но как два десятка тысяч машин, рассылая пакеты размером меньше килобайта, едва не повесили всю Сеть?!

Эпидемия неизвестной заразы заставила вспомнить мрачные пророчества об идеальном черве...

Изюминка крылась в принципе работы "червя". Он, кстати, не прояснён полностью и на данный момент, но в общих чертах сводится к использованию пары уязвимостей в MS SQL Server, открытых ещё летом прошлого года. Одна из них заключается в возможности переполнения буфера и выполнения произвольного кода на компьютере с запущенным SQL Server. Её, вирус длиной в четыре сотни байт, использовал для заражения сервера. Инфицировав сервер, вирус приступал к размножению: SQL Server наделён своеобразной ping-функцией, которая заставляет его, в ответ на запрос, поступивший на порт 1434, отсылать ответ. Вирус, рассылая такие запросы по случайным IP-адресам, сканировал адресное пространство Сети, отыскивая новые жертвы - и заражал их немедленно по обнаружении.

Одновременно с этим производилась и другая работа: вирус организовывал между двумя обнаруженными SQL-серверами бесконечный обмен информацией, для чего использовалась вторая уязвимость. Дело в том, что ping-функция, если на неё прислать особый пакет, отвечает тем же самым пакетом. Представьте теперь, что сервер 1 шлёт такой пакет на сервер 2, тот отсылает его обратно, и вызывает ответную реакцию: сервер 1, получив пакет от 2-го сервера, опять отвечает на него и т.д. Такое бесконечное перебрасывание "мяча" способно съесть до 60% вычислительной мощности каждого из участвующих в нём серверов, ещё и многократно увеличив трафик. Именно этот трафик и перегрузил бэкбон-сети.

На жёсткий диск вирус не сохранялся, равно как ничего на нём не портил, поэтому удалить его с машины можно было простой выгрузкой SQL Server из памяти. Тем не менее, несмотря на всю простоту, эксперты уже назвали эпидемию SQL Slammer Worm (так прозвали нового "червя") самой тяжёлой за последние полтора года. По масштабам и последствиям с ней может сравниться только эпидемия Code Red. Впрочем, о последствиях пока судить рано: как предупреждают вирусологи, через несколько дней неизбежно появятся варианты Slammer, который могут вызвать ещё большие разрушения.

Эпидемия SQL Slammer замечательно продемонстрировала ужасающую незащищённость современной Сети перед вирусными инфекциями. Частично виною тому - человек (администраторам серверов было просто лень поставить нужные "заплатки"), частично - инфраструктура Сети (нет никаких инструментов ограничения избыточного трафика). Как защититься от новых эпидемий? Можно ли устранить человеческий фактор из компьютерной безопасности? Можно ли найти универсальное техническое решение, гарантирующее защищённость машин? А может быть стоит просто максимально ужесточить наказание за преступления в киберпространстве (десять лет спустя их ужесточат настолько, что спровоцируют обратную реакцию)?


вирус,червь,SQL_Slammer,эпидемия,Code_Red




Евгений Золотов, 1999-2018. Личный архив. Некоторые права защищены