//Почему замена CAPTCHA Cloudflare на FIDO2 / WebAuthn — действительно плохая идея

Почему замена CAPTCHA Cloudflare на FIDO2 / WebAuthn — действительно плохая идея

Отказ от ответственности: Мысли, выраженные здесь, принадлежат мне, а не моим работодателям.

Недавно Cloudflare выпустили замену CAPTCHA на основе FIDO. Вы можете узнать больше об этом на https://blog.cloudflare.com/introduction-cryptographic-attestation-of-personhood/ и попробовать здесь https://cloudflarechallenge.com/ . Вкратце, как это работает:

  1. Пользователь получает страницу FIDO CAPTCHA.
  2. Пользователь нажимает «Я человек».
  3. Ключ безопасности пользователя загорается. Пользователь нажимает ключ безопасности.
  4. Браузер спрашивает, разрешает ли пользователь Cloudflare получать подтверждение устройства.
  5. Cloudflare получает аттестацию устройства и, используя метаданные от устройства, которые содержат корневой сертификат для пакетного сертификата, находящегося в аттестации, может подтвердить аттестацию устройства.
  6. S uccess, пользователь прошел все проверки.
  7. Так почему это на самом деле плохо?

Что такое аттестация?

Аттестация — это встроенный механизм протокола FIDO, который позволяет проверяющим сторонам (веб-сайтам) получать информацию о модели и производителе аутентификатора.

То, как это делается, заключается в том, что устройство встроило в него пакетный сертификат и пакетный закрытый ключ. Во время регистрации ответ аутентификатора подписывается закрытым ключом пакета, и веб-сайты могут проверить его с помощью открытого ключа, находящегося в сертификате пакета.

Ответ будет содержать какой-то идентификатор модели, например GUID / UUID для FIDO2 и Subject Key Identifier для U2F. Затем веб-сайт Cloudflare имеет корневой сертификат доверия, который идентифицируется с помощью ModelID (GUID или SKID), и, имея этот корневой сертификат, он может проверять сертификат пакета ответа, а с помощью сертификата пакета проверять подпись поверх ответа на аттестацию. Обычная PKI, никакой магии.

Что такое капча?

Тест CAPTCHA разработан, чтобы определить, действительно ли онлайн-пользователь является человеком, а не ботом . CAPTCHA — это аббревиатура от «Полностью автоматизированный общедоступный тест Тьюринга, позволяющий отличить компьютеры от людей».

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

Источник: https://www.cloudflare.com/learning/bots/how-captchas-work/

Итак, идея такова: есть задачи, которые трудны для компьютеров, такие как распознавание изображений, логические задачи и т. Д., Но простые для людей (в основном).

Так почему же аттестация FIDO — плохая идея в качестве замены CAPTCHA?

1. Автоматизировать электронные ключи FIDO очень просто.

Идея CAPTCHA заключается в том, что вы не можете легко автоматизировать задачу. Встречайте 5 $ Arduino и, о боже, ПРОВОДА!

И я не собираюсь рассказывать, насколько легко было бы реализовать автоматическое внедрение ClientPIN.

2. Всплывающие окна не обязательны для злоумышленников.

Если вы думаете, что это будет сложно, потому что пользователю нужно одобрить Popup, немного JS, чтобы изменить запрос браузера, чтобы он был «none», и небольшая модификация браузера, чтобы отключить EraseAttestationStatement https://source.chromium.org/chromium/chromium/ src / + / main: device / fido / attestation_object.cc; bpv = 1; bpt = 1? q = NoneAttestation & ss = chromium% 2Fchromium% 2Fsrc, и вы получите обход всплывающих окон .

UPD: как указал Эрик Лоуренс, вы можете настроить корпоративные политики, которые будут отключать всплывающие окна webauthn https://chromeenterprise.google/policies/#SecurityKeyPermitAttestation

3. Ключи безопасности работают тихо и быстро.

Ключи безопасности на низком уровне занимают от 700 мс до 1700 мс для всех обменов по моему опыту. Это примерно 30 потенциальных запросов в минуту. И вы сделаете это очень эффективно с HID Click Farm!

Идея в том, что у вас есть виртуальные машины с устройством Virtual HID. VHID выдает себя за ключ безопасности, но на самом деле он передает запросы по сети на контроллер фермы, к которому подключены сотни ключей. Пара USB-контроллеров хорошего качества и двенадцать ядер Ryzen с достаточным количеством линий PCI легко справятся с несколькими сотнями устройств HID одновременно.

