В феврале 2015 года Lenovo выпустила заявление о программе Superfish, которая стояла на ее домашних ноутбуках, и там была фраза, ради которой эту историю стоит рассказать целиком: «Мы тщательно изучили эту технологию и не нашли никаких свидетельств, подтверждающих опасения по поводу безопасности». Прожила эта фраза всего несколько часов, после чего ее тихо убрали из текста, потому что за эти часы исследователи успели показать, что каждый такой ноутбук можно атаковать из соседнего кресла в любом кафе с общим Wi-Fi.

Программа, о которой шла речь, показывала покупателям рекламу, и чтобы вставлять ее даже на защищенные страницы, она перехватывала весь HTTPS-трафик ноутбука, включая банки, почту и магазины. Для этого Lenovo с завода ставила в Windows собственный корневой сертификат Superfish, одинаковый на всех машинах, а приватный ключ от него лежал на каждом ноутбуке под паролем, который совпадал с названием фирмы-разработчика.

Дальше в этой истории были извинения технического директора, предупреждение американского CERT, срочное обновление Windows Defender, иск от 32 штатов и разбирательство в FTC, а через полгода Lenovo попалась еще раз, уже с кодом в BIOS, который возвращал ее программы после переустановки Windows.

Покупки, которые вы не заказывали

Superfish была небольшой компанией, которая делала визуальный поиск товаров, и за ней уже тянулся шлейф, потому что ее прошлый продукт WindowShopper 2011 года антивирусы и пользователи дружно считали рекламным мусором. Новая программа называлась VisualDiscovery и работала по той же схеме: следила за тем, что человек смотрит в браузере, и подсовывала ему похожие товары партнерских магазинов прямо поверх страниц, включая выдачу Google.

С сентября 2014 года Lenovo ставила VisualDiscovery на свои домашние ноутбуки, которые продавались в обычных магазинах, от серий G, U, Y, Z и S до Flex, Miix и Yoga, при этом линейку ThinkPad программа обошла стороной. По данным FTC, только в США таких ноутбуков продали около 750 тысяч, и никто из покупателей не давал согласия на то, чтобы производитель встраивал рекламу в его браузер.

Жалобы на форумах поддержки Lenovo начались почти сразу, еще осенью 2014 года, когда люди обнаружили в результатах поиска картинки и ссылки, которых там быть не должно. Сама Superfish описывала свою программу как способ сделать онлайн-покупки удобнее, а Lenovo в январе 2015 года перестала ставить программу на новые машины, хотя уже выпущенные ноутбуки с ней продолжали продаваться в магазинах до июня.

Один ключ на всех

Чтобы вставлять рекламу на страницы с HTTPS, VisualDiscovery использовала библиотеку SSL Digestor компании Komodia, которая в рекламе прямо обещала расшифровывать защищенный трафик так, чтобы браузер ничего не заподозрил. Изначально Komodia продавала эту технологию для родительского контроля и фильтрации спама, а работала она по классической схеме атаки посредника: программа вставала между браузером и сайтом, на лету выпускала поддельный сертификат для каждого домена и подписывала его своим корневым сертификатом, который заранее положили в доверенное хранилище Windows.

Пока такой корневой сертификат уникален для каждой машины и его ключ нигде не утекает, схема остается сомнительной, но хотя бы локальной. У Superfish сертификат и приватный ключ были одинаковыми на всех ноутбуках, так что достаточно было достать ключ с одной машины, чтобы получить возможность подделывать любые сайты для всех владельцев таких Lenovo. 19 февраля 2015 года этим занялся Роберт Грэм из Errata Security: он снял дамп памяти процесса Superfish, нашел в нем зашифрованный приватный ключ, а пароль подобрал словарем из 2203 слов, которые вытащил из того же дампа. Паролем оказалось слово komodia, то есть название фирмы-разработчика, и, как выяснилось позже, тот же пароль стоял и в других продуктах на ее библиотеке.

С этим ключом любой человек в одной сети с жертвой, например в кафе или в аэропорту, мог показать ей поддельный сайт банка с зеленым замочком, и ни один браузер на ноутбуке не выдал бы предупреждения. Криптограф Мэтью Грин в комментарии для Threatpost назвал всю конструкцию просто паршивой идеей, и спорить с ним никто не стал. Проверить, остался ли сертификат на старом ноутбуке, можно одной командой в PowerShell:

# ищем в хранилище корневых сертификатов следы Superfish
Get-ChildItem Cert:\LocalMachine\Root |
    Where-Object { $_.Subject -like "*Superfish*" }  # пустой вывод означает, что все чисто

