В современном цифровом мире традиционные пароли начинают уходить на второй план, уступая место более надежным и удобным способам аутентификации. Одним из таких методов являются пасскейсы – удобные и безопасные цифровые ключи, основанные на стандартах WebAuthn и FIDO2, которые облегчают вход в аккаунты без необходимости запоминать сложные пароли. Несмотря на все свои преимущества, эти технологии имеют собственные уязвимости, о которых необходимо знать каждому специалисту по информационной безопасности и большому числу конечных пользователей. Суть технологии WebAuthn и FIDO2 заключается в использовании криптографических методик с применением аппаратных или программных аутентификаторов, таких как смартфон, аппаратный ключ или TPM модули. Технология взаимодействует через протокол CTAP2, который работает с различными транспортными каналами передачи данных, включая USB, NFC и Bluetooth.
Вся эта инфраструктура оборачивается в бинарный протокол, в котором данные представлены в формате CBOR и связаны с уникальными подписными схемами, что создает богатую экосистему, но при этом расширяет поверхность для потенциальных атак. Основная идея безопасности WebAuthn строится на том, что приватные ключи никогда не покидают устройство, а серверы получают только публичные ключи и подтверждения в виде цифровых подписей. Тем не менее, сложности реализации и многоступенчатый процесс взаимодействия между браузером и устройством открывают возможности для обхода и подделки аутентификации, что было продемонстрировано при анализе и разработке программного имитатора безопасности ключа. В ходе исследования был произведен анализ реального трафика между браузером и аппаратным ключом безопасности, например, YubiKey. Была изучена последовательность обмена пакетами протокола CTAP2, включая этап инициализации соединения, отправки команд на создание нового ключа (makeCredential) и получение подтверждений (getAssertion).
Специалисты воочию разобрали структуру передаваемых пакетов, выделяя концы ключей, доказательства права владения и криптографические подписи, используя инструменты для парсинга и декодирования CBOR-объектов. Следующим шагом стала проверка аттестационных данных и валидности подписей с использованием криптографических библиотек и OpenSSL. Это позволило убедиться, что процесс создания и проверки ключей действительно соответствует спецификациям и не содержит критических ошибок в криптотекущих операциях. Тем не менее, возможность извлечения публичных ключей из отклика устройства дает хакерам основу для создания прошивок или программных решений, которые могут имитировать работу настоящих устройств. Важным достижением было создание программного эмулятора CTAP2, способного взаимодействовать с браузером через пользовательский режим, обходя необходимость наличия реального аппаратного ключа.
Этот эмулятор предназначен для работы с USB-HID и способен воспроизводить процесс инициализации, создания и подтверждения ключей, используя заранее известные приватные ключи и детерминированные подписи. Благодаря повторяемости подписей возможно автоматизировать процесс входа в учетные записи без физического доступа к аппаратному ключу. Интеграция с браузером была реализована через механизм виртуальных аутентификаторов в Chrome, доступный через DevTools Protocol. Воспользовавшись этой возможностью, исследователи смогли программно добавлять виртуальные устройства безопасности, задавать им пользовательскую информацию и приватные ключи, а также обходить проверки пользовательских взаимодействий, таких как запросы на подтверждение через устройство. Эта особенность дает полный контроль над аутентификацией без реального участия пользователя.
В результате тестирования виртуального аутентификатора на популярных сервисах были выявлены разноречивые результаты. Некоторые платформы, например Google, успешно проходили этап регистрации, но отвергали фейковые подписи на этапе аутентификации, потому что реализовывали защиту, основанную на отслеживании счетчиков подписей и анализе пользовательских флагов. Другие сайты, включая GitHub и веб-сервисы типа webauthn.io, допускали успешные входы без реального ключа, что свидетельствует о недостаточной проверке надежности ключей на стороне сервера. Ключевой уязвимостью является отсутствие строгого контроля счетчиков подписей, что позволяет подделывать и использовать старые подписи повторно без обнаружения.
Также браузеры и серверы недостаточно жестко проверяют аттестационные данные ключей и иногда позволяют импортировать произвольные ключи без соответствующей проверки цепочки доверия. Для защиты от подобных угроз рекомендуется реализовывать комплексные меры. На стороне серверов необходимо строго соблюдать проверку счетчиков подписей и отбрасывать обращения с подозрительно неподнимающимися значениями. Важно ограничивать число регистраций на единицу IP-адреса, проверять алгоритмы подписи в соответствии с доверенными типами ключей и фильтровать ключи по известным поставщикам. На стороне браузеров стоит вводить ограничения на использование DevTools Protocol для WebAuthn, предоставляя права только локальным разработчикам и блокируя удаленное управление аутентификацией в продуктивных средах.
На уровне стандарта WebAuthn целесообразно ввести дополнительные ограничения по созданию и управлению резидентными ключами через тестовые интерфейсы, чтобы исключить возможность массового распространения поддельных методов аутентификации. Совместное усилие всех участников экосистемы – разработчиков браузеров, сервисов и производителей аппаратного обеспечения – критично для повышения уровня безопасности и доверия к новой парадигме безпарольной аутентификации. Несмотря на продвинутую криптографию и открытость протоколов, вокруг WebAuthn и FIDO2 существует пространство для манипуляций и обходов, вызванное несовершенствами в реализации и эксплуатацией вспомогательных инструментов. Осознание этого факта помогает лучше понять реальные риски и направить усилия по созданию более безопасной и надежной инфраструктуры для будущего цифровой идентификации. Таким образом, переход на пасскейсы не означает полной защиты от угроз.
Важно проводить комплексный анализ протоколов, развивать средства контроля на всех уровнях и повышать осведомленность специалистов, чтобы сохранить баланс между удобством и безопасностью в эпоху беспарольной аутентификации.