Что касается устройств, вы можете получить устройства Feitian U2F за 18 долларов или ключи безопасности Yubikey за 20 долларов за штуку.

Браузер отправит запрос на устройство VHID, которое передаст его контроллеру фермы. Ферма выберет любой случайный бесплатный ключ безопасности и вызовет Arduino для выполнения физического щелчка. Устройство вернет ответ и отправит его обратно на виртуальный HID виртуальной машины, который вернется в браузер.

За 25 тысяч долларов вы получите около 1000 электронных ключей и пару хороших машин для управления ими. Разработка программного обеспечения для этого тривиальна и может быть выполнена на Python за очень короткий период, который генерирует 20 000–40 000 аттестаций в минуту.

Наконец, вы можете просто купить много считывателей NFC, таких как ACS122U, и, используя PCSC, вам даже не понадобится Arduino, вы можете просто сказать читателю волшебную команду SCARD_UNPOWER_CARD, чтобы выключить и снова включить устройство.

4. Аттестация — не лучший механизм для CAPTCHA.

Аттестация — не идеальный механизм, и я бы очень отговаривал людей от его использования. Причины для этого такие:

  1. Аттестация ничего не доказывает, кроме модели устройства — в аттестации нет никакого волшебства. Это не доказывает активность пользователя, потому что Cloudflare просто выполняет аттестационную проверку. Вот и все. FIDO действительно хорош против фишинга и ботов, потому что мы знаем, что устройство владеет пользователем, и что оно с помощью FIDO переводит атаку с удаленной грубой силы на прямую личную атаку на настоящего человека. Cloudflare CAPTCHA не достигает этого, потому что не аутентифицирует пользователя. Просто проверяет модель устройства. Вот и все.
  2. Конфиденциальность — FIDO требует, чтобы использование сертификата партии аттестации составляло как минимум ОДИН сертификат партии на 100 000 устройств. Итак, если вы знаете, что у Алисы есть ключ безопасности с этим сертификатом, и вы видите этот сертификат на другом сайте, есть вероятность 1/100 000, что это Алиса. Это не кажется большим количеством, но когда вы объединяете вместе со всей другой информацией отслеживания, которую сайты могут хранить о вас, это становится еще одной частью информации, которая может быть использована против вас, и, как мы все знаем, сегодня все управляется Cloudflare. .
    Это не значит, что аттестация совершенно бесполезна. Это очень важный механизм в средах с высокой податливостью. Банкам и правительствам это действительно необходимо, а недавно правительство Чехии объявило, что сертифицированные FIDO аутентификаторы FIDO2 могут использоваться для их национального идентификатора с помощью eIDAS, а сертифицированные устройства L2 могут использоваться в качестве доказательства с высокой степенью уверенности. Это то, для чего вам нужна аттестация. 1% ситуаций, когда нужна аттестация.
  3. Пользовательский опыт — всплывающие окна — это боль, и многие люди просто отключают их, потому что просто слишком много всплывающих окон. Аттестация вредна для UX, вам следует избегать ее.
  4. Аттестацией очень сложно управлять — вам необходимо собирать метаданные для устройств (в некоторой степени решается с помощью MDS). Вам нужно знать, какие поля вам нужны. Вам нужно доверять метаданным. Это очень сложная проблема, требующая хорошего понимания того, что вы делаете.

В заключении:

Я лично думаю, что в очень краткосрочной перспективе решение Cloudflare поможет с каким-нибудь ботом. Но понимание рынка FIDO и знание того, что ключи безопасности — это в первую очередь решение для корпоративной и резервной аутентификации, и что будущее FIDO лежит в широком развертывании аутентификаторов платформы, заставляет меня полагать, что текущее решение будет широко использоваться при более широком развертывании, поскольку он явно нацелен на тех, кто нуждается и может позволить себе ключи безопасности, предприятия.

Я здесь не для того, чтобы просто гадить на чье-то решение. Я объективно верю, что команда Cloudflare, которая делает действительно крутые вещи, имеет действительно крутые и полезные проекты, действительно пыталась сделать что-то хорошее. Но в этом конкретном случае они создают потенциально еще большую проблему, не решая того, что решала CAPTCHA, делая плохой ИИ день ото дня лучше, пока Скайнет не убье