CVE-2015-3246은 Red Hat libuser 라이브러리의 경쟁 조건 취약점으로, 셸 접근이 있는 인증된 로컬 사용자가 libuser를 링크해 컴파일된 프로그램(예: userhelper)을 통해 /etc/passwd 파일을 조작할 수 있게 만드는 결함입니다. CISA KEV(Known Exploited Vulnerabilities) 카탈로그에 등재되어 있어 실제 악용이 확인된 상태이며, Red Hat은 해당 취약점을 Important 수준으로 평가했습니다.
개요

passwd, chfn, chsh와 같은 전통적 프로그램은 /etc/passwd의 임시 사본으로 작업한 뒤 rename() 함수를 사용해 임시 사본을 /etc/passwd로 교체하는 방식으로 동작합니다. Red Hat의 설명에 따르면, libuser는 이러한 방식을 취하지 않는다고 합니다. libuser가 /etc/passwd 파일을 처리하는 방식에 결함이 있어, libuser를 링크해 컴파일된 프로그램을 사용하는 로컬 공격자가 경쟁 조건을 이용하면 /etc/passwd 파일을 조작할 수 있습니다. 그 결과 서비스 거부(Denial of Service)가 발생하거나, 공격자의 권한이 root로 상승할 가능성이 열릴 수 있습니다.
공격이 성립하려면 셸 접근이 있는 인증된 로컬 사용자라는 전제가 필요합니다. 따라서 원격 접근이나 미인증 상태에서 바로 도달하는 취약점은 아닙니다. 다만, 로컬 셸 접근이 허용된 시스템이라면 내부 침투나 계정 오용 시나리오에서 /etc/passwd 무결성 손상의 출발점이 될 수 있어, 이 조건 자체를 점검 기준으로 삼아야 합니다.
영향 범위
영향은 libuser 라이브러리를 사용하는 시스템에 집중됩니다. 구체적으로 아래 환경이 점검 대상이 됩니다.
- libuser를 컴파일해 링크한 프로그램을 실행하는 시스템(예: userhelper를 사용하는 환경)
- usermode 패키지에 포함된 userhelper 유틸리티가 사용 가능한 시스템
- RHEL 6 환경. Red Hat은 RHSA-2015:1482를 통해 RHEL 6의 libuser를 libuser-0.56.13-8.el6_7 버전으로 수정했습니다
- chfn, chsh 또는 userhelper 경로를 통해 /etc/passwd가 수정될 수 있는 환경
영향의 실질적 범위는 크게 두 갈래로 나뉩니다. 첫째는 /etc/passwd 파일 손상으로부터 오는 시스템 인증 정보 무결성 손상입니다. /etc/passwd는 로컬 계정의 핵심이므로, 이 파일이 손상되면 인증과 계정 관리 전반에 지장이 생길 수 있습니다. 둘째는 로컬 공격자 기반 위협의 확대입니다. RHEL 6 등 libuser 기반 시스템에서 로컬 공격자가 이 결함을 이용하면 서비스 거부 또는 root 권한 상승이 가능해질 수 있어, 로컬 접근 통제가 느슨한 환경일수록 영향이 커집니다.
다만 점검 범위를 확정할 때 아래 한계를 함께 고려해야 합니다. Red Hat의 심각도(Important)와 CISA가 부여하는 독립적 운영 우선순위는 다를 수 있어, 이 둘을 동일 가치로 취급할 수는 없습니다. 또한 usermode 패키지 내 userhelper의 별도의 결함으로 언급되는 CVE-2015-3245와 libuser의 CVE-2015-3246은 별개의 취약점으로 구분되며, 본 내용은 CVE-2015-3246에만 한정합니다. RHEL 7, RHEL 8 등 다른 Red Hat 계열 OS에서의 적용 범위나 수정 패키지 정보는 현재 자료에 없어, 해당 환경으로 범위를 확장해 단정할 수는 없습니다.
기술적 분석
이 취약점의 핵심은 파일 교체 과정에 있는 경쟁 조건입니다. passwd, chfn, chsh와 같은 프로그램은 /etc/passwd를 직접 다루지 않고 임시 사본으로 작업을 한 뒤, 완성된 파일을 rename() 함수로 원래 위치에 올리는 방식을 취합니다. Red Hat은 libuser가 이러한 방식, 즉 임시 사본으로 작업한 뒤 rename()으로 /etc/passwd를 교체하는 방식을 취하지 않는다고 설명합니다. 그런데 libuser가 /etc/passwd를 처리하는 방식에 결함이 있어, 이 교체 시점을 노리면 파일이 의도하지 않은 상태로 조작될 수 있습니다.
libuser를 컴파일한 프로그램은 userhelper가 대표적입니다. 로컬 공격자는 이러한 프로그램을 활용해 /etc/passwd를 조작할 수 있고, 이로 인해 서비스 거부나 root 권한으로의 권한 상승이 가능할 수 있습니다. Red Hat의 표현을 보면, 이러한 결과는 확정적인 것이 아니라 가능성이 열린다는 점을 강조하고 있습니다.
공격 성립과 관련된 조건을 정리하면 다음과 같습니다.
- 셸 접근이 가능한 인증된 로컬 사용자의 존재
- libuser를 링크해 컴파일된 프로그램(예: userhelper)을 호출할 수 있는 환경
- chfn, chsh 또는 userhelper 경로를 통해 /etc/passwd가 수정될 수 있는 조건
이 조건들이 충족되면 경쟁 조건을 노리는 공격 경로가 열릴 수 있습니다. 다만 chfn, chsh와 userhelper는 필수 조건이 아니라, Red Hat이 문서에서 제시한 공격 경로에 대한 예시로 이해할 수 있습니다. 따라서 점검도 이러한 조건들이 존재하는지 확인하는 방향으로 잡는 것이 효과적입니다.
한편 현재 자료에서는 공개 PoC나 독립적 기술 연구가 검색되지 않았습니다. 따라서 구체적인 악용 시나리오나 실제 공격 코드의 동작 방식을 근거 있게 설명할 수는 없습니다. 다만 CISA KEV 카탈로그에 등재되어 있다는 사실만으로도 이 취약점이 실제 악용 맥락에서 다뤄진 것으로 해석할 수 있어, PoC 유무와 별개로 관리 우선순위에 반영할 필요가 있습니다. 이 취약점을 추정하기 위한 기술적 세부사항은 확인된 증거가 없어 명시하지 않으며, KEV 등재 사실에 기반한 관리적 해석만 제공합니다.
대응 방안
대응은 패치 적용이 가능한가 여부에 따라 순서가 달라집니다. 먼저 근본 해결 수단인 패치를 확인한 뒤, 적용이 어려운 환경에만 임시 완화책을 쓰는 것이 원칙입니다. KEV 등재에 따라 대상 시스템에 대한 즉시 조사와 로그 점검부터 시작하고, 그 뒤 패치와 임시 완화, 지속적 접근 통제를 이어가는 순서를 권장합니다.
즉시 점검
- KEV 등재에 따라 해당 취약점 대상 시스템을 즉시 조사하고 우선순위를 조정합니다.
- /var/log/secure에서 chfn, chsh, userhelper 실패 시도 로그를 점검합니다. PAM 규칙을 적용한 뒤에는 비권한 사용자의 chfn, chsh 및 userhelper 기능 사용 시도가 실패하고, 기본값으로 /var/log/secure에 기록됩니다.
근본 해결과 임시 완화
- RHSA-2015:1482에 포함된 수정된 libuser 패키지(libuser-0.56.13-8.el6_7)를 적용해 근본적으로 취약점을 해결합니다. RHEL 6 환경이라면 이 패치를 최우선으로 확인해야 합니다.
- libuser 패치 적용이 어려운 시스템에서는 /etc/pam.d/chfn과 /etc/pam.d/chsh 파일에 pam_warn과 pam_deny 규칙을 추가해, 비root 사용자의 취약 기능 사용을 차단합니다.
지속적 접근 통제
- chfn, chsh, userhelper 관련 기능에 대한 비권한 사용자 접근을 통제합니다.
운영적 판단이 필요한 부분은 임시 완화책의 범위입니다. PAM deny 설정은 chfn과 chsh 기능을 비root 사용자에 대해 완전히 차단합니다. 이 기능을 합법적으로 사용하는 환경에서는 업무 중단이 발생할 수 있으므로, 차단 전 해당 기능의 사용 주체를 확인하는 것이 좋습니다. PAM 설정 변경은 임시 완화책이므로, 패치 적용과 병행해 이후 제거 여부를 판단해야 합니다.
한편 아래 영역은 현재 자료로 확인이 되지 않아, 대응 시 주의가 필요합니다. KEV 추가 시점과 정확한 등재 날짜는 증거에 명시되어 있지 않아, 기간을 기준으로 한 대응 우선순위를 구체화하기 어렵습니다. RHEL 7, RHEL 8 등 다른 Red Hat 계열 OS의 적용 범위와 패치 번호 역시 자료에 없어, 이 환경으로 범위를 넓히려면 추가 확인이 필요합니다. /etc/passwd 손상이나 userhelper 비정상 실행에 대한 구체적 탐지 규칙이나 IOC도 자료에 없어, /var/log/secure 로그 확인 수준으로 점검 범위를 한정해야 합니다. usermode 패키지 내 userhelper의 별도 결함(CVE-2015-3245)와 libuser의 CVE-2015-3246을 구분하는 세부 메커니즘도 추가 기술 증거가 필요합니다.
참고자료
- CVE-2015-3246 CISA ADP timeline
- Known Exploited Vulnerabilities Catalog (CVE-2015-3246)
- libuser vulnerabilities (CVE-2015-3245 and CVE-2015-3246)
- 2015-3246 - Red Hat Customer Portal
- RHSA-2015:1482 - RHEL 6 fixed libuser package
함께 읽으면 좋은 글
- HAR와 소스맵으로 웹 애플리케이션 공격면을 점검하는 실전 가이드
- CVE-2026-77550: UniFi OS 인증 우회 취약점, 공식 권고 확인과 네트워크 접근 점검이 먼저
- 모바일 앱 XML 구성 파일 보안 점검: 하드코딩 비밀정보부터 권한·검증까지
본 콘텐츠는 AI 기술로 작성된 분석 리포트를 포함하고 있습니다. 내용 중 사실과 다르거나 보완이 필요한 정보를 발견하셨으면 댓글을 통해 의견을 부탁드립니다. 여러분의 피드백은 더 정확한 보안 정보 공유에 큰 도움이 됩니다.
댓글 (0)
댓글을 작성하려면 로그인이 필요합니다.
로그인아직 댓글이 없습니다.
첫 번째 댓글을 작성해보세요!