🇰🇷 한글 설명
Rust용 OpenSSL 바인딩 라이브러리의 0.9.0~0.10.77 버전에서 *_from_pem_callback API가 사용자 콜백 반환 길이를 검증하지 않습니다. 버퍼보다 큰 값을 반환하는 패스워드 콜백으로 인해 OpenSSL의 일부 버전에서 버퍼 오버리드 및 메모리 유출이 발생합니다.
💡 쉬운 설명
Rust의 암호화 라이브러리 rust-openssl에 버그가 있어서, 암호 입력 함수가 예상보다 큰 데이터를 반환하면 시스템 메모리가 손상됩니다. 공격자가 이를 악용하면 민감한 정보 유출이나 권한 상승이 가능합니다.
🇺🇸 원문 (English)
rust-openssl provides OpenSSL bindings for the Rust programming language. From 0.9.0 to before 0.10.78, the *_from_pem_callback APIs did not validate the length returned by the user's callback. A password callback that returns a value larger than the buffer it was given can cause some versions of OpenSSL to over-read this buffer. OpenSSL 3.x is not affected by this. This vulnerability is fixed in 0.10.78.
📍 영향받는 시스템
rust-openssl 0.9.0 ~ 0.10.77 버전 (OpenSSL 3.x 제외)
⚔️ 공격 벡터
PEM 형식의 암호화 파일 처리 시 조작된 패스워드 콜백으로 버퍼 오버리드 유발
🛡️ 대응 방법
rust-openssl을 0.10.78 이상으로 즉시 업그레이드
🔧 검증 코드
VULNERABLE이 출력되면 취약 버전 사용 중이므로 즉시 업그레이드 필요, PATCHED가 출력되면 안전한 버전
cargo tree | grep -E 'openssl\s+v0\.(9|10\.[0-7][0-9])' && echo 'VULNERABLE' || echo 'PATCHED'