Через день выяснилось, что дела еще хуже, когда Филиппо Вальсорда разобрал, как Komodia проверяет настоящие сертификаты сайтов, и обнаружил, что прокси переподписывает даже недействительный сертификат, меняя в нем только основное имя домена на метку ошибки и оставляя нетронутым поле альтернативных имен. Поэтому злоумышленнику не нужен был даже украденный ключ: хватало любого самодельного сертификата с нужным доменом в альтернативных именах, и Superfish сама превращала его в доверенный.

Несколько часов уверенности

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

20 февраля американский CERT выпустил отдельное предупреждение TA15-051A о том, что Superfish делает ноутбуки уязвимыми для подмены HTTPS, а Microsoft в тот же день обновила Windows Defender так, чтобы он сам находил Superfish и удалял ее корневой сертификат. Получилось, что производитель Windows чистил ноутбуки Lenovo своим антивирусом одновременно с тем, как сама Lenovo только выпускала утилиту для удаления.

Komodia у вас дома

Когда пароль komodia стал известен, исследователи начали искать ту же библиотеку в других программах и нашли ее в целом наборе продуктов, которые продавали как средство защиты: в родительском контроле KeepMyFamilySecure и Qustodio, в системе мониторинга сотрудников StaffCop, в Ad-Aware от Lavasoft и в нескольких веб-фильтрах. Параллельно всплыла программа PrivDog, которую продвигали компании группы Comodo. И хотя в списке продуктов на библиотеке Komodia ее не было и общего ключа на все машины тоже, она вообще не проверяла настоящие сертификаты сайтов и потому пропускала поддельные.

26 февраля EFF опубликовала данные своей обсерватории SSL: в ней нашлось около 1600 сертификатов, которые Komodia должна была отклонить, но не отклонила. Cреди доменов в них были Amazon, Google, Yahoo, Twitter, Outlook.com, а также банки HSBC и Wells Fargo. Исследователи осторожно написали, что часть этих сертификатов могла появиться из-за ошибок конфигурации, но вряд ли все. То есть кто-то, скорее всего этой дырой уже пользовался.

Мировая без штрафа

Разбирательство с властями США растянулось на два с половиной года и закончилось в сентябре 2017 года, когда Lenovo урегулировала претензии FTC и генеральных прокуроров 32 штатов. FTC обошлась без штрафа, штатам компания выплатила 3.5 миллиона долларов и при этом не признала за собой никакой вины.

Главной частью соглашения стали обязательства Lenovo на будущее, и прежде всего компания должна спрашивать явного согласия покупателя перед установкой подобных программ и давать понятный способ от них отказаться. Кроме того, она обязалась завести документированную программу безопасности под присмотром отдельного руководителя и следующие 20 лет каждые два года проходить внешний аудит.

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

Программа, которую нельзя удалить

Тем временем в августе 2015 года выяснилось, что у Lenovo был и второй механизм доставки софта, куда надежнее рекламной программы. В прошивку материнских плат части своих домашних ноутбуков и десктопов Lenovo встроила программу Lenovo Service Engine, которая запускалась еще до старта Windows и через системную функцию Windows Platform Binary Table подкладывала в нее свои файлы. Эту функцию Microsoft придумала для критически важных программ, которые должны переживать переустановку системы, и требовала, чтобы такие решения были безопасными.

При каждой загрузке LSE подменял системный файл autochk.exe своей версией, а та копировала в system32 программы LenovoUpdate.exe и LenovoCheck.exe, которые запускались с правами администратора, отправляли в Lenovo данные о системе и подтягивали драйверы вместе с «оптимизатором» OneKey Optimizer. Если владелец удалял все это или вообще форматировал диск и ставил чистую Windows, при следующей загрузке прошивка возвращала программы на место.

В этом коде исследователь Роэл Схаувенберг нашел переполнение буфера, которое позволяло получить права администратора. Lenovo узнала об этом в апреле 2015 года. В июне она перестала ставить LSE на новые машины, 31 июля без лишнего шума выложила утилиту для его отключения, а 11 августа опубликовала список затронутых моделей и признала, что такое использование WPBT не соответствует обновленным требованиям безопасности Microsoft.

Меньше чем за год Lenovo успела продать сотни тысяч ноутбуков с чужим корневым сертификатом, пароль к которому совпадал с названием фирмы-разработчика. Опасения исследователей компания сначала назвала необоснованными и уже через несколько часов удалила эту фразу из своего заявления. В то же время в прошивке ее компьютеров жил код, который возвращался даже после форматирования диска. На этом фоне 3.5 миллиона долларов и 20 лет аудитов выглядят довольно скромной расплатой, особенно если вспомнить, что все началось с картинок с товарами в выдаче Google.

Комментарии (0)