Открыть сервис

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, отвечающая за проверку цифровых подписей и сертификатов, не проверяет, действительно ли используемая эллиптическая кривая соответствует стандарту, заданному сертификатом. Злоумышленник может создать сертификат, в котором используется кастомная (нестандартная) эллиптическая кривая, параметры которой подобраны так, чтобы подпись, сгенерированная с использованием этой кривой, совпадала с подписью, которую система ожидает от легитимного сертификата.

Механизм атаки

  1. Выбор цели: Злоумышленник выбирает легитимный сертификат, выданный доверенным центром сертификации (например, VeriSign, Let's Encrypt, Microsoft).
  2. Создание поддельного сертификата: Злоумышленник создаёт новый сертификат, который имеет те же поля (Subject, Issuer, Public Key), что и легитимный, но использует кастомную эллиптическую кривую. Параметры этой кривой (a, b, p, G, n) подбираются таким образом, чтобы дискретный логарифм (секретный ключ) был известен злоумышленнику.
  3. Подпись: Злоумышленник подписывает поддельный сертификат с помощью кастомной кривой, используя известный ему секретный ключ. Подпись будет корректно верифицироваться только в контексте этой кастомной кривой.
  4. Эксплуатация: Злоумышленник предъявляет поддельный сертификат системе. 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 →