
AES-CFB IV Generation Vulnerability in Reolink Desktop Application
Настольное приложение Reolink (версия 8.18.12) использует алгоритм AES-CFB для шифрования файлов конфигурации и других конфиденциальных данных.
Однако вектор инициализации (IV), используемый в этом процессе, обрабатывается некорректно, что приводит к уязвимости, позволяющей злоумышленнику легко расшифровать зашифрованные данные конфигурации.
Следующий код показывает, что IV генерируется динамически во время выполнения:
{
key: "fetchAesIv",
value: function () {
return window.napiDecrypt.getAesIv();
},
}
Однако возвращаемое значение всегда представляет собой одну и ту же строку: bcswebapp1234567.
Это означает, что, хотя технически IV генерируется во время выполнения, фактически он является жёстко заданным и не обеспечивает дополнительной безопасности.
Пока приложение работает, значение IV можно получить динамически через консоль JavaScript в DevTools.
Функция window.napiDecrypt.getAesIv() возвращает Promise, который разрешается в постоянную строку bcswebapp1234567.

Это демонстрирует, что IV повторно используется во всех операциях шифрования, что нарушает лучшие практики криптографии.
В режимах блочного шифрования, таких как CFB, CBC и OFB, повторное использование IV может позволить злоумышленнику предсказать шаблоны шифротекста, что в конечном итоге ставит под угрозу конфиденциальность данных. Для выполнения назначения IV необходимо динамически генерировать новое непредсказуемое значение.