Программные уязвимости Voice Over IP в Skype (Часть II)

Программные уязвимости Voice Over IP в Skype (Часть II)

Техники и методы использования уязвимостей нулевого дня, 2011г.

Данная публикация является второй частью статьи "Программные уязвимости Voice Over IP в Skype". Первую часть статьи можно посмотреть здесь.

5. Презентация новой уязвимости нулевого дня в Skype

Теперь я объясню, как взломать Skype. Далее будет приведено все, что я нашел, тестируя данное ПО. Всего было найдено 5 уязвимостей:

  • 5.6 Skype v5.3.x v2.2.x v5.2.x – отказ в обслуживании (локально и удаленно)(+видео)(Linux,Windows, Mac) [Средний[-]
  • 5.2 Skype 5.3 .x 2.2.x 5.2.x – программный баг (локальный и удаленный)(Linux,Windows, Mac) [Высокий[-]
  • 5.5 Skype v5.2.x and v5.3.x – компрометация памяти (Local) (+Video)(Linux,Windows, Mac) [средний]
  • 5.3 Skype v5.3.x – переполнение буфера (удаленно) (Windows) [высокий]
  • 5.1 Skype 5.3.x 2.2.x 5.2.x - уязвимость XSS профиля (локально и удаленно)(Linux,Windows, Mac) (+видео) [высокий]

Из них платформонезависимых: 4.

Объясню все это уязвимости и их возможные последствия по отдельности. Хочу добавить, что все мои действия были записаны на видео, которое готовится к выпуску.

Skype v5.3.x v2.2.x v5.2.x – постоянный локальный отказ в обслуживании (модель из пункта 4.2.6)

Первым делом объясню атаку локального и удаленного отказа в обслуживании в Skype. Как и в других программах по обмену сообщениями, в Skype есть возможность выдавать предупреждения при появлении определенных слов (то, что называется выделением текста в irc). Например, если создать предупреждение на слово «Бенджамин», каждый раз, когда пользователь будет получать это слово в сообщениях, он также будет получать предупреждение. Все это выглядит следующим образом:

Рисунок 1: Настройка предупреждений

Чтобы достичь желаемого, нужно выполнить следующие действия:

Настройки предупреждений => Поле для ввода (Checkbox 3) => вводим строку => Сохраняем => Проверяем, что все работает => Новое предупреждение хранится в списке предупреждений

Уязвимость «отказ в обслуживании была обнаружена в Skype для Windows и Mac OS. Этот баг находится в модуле оповещения клиента. Он позволяет нарушителю локально, через APPHang и APPCrash, аварийно завершить процесс Skype.Этот баг позволяет нарушителю заблокировать возможность обмена сообщениями с помощью строки:

%long<string>+[Space]+%long<string>

Поле ввода в модуле оповещения не имеет ограничений на длину вводимого значения. После ввода вышеописанной строки, этот модуль не будет выдавать ни одного оповещающего сообщения.

В результате имеет отказ в обслуживании: apphang и appcrash… Перезапуск не поможет, потому что прописанная строка сохраняется в учетной записи. Эта атака может привести к постоянному отказу в обслуживании. После того, как пользователь с взломанной данным образом учетной записью отправляет мне (получателю) сообщение, я получу сбой программного обеспечения Skype после обработки первого же символа.

Рисунок 2: Mac OS – Отказ в обслуживании (сбой ПО получателя)

 

Рисунок 3: Mac OS – Отказ в обслуживании (первый отчет об ошибке).

 

Рисунок 4: Windows 7 – Отказ в обслуживании (в дебаггере – необработанная ошибка).

Когда же вы пытаетесь удалить строку из «Настройки предупреждений», программа пытается проверить вводимое значение и снова аварийно завершается. Атака выполняется по следующей схеме:

Настройки предупреждений => Поле для ввода (Checkbox 3) => Ввод (без ограничений) => %long<string>+[Space] +%long<string> => Сохранение => проверка поведения системы при получении сообщения => Аварийное завершение программы при получении сообщения

Отказ в обслуживании имеет место в Skype для Windows, Max OS и Linux (в том числе для мобильных версий).

Skype 5.3.x.2.2.x.5.2.x – постоянная программная уязвимость (модель из пункта 4.2.3)

Сейчас рассмотрим уязвимость, позволяющую удаленно выполнять скрипты прямо в Skype. Примерно месяц назад я начал изучать статусную и прочие строки меню Skype.

В ходе своих тестов я искал определенные точки программы, например, модуль передачи сообщений встроенных сервисов. Когда несколько недель назад я узнал о новом модуле управления сервисами Skype, я провел его небольшой тест. Сначала мне казалось, что это отличный, защищенный модуль, но после моего выхода из системы, в программе появилось сообщение «Администратор удалил вас из Skype Manager» и было показано имя пользователя.

Наконец я нашел, что искал. После этого я снова зашел в Skype Service Manager. В этот раз я пытался войти в систему с использованием различных тэгов в качестве моего имени пользователя, но это не срабатывало из-за ограничений безопасности. «Что ж» - думал я. «Пока еще я не могу сделать это». Я вошел в Skype Manager с обычным именем пользователя и начал изучать имена профилей. Больше я не пытался войти в систему с использованием различных имен пользователей, вместо этого я попытался произвести обновление статуса. Это сработало. Регистрация нового пользователя не работала, что указывало на наличие проверки, в то время, как проблема запуска обновления имела место.

К сожалению, у вас не получится ввести больше 50 символов из-за ограничений обновления. Далее я стал пытаться внедрить небольшие скрипты, после чего просто зашел в Skype Service Manager. На странице ввода имени пользователя и пароля была выведена запрошенная мной информация.

Сообщение статуса: Администратор удалил вас из Skype Manager “>” (имя пользователя базы данных)

Хорошо, я нашел форму в Skype, позволяющую производить обновление статуса. Проблема заключалась в том, что в форме фильтровались все полезные тэги, например, '>"<iframe src=http://www.vulnerabilitylab.com>'. Я начал использовать различные кодировки символов (HTML, hex-url,base-64). После того, как я закончил перебирать все возможные варианты кодировок, я зашел в программу, чтобы проверить, сработало ли это. Результат был следующим:

Рисунок 5: постоянное выполнение скрипта в модуле статусного сообщения Skype.

Теперь видим, что в Skype существует возможность запуска скриптов через обновление статуса со всеми вытекающими последствиями. Вы попросту не сможете избежать этого бага, так как статус устанавливается всегда. Уязвимость не зависит от настроек операционной системы. Проблема заключается в некорректной проверке обновления статуса, а также в некорректной проверке имени пользователя в Skype Manager. Ближе к концу моего теста было ясно, что не важно, какая служба обновляет ваш статус, нарушителю нужно лишь найти ее, и он сможет выполнять скрипты через Skype.

Схема работы: установка => регистрация=> вход в систему=> регистрация 2 => проверка 1 => повторный вход в систему => изменение поля ввода имени пользователя на необходимый тэг (Script Code HTML/JS) => отмена использования службы => обновление сообщения статуса

PoC:

%3E%22%3C%69%66%72%61%6D%65%20%73%72%63%3D%68%74%74%70%3A%2F%2F
%76%75%6C%6E%2D%64%62%2E%63%6F%6D%3E

Skype 2.8.x & 5.3.x – постоянная уязвимость XSS профиля (модель из пункта 4.2.2)

В параметрах ввода/вывода клиентского ПО Skype (как минимум) была обнаружена проблема второго ввода. Баг находится в полях ввода номера телефона. Задействованной при этом областью вывода является активная область просмотра информации о пользователе, где может быть выполнен скрипт. Исследователь лаборатории Левент Кайан (noptrix) описал эту уязвимость на Vulnerability-lab.com 15 июля 2011 года. Риск безопасности при данной уязвимости является высоким (-), потому что воспользоваться ей можно только в активной области просмотра информации о пользователе.

Рисунок 6: Уязвимые поля ввода в секции Skype-профиля.

Рисунок 7: Получение информация сессии Skype через XSS.

Уязвимость позволяет нарушителю удаленно выполнять скрипты через поля ввода в профиле пользователя. Ее использование может привести к краже сессионной информации пользователя или выполнению вредоносного скрипта при обзоре активных пользователей.

Схема работы:

Установка => Вход => изменение значения номера телефона (Script Code HTML/JS) => сохранение => обновление страницы с данными пользователя

PoC:"><iframe src='' onload=alert('mphone')>

Skype 5.2.x, 5.3.x – уязвимость указателей (компрометация памяти) (модель из пункта 4.2.4)

После того, как нами была найдена уязвимость, связанная с отсутствием проверки вводимых значений, мы провели несколько тестов. Бенджамин Межри обнаружил критическую уязвимость в работе с указателями (в Skype для Windows и Mac OS). Она находится в 2 полях ввода Unicode HTTP запроса к серверу директорий Skype. Данная уязвимость позволяет нарушителю (при условии локального доступа) аварийно завершить процесс Skype благодаря необрабатываемой ошибке (компрометация памяти).

После того, как нами была найдена эта ошибка, мы пробовали включить в запрос различные символы, например, %, 0, A+

Несколько позднее мы получили следующий результат (Mac OS):

После недолгого анализа данных дебаггера, мы обнаружили, что в поисковом запросе Skype содержится строка, введенная нами. Содержимое поля поиска было слишком велико для обработки, и Skype клиент аварийно завершился. После завершения процесса пользователем, утечка памяти прекращается.

Схема:

Установка => Вход в программу => Открытие "Geschäftsempfehlungen” => Ввод длинной юникодовой последовательности => запрос к серверу директорий на поиск => Аварийное завершение приложения

Skype 5.3.x – Переполнение буфера (модель из пункта 4.2.5)

Далее я провел несколько тестов по перемещению данных в разных режимах системы. Примером может послужить передача файла от одного пользователя к другому, когда статус одного из них – «Нет на месте», то есть файл не может быть отправлен или получен. Допустим, после начала передачи статус второго участника общения также становится «Нет на месте». Таким образом, данные остаются между пользователями. В такой ситуации на 32 и 64-разрядным операционных системах Windows возникает ошибка переполнения буфера.

Мы также сохранили несколько картинок с ошибками нарушения прав доступа при переполнении буфера и BEX-исключениях.

Схема:

Установка => Вход в программу => Инициация передачи данных => переход в режим «Нет на месте» => Прекращение отправки/получения => повторная инициация => переполнение буфера

6. Безопасность в Skype, патчи и сотрудничество в сфере безопасности

Сначала следует поговорить о хронологии создания патчей и ответах, полученных нами от команды по безопасности Skype. После предоставления информации о третьей уязвимости нам дали контакт разработчика системы безопасности Skype. Он был ответственен за тестирование и проверку модулей, в которых нами были обнаружены баги. Его схема работы представлена ниже:

Получение информации об уязвимости > Ответ отправителю > Проверка > Повтор атаки > Исправление (патч)

Чтобы получить представление о скорости выполнения всех этих действий приведем хронологию для уязвимости с высокой степенью опасности.

10-07-2011: Информирование вендора об уязвимости

11-07-2011: Ответ вендора

12-07-2011: Выпуск вендором патча, закрывающего уязвимость

15-07-2011: Публикация информации об уязвимости

Далее приведем хронологию решения платформонезависимого бага с высокой степенью опасности:

22-07-2011: Информирование вендора об уязвимости

23-07-2011: Ответ вендора

01-08-2011: Выпуск вендором патча, закрывающего уязвимость

06-09-2011: Публикация информации об уязвимости

Как можно заметить из 2 предыдущих хронологий, команда безопасности Skype работает очень быстро. Они, как правило, очень быстро воспроизводят действия нарушителя и отправляют подтверждение о наличии уязвимости в течение всего лишь нескольких часов. Когда мы отправили информацию о первом баге, ответ пришел всего через несколько минут. Как отмечалось ранее, после третьей уязвимости с нами напрямую работал специалист их Skype. Он помог нам с проверкой наличия уязвимостей, и подтвердил 4 из 6 заявленных багов за очень короткое время.

В итоге команда безопасности Skype ответила нам следующее:

Skype v5.3.x v2.2.x v5.2.x – уязвимость локального и удаленного отказа в обслуживании

Будет устранена в следующем релизе.

Skype 2.8.x, 5.3.x & 2.2.x – постоянная уязвимость программного обеспечения

Мы удостоверимся, что вектора атак со стороны администраторов минимизированы.

Skype 2.8.x & 5.3.x – постоянная XSS уязвимость

Устранена, информация о ней опубликована.

Skype 5.2.x & 5.3.x – уязвимость указателей (компрометация памяти)

Будет устранена в следующем релизе.

Skype 5.3.x – уязвимость переполнения буфера

За несколько попыток воспроизведения данной атаки по указанному алгоритму сотрудники Skype так и не смогли добиться успеха.

7. (Обзор) Видео

  • 7.1 Skype (VoIP) - Denial of Service Vulnerability.wmv [HD]
  • 7.2 Skype (VoIP) - Persistent Cross Site Scripting Vulnerability.wmv [HD]
  • 7.3 Skype (VoIP) - [Pointer Bug] Memory Corruption.wmv [HD]

8. Об авторах

Вот и Vulnerability-Lab в действии. Этот проект вдохновляет нас на дальнейшие свершения. Vulnerability-Lab предоставляет Европе и всему остальному миру огромное количество информации, касающейся уязвимостей и консалтинга по безопасности. Если вы являетесь представителем вендора, Vulnerability-Lab может быть очень полезным ресурсом для определения текущего уровня защищенности вашего ПО. Наш проект – это команда исследователей, которые ищут уязвимости, баги и плохую практику использования, и размещают эту информацию на одном сайте, благодаря чему вендоры могут быть своевременно оповещены о проблеме.

Vulnerability-Lab на данный момент состоит из одиннадцати человек (от экспертов по информационной безопасности до менеджеров, отвечающих за содержимое сайта), и все эти люди очень интересуются безопасностью. Исследовательская группа, в среднем, выпускает информацию о 25-40 важных или критических уязвимостях в месяц. Процесс определения уязвимости и выдвижения решений по ее устранению всегда выполняется в профессиональной манере: закрытая информация не разглашается, любые действия третьих сторон, которые могут повлечь компрометацию закрытой информации, строго запрещены. Больше информации об этом можно найти в нашем FAQ. Vulnerability-Lab не просто предлагает методы устранения уязвимостей, но также дает возможность их выбора по вендорам, датам, событиям и даже по видео. Если вашей целью только является получение информации об уязвимостях используемого вами ПО и их устранении, это легко можно настроить. Взаимодействие нашей команды с прочими исследовательскими организациями и вендорами является приоритетным направлением нашей деятельности, так как информация всегда является нашим главным оружием.

Читайте наш блог или присоединяйтесь к нам на форуме, если вы хотите знать больше и не отставать от быстро меняющегося мира информационной безопасности. Кроме того, так вы можете узнавать, что происходит в наших лабораториях. Члены Vulnerability-Lab считают своим долгом распространять информацию об уязвимостях другим исследователям, чтобы повысить качество и безопасность программного обеспечения. Если вы являетесь членом какой-либо исследовательской группы и хотите работать с нами, отправьте нам e-mail, содержащий ваше имя и сферу интересов. Также нам нужны спонсоры! Если вы являетесь представителем вендора или исследовательской группы, которая хочет воспользоваться нашими услугами, мы будем рады помочь. Добровольные денежные взносы приветствуются. Мы – команда очень талантливых и преданных людей. Вложения в Vulnerability-Lab позволят повысить защищенность вашего приложения (как вендора), а также его статус. Просим вас писать нам, если вы заинтересованы в спонсорстве, своей выгоде и выгоде ваших клиентов.

www.vulnerability-lab.com , www.vuln-lab.com или www.vuln-db.com

Контакт: admin@vulnerability-lab.com

Тех. поддержка: support@vulnerability-lab.com

Исследования: research@vulnerability-lab.com

Информационные бюллетени: submit@vulnerability-lab.com


Квантовый кот Шрёдингера ищет хозяина!

Живой, мертвый или в суперпозиции? Узнайте в нашем канале

Откройте коробку любопытства — подпишитесь