Reolink デスクトップアプリケーション(バージョン 8.18.12)は、設定ファイルやその他の機密データを暗号化するために AES-CFB アルゴリズムを使用しています。
しかし、この処理で使用される初期化ベクトル(IV)の取り扱いに不備があり、暗号化された設定データが攻撃者によって容易に復号化される脆弱性が生じています。
以下のコードは、IV が実行時に動的に生成されることを示しています:
{
key: "fetchAesIv",
value: function () {
return window.napiDecrypt.getAesIv();
},
}
しかし、返される値は常に同じ文字列 bcswebapp1234567 です。
つまり、IV は技術的には実行時に生成されていますが、実質的にハードコードされており、追加のセキュリティを提供していません。
アプリケーションの実行中、IV の値は DevTools の JavaScript コンソールから動的に取得できます。
window.napiDecrypt.getAesIv() 関数は、定数文字列 bcswebapp1234567 に解決される Promise を返します。

これは、IV がすべての暗号化操作で再利用されていることを示しており、暗号化のベストプラクティスに違反しています。
CFB、CBC、OFB などのブロック暗号モードでは、IV を再利用すると攻撃者が暗号文のパターンを予測できるようになり、最終的にデータの機密性が損なわれる可能性があります。IV の目的を果たすためには、予測不可能な新しい値を動的に生成する必要があります。