Skip to content

bk: фикс passkey по безопасности, без обратной совместимости#109

Open
bkeenke wants to merge 1 commit into
danuk:masterfrom
bkeenke:security-01
Open

bk: фикс passkey по безопасности, без обратной совместимости#109
bkeenke wants to merge 1 commit into
danuk:masterfrom
bkeenke:security-01

Conversation

@bkeenke

@bkeenke bkeenke commented Jul 6, 2026

Copy link
Copy Markdown
Collaborator

Не получилось сделать обратно совместимым, всем кто имеет зарегистрированный passkey нужно будет перерегистрировать его

Что сделано:

  1. Регистрация (api_register_complete) — теперь парсит attestationObject (CBOR), проверяет rpIdHash внутри authenticatorData против ожидаемого RP ID, извлекает реальный COSE-открытый ключ (EC2/P-256) и сохраняет его в структурированном виде (hex x/y), а не сырой блоб.
  2. Аутентификация (api_auth_public) — теперь требует authenticatorData и signature (фронтенд их уже отправлял, бэкенд просто игнорировал), проверяет флаг user present, сверяет rpIdHash, и криптографически проверяет ECDSA-подпись над authenticatorData || SHA256(clientDataJSON) реальным сохранённым публичным ключом через Crypt::PK::ECC.
  3. Записи без корректного публичного ключа (все существующие до фикса) — надёжно отклоняются, а не молча пропускаются.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant