🔍 CVE-2026-118767

4.8
CVSS Score
MEDIUM
2026-10-29
2026-10-29 18:17
✅ 완료

🇰🇷 한글 설명

Botan은 C++ 암호화 라이브러리입니다. 버전 1.11.22부터 3.13.0 이전까지, Botan의 Python 바인딩은 U+0000(NUL)이 포함된 Python 문자열을 const char*로 변환하면서 NUL 문자를 일관되게 거부하지 않아 bcrypt 및 check_bcrypt가 NUL 이전 접두부만 처리했습니다. 이로 인해 애플리케이션은 더 긴 비밀번호를 검증하면서도 실제로는 더 짧은 값을 해싱하게 되어 비밀번호 정책 우회가 가능했습니다. scrypt와 argon2는 영향을 받지 않으며, 3.13.0 버전에서 수정되었습니다.

💡 쉬운 설명

암호를 만들 때 중간에 보이지 않는 특수 문자가 들어가면, 프로그램이 그 뒤쪽 글자를 무시하고 앞부분만 저장할 수 있습니다. 그 결과 실제 저장되는 암호가 설정한 것보다 짧아져 보안 규칙을 우회당할 수 있습니다.

🇺🇸 원문 (English)

Botan is a C++ cryptography library. From 1.11.22 until 3.13.0, Botan's Python binding converted Python strings containing U+0000 to const char* values without consistently rejecting the embedded NUL, causing bcrypt and check_bcrypt to process only the prefix before the NUL. Applications could validate a longer password but hash a shorter effective value, allowing application password-policy bypass; scrypt and argon2 are unaffected. This issue is fixed in version 3.13.0.

📍 영향받는 시스템

Botan 1.11.22 이상 3.13.0 미만의 Python 바인딩을 사용하며 bcrypt 함수를 쓰는 시스템

⚔️ 공격 벡터

NUL 문자(U+0000)가 포함된 비밀번호를 입력해 검증은 통과하고 실제 해싱은 짧은 접두부로만 이루어지게 하는 방식

🛡️ 대응 방법

Botan을 3.13.0 이상으로 업데이트하거나, 비밀번호에 NUL 문자가 포함되지 않도록 애플리케이션 단에서 입력을 검증합니다.

🔧 검증 코드

출력된 버전이 3.13.0 미만이면 취약하며, 3.13.0 이상이면 이 취약점이 수정된 상태입니다.

Shell / Script
pip show botan3 2>/dev/null | grep -i version || python3 -c "import botan3; print(botan3.__version__)" 2>/dev/null

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:N

💻 영향받는 소프트웨어

Python