В связи «открытием» повсеместно обсуждаемой в последнее время Shellshock-уязвимости (например, здесь и здесь), а также преследуя благую цель устранения возможных неприятных последствий использования этой уязвимости, сервис мониторинга сайтов ХостТрекер предоставляет возможность мгновенно определить наличие этой самой уязвимости на линуксовых серверах и установленным веб-сервером (проверка результата происходит через http).
Алгоритм очень простой. Мы последовательно делаем 4 запроса к серверу:
1. Обычный запрос.
2. Запрос, пользуясь уязвимостью, пытается разместить на проверяемом сервере куку, которая приведет к 2-х секундной задержке выполнение нашего специального запроса http.
3. Запрос, пользуясь уязвимостью, пытается разместить на проверяемом сервере куку, которая приведет к 4-х секундной задержке выполнение нашего специального запроса http.
4. То же, что и в п.3.
Проверка осуществляется путем попыток разместить куки, пользуясь уязвимостью. Кука вызывает задержку обработки запроса http сначала на 2, а затем — на 4 секунды. После чего сравнивается результат. Здесь возможны 3 варианта:
1. Уязвимость есть, если наблюдается разница во времени отклика в 2 секунды между запросом без куки и запросом с кукой, вызывающей 2-х секундную задержку, а также между 2-х секундной кукой и 4-х секундной. То есть, нашим запросам удалось использовать уязвимость и разместить куку.
2. Уязвимости нет — все запросы получают ответ за приблизительно равное время. То есть куку разместить не удалось.
3. Неопределенная ситуация. Может возникнуть, если сервер под сильной нагрузкой, и время отклика постоянно скачет. Зафиксировать, является ли разница задержки результатом деятельности квазивредоносной куки, или же кратковременного пика нагрузки на сервер, не представляется возможным. Для проверки этой ситуации мы делаем два последовательных запроса с одинаковой задержкой — 3-й и 4-й. Если их результат сильно разнится, значит задержка случайна и не зависит от нашей куки (которая, возможно, вообще не записалась). В этом случае наш метод не может определить наличие уязвимости.
Наша проверка не может причинить ущерб серверу. Все, чем Вы рискуете — это появлением одной «лишней» куки на сервере. Эта кука используется только при нашем тестовом запросе, и никаких задержек для рабочих сайтов она вызвать не может.
Как это работает?
Алгоритм очень простой. Мы последовательно делаем 4 запроса к серверу:
1. Обычный запрос.
2. Запрос, пользуясь уязвимостью, пытается разместить на проверяемом сервере куку, которая приведет к 2-х секундной задержке выполнение нашего специального запроса http.
3. Запрос, пользуясь уязвимостью, пытается разместить на проверяемом сервере куку, которая приведет к 4-х секундной задержке выполнение нашего специального запроса http.
4. То же, что и в п.3.
Что имеем в результате?
Проверка осуществляется путем попыток разместить куки, пользуясь уязвимостью. Кука вызывает задержку обработки запроса http сначала на 2, а затем — на 4 секунды. После чего сравнивается результат. Здесь возможны 3 варианта:
1. Уязвимость есть, если наблюдается разница во времени отклика в 2 секунды между запросом без куки и запросом с кукой, вызывающей 2-х секундную задержку, а также между 2-х секундной кукой и 4-х секундной. То есть, нашим запросам удалось использовать уязвимость и разместить куку.
2. Уязвимости нет — все запросы получают ответ за приблизительно равное время. То есть куку разместить не удалось.
3. Неопределенная ситуация. Может возникнуть, если сервер под сильной нагрузкой, и время отклика постоянно скачет. Зафиксировать, является ли разница задержки результатом деятельности квазивредоносной куки, или же кратковременного пика нагрузки на сервер, не представляется возможным. Для проверки этой ситуации мы делаем два последовательных запроса с одинаковой задержкой — 3-й и 4-й. Если их результат сильно разнится, значит задержка случайна и не зависит от нашей куки (которая, возможно, вообще не записалась). В этом случае наш метод не может определить наличие уязвимости.
Безопасность проверки
Наша проверка не может причинить ущерб серверу. Все, чем Вы рискуете — это появлением одной «лишней» куки на сервере. Эта кука используется только при нашем тестовом запросе, и никаких задержек для рабочих сайтов она вызвать не может.