[긴급] Cacti 인증 우회 SQL 인젝션 취약점, CVSS 9.8 '치명적' 등급
오픈소스 네트워크 모니터링 프레임워크 Cacti 1.2.30 이하 버전에서 인증 없이 데이터베이스 전체를 탈취할 수 있는 치명적 SQL 인젝션 취약점 발견. 즉시 패치 필요.
https://privacynews.kr/s/87d424핵심 요약
- 오픈소스 성능 관리 프레임워크 Cacti 1.2.30 이하 버전에서 **사전 인증 없이 SQL 인젝션 공격이 가능한 치명적 취약점(CVE-2026-39948)** 발견 - **CVSS 9.8점(Critical)** 등급으로, 게스트 그래프 열람 기능이 활성화된 시스템에서 공격자가 데이터베이스 기밀성·무결성·가용성을 완전히 침해 가능 - 2026년 7월 현재 1.2.31 버전에서 패치 완료, 불균형 따옴표 기법을 이용한 정규표현식 검증 우회 공격 방지주요 내용
오픈소스 네트워크 성능 및 장애 관리 프레임워크인 Cacti에서 2026년 7월 1일 현재 심각한 보안 취약점이 공개되었다. CVE-2026-39948로 등록된 이 취약점은 1.2.30 및 이전 버전에 영향을 미치며, 인증되지 않은 공격자가 원격에서 임의의 SQL 쿼리를 실행할 수 있는 치명적 결함이다.
구체적으로 lib/html_graph.php 및 lib/html_tree.php 파일에서 rfilter 요청 파라미터를 처리하는 과정에 문제가 발견되었다. 개발자들은 정규표현식 검증 기능을 포함한 gfrv() 함수 대신 원시 접근자인 grv() 함수를 사용했으며, 이 값이 RLIKE SQL 절에 직접 결합되는 방식으로 구현되어 있었다. 공격자는 불균형 따옴표(unbalanced-quote) 페이로드를 삽입함으로써 원래 설계된 정규표현식 검증을 우회할 수 있다.
특히 우려되는 점은 이 취약점이 게스트 그래프 열람 기능이 활성화된 설치 환경에서 graph_view.php를 통해 사전 인증 없이 접근 가능하다는 것이다. 이는 외부 공격자가 별도의 계정이나 권한 없이도 데이터베이스 전체에 대한 읽기, 수정, 삭제 권한을 획득할 수 있음을 의미한다. GHSA-69gg-mjfm-jjpc와 유사한 패턴의 취약점으로, Cacti 프로젝트는 긴급 보안 권고를 발표하고 1.2.31 버전에서 수정 사항을 배포했다.
GitHub 커밋 기록(136ae6ef0715e77bca69c0eb60781f5e17df0795)에 따르면, 패치는 입력 검증 로직을 강화하고 SQL 쿼리 구성 방식을 개선하여 인젝션 공격 벡터를 차단하는 방식으로 이루어졌다.
전문가 시각
ISMS-P 선임심사원 관점에서 본 취약점의 핵심은 입력값 검증 단계의 설계 오류와 최소 권한 원칙 미적용이다. 개발 단계에서 보안 코딩 표준(Secure SDLC)을 준수했다면, 외부 입력값을 SQL 쿼리에 직접 결합하는 방식 자체가 코드 리뷰에서 차단되었어야 한다. 특히 정규표현식 검증 함수가 이미 존재함에도 원시 접근자를 사용한 것은 개발자의 보안 인식 부족을 보여준다. 파라미터화된 쿼리(Prepared Statement) 또는 ORM 사용이 표준 대응 방안이며, 입력값 화이트리스트 검증을 다층으로 적용해야 한다.
기업 입장에서는 Cacti를 운영 중인 경우 즉시 1.2.31 버전으로 업데이트해야 하며, 패치 적용이 불가능한 환경에서는 게스트 그래프 열람 기능을 비활성화하고 웹 애플리케이션 방화벽(WAF)에서 SQL 인젝션 패턴 탐지 규칙을 강화해야 한다. 또한 기존 데이터베이스 로그를 분석하여 rfilter 파라미터를 통한 비정상 쿼리 패턴이 있었는지 침해 흔적을 점검해야 한다. 정보보호 관리체계 운영 시 소프트웨어 취약점 관리 절차(패치 관리, 버전 관리)와 접근 통제 정책(인증되지 않은 기능 접근 제한)의 실효성을 재점검하는 계기로 삼아야 한다.
영향받는 시스템 및 조치사항
영향 범위: Cacti 버전 1.2.30 및 그 이전 모든 버전, 특히 게스트 그래프 열람 기능(guest graph viewing)이 활성화된 시스템이 직접적 공격 대상이다. 웹 인터페이스가 인터넷에 노출된 환경에서는 공격 위험이 극대화된다.
CVSS v3 점수 해석: 9.8점(Critical)은 공격 복잡도(Low), 필요 권한(None), 사용자 상호작용(None)이 모두 최악의 조합임을 의미한다. 기밀성(High), 무결성(High), 가용성(High) 영향으로 데이터베이스 전체가 침해 대상이 되며, 네트워크를 통한 원격 공격(Network Attack Vector)이 가능하다.
조치사항: 1. 긴급 패치: Cacti 1.2.31 버전으로 즉시 업그레이드 (https://github.com/Cacti/cacti) 2. 임시 완화: 패치 전까지 게스트 계정 비활성화 및 graph_view.php 접근 제한(웹 서버 설정) 3. 침해 여부 점검: 웹 서버 로그 및 데이터베이스 쿼리 로그에서 rfilter 파라미터 관련 비정상 패턴 분석 4. 모니터링 강화: IDS/IPS에 SQL 인젝션 시그니처 업데이트 및 실시간 탐지 강화
CPPG·ISMS-P 연계 포인트
1. 입력값 검증 및 출력값 정제 (ISMS-P 인증기준 2.8.4 - 보안 약점 제거) 본 취약점은 신뢰할 수 없는 외부 입력값을 검증 없이 SQL 쿼리에 직접 사용한 전형적인 CWE-89(SQL Injection) 사례이다. ISMS-P 인증심사 시 소스코드 보안약점 점검 항목에서 필수 확인 대상이며, 시큐어코딩 가이드의 입력값 검증(화이트리스트 방식), 파라미터화된 쿼리 사용, 에러 메시지 최소화 원칙이 적용되어야 한다. 특히 정규표현식 검증 우회 기법은 필터링 기반 방어의 한계를 보여주는 사례로, 근본적으로는 쿼리 구조 자체를 안전하게 설계해야 함을 시사한다.
2. 접근통제 및 최소권한 원칙 (ISMS-P 인증기준 2.5.3 - 시스템 접근 및 권한 관리) 게스트 계정에 대한 인증 없는 그래프 열람 기능 제공이 공격 표면을 확대한 핵심 원인이다. 인증기준에서 요구하는 '업무상 필요한 최소한의 접근 권한 부여' 원칙이 지켜지지 않았으며, 인증되지 않은 사용자에게 데이터베이스 쿼리를 트리거할 수 있는 기능을 노출한 설계 결함이다. 실무에서는 기본값(default)으로 게스트 기능을 비활성화하고, 활성화 시 읽기 전용 뷰(view) 또는 캐시된 데이터만 제공하도록 아키텍처를 분리해야 한다.

![[진로 탐험] 중학교2학년 대표 | 염우진 ‘바이브 코더’, AI로 에듀테크 생태계를 혁신하다… WJedulab 대표의 실전 창업 스토리](https://jrwrbsncqyzmjnehprhl.supabase.co/storage/v1/object/public/pn-images/articles/1780466504673-hq35er.jpg)
