전 세계 수많은 서버와 애플리케이션의 암호화를 담당하는 오픈소스 라이브러리 OpenSSL에서 초기화되지 않은 메모리 버퍼의 내용을 외부 공격자에게 유출할 수 있는 고위험군 취약점인 CVE-2026-31790이 발견되었습니다. 이 취약점은 암호키를 안전하게 교환하는 메커니즘에서 발생한 논리적 결함으로, 서비스 중인 인프라의 중요 데이터가 노출될 수 있어 빠른 패치가 요구됩니다.
1. 취약점 개요
- CVE 번호: CVE-2026-31790
- 공개 일자: 2026년 4월 7일
- 취약점 유형: 초기화되지 않은 메모리 버퍼 참조 (CWE-824 / Use of Uninitialized Resource)
- 취약점 심각도: 중간~높음 (Moderate / CVSS v3 스코어 7.5)
- 영향을 받는 대상: OpenSSL 3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6 계열 중 패치 이전 버전 및 관련 FIPS 모듈
2. 발생 원인 및 취약점 메커니즘
이번 취약점은 OpenSSL 내부에서 비밀 암호화 키를 수립하기 위해 사용하는 RSASVE 키 캡슐화 메커니즘(Key Encapsulation Mechanism, KEM)의 잘못된 함수 실패 처리 로직에서 기인합니다.
OpenSSL 소스코드 내부의 RSA_public_encrypt() 함수는 성공 시 암호화된 바이트 수를 반환하고, 실패할 경우 -1을 반환하도록 설계되어 있습니다. 그러나 문제가 발생한 검증 코드 스니펫에서는 이 함수가 정상 작동했는지 체크할 때 반환값이 단순히 0이 아닌지(non-zero)만 검사하는 치명적인 논리 오류를 가졌습니다.
이로 인해 내부에서 RSA 암호화 처리가 완전히 실패하여 -1을 반환하더라도, 시스템은 이를 '성공(0이 아님)'으로 잘못 오인하게 됩니다. 결과적으로 호출자에게 암호화 작업이 정상 완료되었다고 알리며 출력 길이를 지정해 주지만, 실제 출력 버퍼 안에는 유효한 암호문 대신 메모리에 남아있던 이전 프로세스의 쓰레기 값(초기화되지 않은 잔재 데이터)이 그대로 방치되는 결과를 낳습니다.
3. 발생 가능한 위협 (Impact)
- 기밀 정보 유출 (Information Disclosure): 공격자가 정상적이지 않은 악성 RSA 공개키를 정교하게 제작하여
EVP_PKEY_encapsulate()함수를 호출하도록 유도하면, 애플리케이션은 캡슐화된 암호문 대신 초기화되지 않은 메모리 영역의 데이터를 공격자에게 전송하게 됩니다. 이 메모리 버퍼 안에는 직전 프로세스나 다른 세션에서 사용되던 비밀번호, 세션 토큰, 개인키 등 민감한 데이터가 포함되어 있을 수 있습니다. - 서비스 거부 공격 (DoS) 및 크래시: 초기화되지 않은 포인터가 잘못된 메모리 주소를 임의로 참조하게 될 경우, 웹서버나 데몬 프로세스가 인덱스 참조 오류(Segmentation Fault)를 일으키며 갑자기 강제 종료될 수 있습니다.
4. 대응 및 조치 방법
방법 A: OpenSSL 패키지 최신 보안 업데이트
OpenSSL 프로젝트와 주요 리눅스 배포판(Red Hat, Rocky Linux, Ubuntu, SUSE 등)은 해당 결함을 수정하고 성공 여부를 엄격하게 교차 검증하도록 보완한 패치 버전을 릴리즈했습니다. 시스템 관리자는 사용하는 OS 환경의 패키지 매니저를 통해 즉각 업데이트를 수행해야 합니다.
# RHEL / Rocky Linux / AlmaLinux 계열
sudo dnf clean metadata && sudo dnf update openssl
# Ubuntu / Debian 계열
sudo apt update && sudo apt --only-upgrade install openssl
# 패치 적용 후 관련된 웹서버(NGINX, Apache) 등 공유 라이브러리를 사용하는 서비스 재시작
sudo systemctl restart nginx
방법 B: 개발자 레벨에서의 소스코드 임시 완화 조치
OpenSSL 라이브러리를 직접 정적/동적 링크하여 애플리케이션을 개발하는 환경이며, 당장 라이브러리 전체를 업데이트하기 곤란한 경우 소스코드에 방어적 코드를 삽입하여 우회할 수 있습니다.
EVP_PKEY_encapsulate() 기능을 호출하여 외부 입력을 처리하기 직전에, 입력받은 공개키의 무결성을 검증하는 EVP_PKEY_public_check() 또는 EVP_PKEY_public_check_quick() 함수를 먼저 실행하도록 비즈니스 로직을 수정하면 공격자가 제공한 비정상적인 RSA 키가 캡슐화 로직으로 진입하는 것을 사전에 차단할 수 있습니다.
5. 결론
CVE-2026-31790 취약점은 암호학적인 알고리즘 자체의 파괴가 아니라, 함수의 리턴값을 잘못 체크하는 아주 사소한 코딩 실수(Logic Flaw)가 시스템 전체의 메모리 기밀성을 무너뜨릴 수 있음을 보여주는 대표적인 사례입니다. 2026년 4월 초에 공식 패치가 발표되어 현재 주요 Linux 배포판의 저장소에 반영이 완료된 상태이므로, 보안 담당자께서는 운영 중인 서버 인프라의 OpenSSL 패키지를 최신 버전으로 조속히 빌드 및 업데이트하시길 권장합니다.
'서버 리뷰' 카테고리의 다른 글
| 클라우드 자격증명 탈취 사고 실무 대응 가이드 (0) | 2026.06.07 |
|---|---|
| [보안 경고] 워드프레스 WP Maps Pro 플러그인 치명적 취약점 발견 (CVE-2026-8732) (0) | 2026.06.04 |
| OpenSSH 루트 권한 인증 우회 취약점(CVE-2026-35414, 일명 SplitSSHell) 분석 및 조치 가이드 (0) | 2026.05.30 |
| NGINX WebDAV 모듈 힙 버퍼 오버플로우 취약점(CVE-2026-27654) 분석 및 대응 가이드 (0) | 2026.05.30 |
| [Network/Java] OpenSSL 검증 코드와 Java PKIX 에러 매핑 완벽 정리 (0) | 2026.05.18 |