CVE-2020-0601
CVE-2020-0601 — это идентификатор уязвимости в компоненте криптографической библиотеки Windows CryptoAPI (Crypt32.dll), обнаруженный в январе 2020 года и получивший неофициальное название «CurveBall» или «ZombieLoad». Уязвимость позволяет злоумышленнику подделать цифровые подписи и сертификаты, используемые для проверки подлинности программного обеспечения, веб-сайтов и электронной почты, что может привести к компрометации системы, установке вредоносного ПО или перехвату защищённого соединения. Уязвимость затрагивает все поддерживаемые версии операционной системы Microsoft Windows (от Windows 7 до Windows 10 и Windows Server 2008 R2 до Windows Server 2019), а также продукты, использующие Windows CryptoAPI, включая Internet Explorer, Microsoft Edge, Microsoft Office и другие.
История и обнаружение
Уязвимость была обнаружена исследователями из Агентства национальной безопасности США (NSA) в конце 2019 года и раскрыта публично 14 января 2020 года, одновременно с выходом ежемесячного обновления безопасности Microsoft (Patch Tuesday). Microsoft присвоила уязвимости уровень критичности «Critical» (критический) и выпустила исправление в рамках обновления KB4534271 для Windows 10 и соответствующих накопительных пакетов для более старых версий. NSA, как правило, не раскрывает детали уязвимостей, но в данном случае приняло решение о публичном раскрытии, чтобы минимизировать риски для пользователей.
Вскоре после публикации бюллетеня безопасности Microsoft, исследователи из компании Kudelski Security и другие специалисты подтвердили наличие эксплойта, способного использовать уязвимость для подделки сертификатов. В течение нескольких дней после раскрытия были опубликованы Proof-of-Concept (PoC) коды, демонстрирующие атаку. Уязвимость получила широкое освещение в СМИ и стала одной из самых обсуждаемых в 2020 году.
Технические детали
Уязвимость CVE-2020-0601 связана с некорректной проверкой эллиптических кривых (Elliptic Curve Cryptography, ECC) в Windows CryptoAPI. Криптографическая библиотека Crypt32.dll, отвечающая за проверку цифровых подписей и сертификатов, не проверяет, действительно ли используемая эллиптическая кривая соответствует стандарту, заданному сертификатом. Злоумышленник может создать сертификат, в котором используется кастомная (нестандартная) эллиптическая кривая, параметры которой подобраны так, чтобы подпись, сгенерированная с использованием этой кривой, совпадала с подписью, которую система ожидает от легитимного сертификата.
Механизм атаки
- Выбор цели: Злоумышленник выбирает легитимный сертификат, выданный доверенным центром сертификации (например, VeriSign, Let's Encrypt, Microsoft).
- Создание поддельного сертификата: Злоумышленник создаёт новый сертификат, который имеет те же поля (Subject, Issuer, Public Key), что и легитимный, но использует кастомную эллиптическую кривую. Параметры этой кривой (a, b, p, G, n) подбираются таким образом, чтобы дискретный логарифм (секретный ключ) был известен злоумышленнику.
- Подпись: Злоумышленник подписывает поддельный сертификат с помощью кастомной кривой, используя известный ему секретный ключ. Подпись будет корректно верифицироваться только в контексте этой кастомной кривой.
- Эксплуатация: Злоумышленник предъявляет поддельный сертификат системе. Windows CryptoAPI, не проверяя, что кривая соответствует стандарту, использует параметры, указанные в сертификате, и верифицирует подпись. Поскольку подпись корректна для данной кастомной кривой, система считает сертификат действительным.
Последствия
Успешная эксплуатация уязвимости позволяет злоумышленнику:
- Подделать код: Подписывать вредоносное программное обеспечение (например, драйверы, исполняемые файлы) под видом легитимного разработчика (например, Microsoft, Adobe, Google).
- Подделать веб-сайты: Создавать поддельные HTTPS-сертификаты для любых доменов (например, для банков, социальных сетей), что позволяет проводить атаки «человек посередине» (Man-in-the-Middle, MITM) и перехватывать защищённый трафик.
- Подделать электронную почту: Подписывать электронные письма под видом любого отправителя, что может использоваться для фишинговых атак.
- Обойти проверку подлинности: Обойти проверку подлинности в системах, использующих сертификаты (например, в корпоративных сетях, VPN).
Реакция и исправление
Microsoft выпустила исправление 14 января 2020 года. Исправление заключается в том, что Windows CryptoAPI теперь проверяет, соответствует ли эллиптическая кривая, указанная в сертификате, стандарту (например, NIST P-256, P-384, P-521). Если кривая нестандартная, сертификат считается недействительным. Пользователям настоятельно рекомендуется установить все доступные обновления безопасности Windows.
Критика и последствия
Уязвимость CVE-2020-0601 вызвала серьёзную критику в адрес Microsoft и NSA. Критики отметили, что:
- Недостаточное тестирование: Уязвимость существовала в коде CryptoAPI в течение многих лет (предположительно, с момента добавления поддержки ECC в Windows Vista/Server 2008), что свидетельствует о недостаточном тестировании криптографических компонентов.
- Сложность исправления: Хотя исправление было выпущено быстро, оно требовало перезагрузки системы, что могло быть проблематично для критически важных серверов.
- Потенциальное злоупотребление: NSA, будучи разведывательным агентством, могло использовать эту уязвимость для своих целей до её раскрытия, что вызвало этические вопросы.
Влияние
CVE-2020-0601 стала одной из самых значимых уязвимостей в Windows за последние годы. Она продемонстрировала, что даже базовые криптографические компоненты операционной системы могут содержать серьёзные дефекты. Уязвимость также подчеркнула важность своевременного обновления программного обеспечения и необходимость тщательного аудита криптографических библиотек. В ответ на эту уязвимость Microsoft усилила внутренние процессы проверки безопасности и добавила дополнительные тесты для криптографических функций.
Источники
- Microsoft Security Bulletin MS20-006 (CVE-2020-0601)
- NSA Advisory on CVE-2020-0601
- Kudelski Security Research: "CurveBall: Microsoft Windows CryptoAPI Spoofing Vulnerability"
- National Vulnerability Database (NVD) entry for CVE-2020-0601
- "Windows CryptoAPI Spoofing Vulnerability" — Microsoft Docs
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →