
AES-CFB IV 생성 취약점 in Reolink 데스크톱 애플리케이션
Reolink 데스크톱 애플리케이션(버전 8.18.12)은 AES-CFB 알고리즘을 사용하여 구성 파일 및 기타 민감한 데이터를 암호화합니다.
그러나 이 과정에서 사용되는 초기화 벡터(IV)가 부적절하게 처리되어, 공격자가 암호화된 구성 데이터를 쉽게 복호화할 수 있는 취약점이 발생합니다.
다음 코드는 IV가 런타임에 동적으로 생성됨을 보여줍니다:
{
key: "fetchAesIv",
value: function () {
return window.napiDecrypt.getAesIv();
},
}
그러나 반환되는 값은 항상 동일한 문자열인 bcswebapp1234567입니다.
즉, IV가 기술적으로는 런타임에 생성되지만 사실상 하드코딩되어 있어 추가적인 보안을 제공하지 못합니다.
애플리케이션이 실행되는 동안 DevTools JavaScript 콘솔을 통해 IV 값을 동적으로 검색할 수 있습니다.
window.napiDecrypt.getAesIv() 함수는 상수 문자열 bcswebapp1234567로 해석되는 Promise를 반환합니다.

이는 IV가 모든 암호화 작업에서 재사용되어 암호화 모범 사례를 위반함을 보여줍니다.
CFB, CBC, OFB와 같은 블록 암호 모드에서 IV를 재사용하면 공격자가 암호문 패턴을 예측할 수 있어 궁극적으로 데이터 기밀성이 손상될 수 있습니다. IV의 목적을 충족하려면 예측 불가능한 새 값을 동적으로 생성해야 합니다.