Случайное письмо от хедхантера Google выявило уязвимость в ключах DKIM

Случайное письмо от хедхантера Google выявило уязвимость в ключах DKIM

Отправляя электронное письмо математику, будьте осторожны. Мало ли что он обнаружит в байтах служебной информации. Именно это произошло в случае с американским математиком Захари Харрисом (Zachary Harris), которого хедхантер Google хотел пригласить на собеседование.

Вместо того, чтобы вдумчиво вчитаться в текст предложения, Зак обратил внимание на размер ключа DKIM в подписи сообщения. DKIM (DomainKeys Identified Mail) — метод аутентификации отправителя путём проверки цифровой подписи почтового сервера. DomainKeys использует существующую систему DNS для передачи открытых ключей шифрования от каждого домена. Сервер получателя сверяет цифровую подпись отправителя с именем домена, указанного в обратном адресе, сообщает xakep.ru.

Харрис полез проверять DKIM, потому что письмо показалось ему странным. Математик хотел убедиться, что сообщение оригинальное, а не отправлено от какого-то мошенника. И вот здесь он обнаружил, что ключ шифрования, который использовался для генерации цифровой подписи для домена google.com, имеет размер всего лишь 512 бит, что по нынешним меркам маловато. Стандарт вводили в начале 2000-х, когда вычислительные мощности были в десятки раз слабее. Было предусмотрено, что подпись DKIM может быть сгенерирована ключом не только 1024+ бита, но и 384, 512 или 768 бит. Сейчас есть облачные хостинги, где можно недорого купить время вычислительного кластера, что и сделал Харрис. В течение нескольких дней он подобрал оригинальный ключ шифрования, это обошлось ему в $75.

Обладая хорошим чувством юмора, Харрис использовал сгенерированный ключ для отправки письма Ларри Пейджу с адреса электронной почты Сергея Брина, подписал письмо настоящей подписью почтового сервера google.com и добавил свой собственный адрес электронной почты в поле Reply-To.

Харрис знал, что Google часто задаёт хитрые задачи на собеседованиях, чтобы проверить логику кандидата. Например, «Сколько теннисных шариков поместится в школьный автобус?» или «В какую сторону должен поворачиваться ключ в замке, запирающем дверцу автомобиля, когда замок открывают?». В общем, Харрис подумал, что это может быть скрытый тест, справится ли он со взломом ключа. Он справился.

Через пару дней Харрис проверил цифровые подписи google.com и обнаружил, что они увеличились до 1024 бит. Но письма от хедхантера с уведомлением об успешном прохождении теста всё не было. Тогда математик подумал, а может быть, это и не тест вовсе? Он посмотрел на цифровые подписи DKIM, которые используются для других доменов в интернете, и увидел, что Paypal, eBay, Apple, Amazon, Twitter и многие другие сайты, включая несколько банков, используют ключи шифрования 384, 512 или 768 бит, так что потенциальный злоумышленник может подделать обратный адрес письма, используя аутентичную цифровую подпись Apple или Paypal. Открываются богатые возможности для фишинга.

В августе Зак Харрис отправил информацию об уязвимости в CERT, она будет официально опубликована в течение ближайших дней.

Проводник Windows падал не из-за Microsoft, виноват оказался деинсталлятор

Инженер Microsoft Рэймонд Чен рассказал любопытную историю отладки загадочных падений Проводника. Сначала всё выглядело так, будто в Windows внезапно появился неприятный баг. Но виновником оказалась вовсе не Microsoft, а сторонний деинсталлятор.

Проблема проявилась как резкий всплеск сбоев Проводника. Инженеры начали изучать дампы и заметили странную деталь: падала 32-битная версия программы, запущенная на 64-битных системах Windows.

Такая версия Проводника всё ещё есть в Windows ради совместимости со старыми приложениями. Обычно современные системы почти не используют этот путь. Но в данном случае сторонний деинсталлятор каким-то образом заставлял систему обращаться именно к этому устаревшему компоненту.

Дальше выяснилось, что деинсталлятор некорректно работал с системными API: использовал неправильное соглашение о вызовах функций и неверно обрабатывал параметры стека. Из-за этого при каждой неудачной операции данные из стека удалялись неправильно.

Поскольку процесс повторялся в цикле, повреждение памяти постепенно накапливалось. В какой-то момент указатель стека уезжал в область активного кода, и Проводник падал.

Со стороны всё выглядело как типичная системная ошибка: софт снова и снова аварийно завершал работу, создавая ощущение, что проблема в самой Windows. На деле операционная система лишь показывала последствия ошибки в стороннем ПО.

Чен напомнил важную вещь: в экосистеме Windows с миллиардами устройств и огромным количеством приложений далеко не каждый сбой компонента Microsoft означает баг в Windows. Сторонние программы тоже могут ломать системные процессы, особенно если неправильно используют низкоуровневые API.

RSS: Новости на портале Anti-Malware.ru