🇰🇷 한글 설명
Cacti 1.2.30 이하 버전에서 rrdtool_function_update() 함수가 로케일 설정에 따라 소수점 형식을 잘못 처리하여 RRDtool 메트릭 값을 손상시킬 수 있습니다. 특정 로케일(예: de_DE)에서 소수점이 쉼표(,)로 변환되어 RRDtool이 이를 올바르게 인식하지 못함으로써 데이터 무결성 문제가 발생합니다.
💡 쉬운 설명
컴퓨터의 숫자 표기 방식 설정 때문에 소수점이 점(.)이 아닌 쉼표(,)로 저장되어 데이터가 엉뚱한 곳에 기록되거나 사라지는 문제입니다. 이는 해킹 공격이라기보다 설정 오류로 인해 데이터가 망가지는 현상입니다.
🇺🇸 원문 (English)
Cacti is an open source performance and fault management framework. In versions 1.2.30 and below, the locale-dependent decimal formatting in rrdtool_function_update() can corrupt RRDtool metric values. The rrdtool_function_update() function checks metric values with is_numeric() and concatenates them into the RRDtool update command via PHP string interpolation. PHP's string cast of floats is locale-sensitive: if LC_NUMERIC uses comma as decimal separator (e.g., de_DE), a value of 1.5 becomes "1,5". RRDtool expects . as decimal separator, causing metric data to shift into wrong columns or be silently dropped. No setlocale() reset is present in the update path. This causes a data integrity issue, but is not remotely exploitable; it requires server locale misconfiguration. The issue has been fixed in version 1.2.31.
📍 영향받는 시스템
Cacti 1.2.30 및 그 이하 모든 버전
⚔️ 공격 벡터
원격 공격이 불가능하며, 서버의 로케일(LC_NUMERIC) 설정이 특정 국가 형식으로 구성된 경우 발생함
🛡️ 대응 방법
Cacti를 1.2.31 이상의 버전으로 업데이트하십시오.
🔧 검증 코드
Cacti 설치 여부를 확인한 후, 설치된 버전이 1.2.31 미만인지 관리자 페이지나 패키지 매니저를 통해 직접 확인해야 합니다.
php -r 'include "cacti/include/functions.php"; echo "Version Check";' 2>/dev/null | grep -q 'Cacti' && echo 'Cacti installed' || echo 'Not found'