Skip to content

Fix HOTP rollback, harden backups and update compatible dependencies - #1

Merged
AnoY606-git merged 2 commits into
mainfrom
fix/audit-hotp-backups-hardening
Oct 15, 2026
Merged

AnoY606-git merged 2 commits into
mainfrom
fix/audit-hotp-backups-hardening

Conversation

@AnoY606-git

Copy link
Copy Markdown
Owner

Что исправлено

  • HOTP high-water marks сохраняются отдельно от карточек, в зашифрованном vault и .oab; удаление/повторный импорт, смена HOTP/TOTP и 6/8 цифр больше не теряют известный минимум счётчика.
  • При восстановлении MERGE/REPLACE объединяется история обоих снимков; схема 1 читается и мигрирует при сохранении истории.
  • Лимит 10 000 групп проверяется моделью, bounded JSON-сериализаторами и MERGE; фильтры выводятся лениво.
  • Задание/смена пароля и PIN требует совпадающего подтверждения. Добавлены UI-тесты и обновлён настоящий SAF flow test.
  • Финальный rename аварийного восстановления получает directory fsync после публикации установленного ключа.
  • Исправлена переносимость теста Git-индекса в Windows без потери проверки NUL/newline.
  • Обновлены BC 1.86, ZXing 3.5.4, coroutines 1.11.0 и совместимые AndroidX-зависимости; обновлены лицензии и документация.

Совместимость — важно

Бинарный контейнер .oab остаётся версии 1, но история HOTP требует схему 2 зашифрованного JSON. Новая версия читает старые копии. OpenAuth 1.0.0 не сможет открыть новый vault/копию со схемой 2; откат APK после миграции не поддерживается. До обновления нужно сохранить и проверить независимую старую копию. История, уже отсутствующая в старом vault/backup, не восстанавливается. История ограничена 20 000 отпечатками, без небезопасного автоматического вытеснения.

Проверки

  • Локально: 134 JUnit-теста оригинальных чистых JVM-классов с Kotlin 2.2.21, serialization plugin, JBR 25 / target 17; в том числе новые тесты истории, старого формата, encrypted .oab, MERGE/REPLACE, границ групп и отката HOTP.
  • Локально: 11 Python-тестов политики репозитория; check_repository.py; git diff --check.
  • OSV: для BC 1.86, ZXing 3.5.4 и coroutines Android 1.11.0 advisory не возвращены. Это не полный транзитивный SCA.
  • Android build/lint, остальные app unit tests и настоящие instrumented тесты должны пройти штатный GitHub CI. Локальный JVM runner не заменяет Android-проверки; он не добавлен в продуктовый репозиторий.

Почему не все версии максимальные

Compose BOM 2026.09.00 требует SDK 37/AGP 9.1 через UI 1.12.1; выбран совместимый BOM 2026.06.01. Serialization 1.10/1.11 требует Kotlin 2.3; Kotlin 2.2.21 сохранён. OkHttp/MockWebServer 5.x — отдельная миграция API. Подробности: docs/SECURITY_CHANGES.md.

Подписанный релиз APK и изменение main этим PR не выполняются.

@AnoY606-git
AnoY606-git merged commit 9737153 into main Oct 15, 2026
3 of 6 checks passed
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