🇰🇷 한글 설명
Scoold 1.69.1 미만 버전에서 checkApiAuth() 함수가 특정 비밀키로 서명된 JWT를 검증할 때 API 키(jti)를 요구하지 않는 취약점이 존재합니다. 공격자가 서명 비밀키를 획득할 경우 관리자 권한을 탈취하여 민감한 설정 정보와 서버 로그를 탈취하거나 권한이 있는 설정 기능에 접근할 수 있습니다.
💡 쉬운 설명
서비스의 비밀 열쇠를 가진 사람이 가짜 신분증을 만들어 관리자처럼 행동할 수 있는 문제입니다. 이를 통해 중요한 설정 정보나 서버 기록을 몰래 훔쳐볼 수 있습니다.
🇺🇸 원문 (English)
Scoold is a Q&A and a knowledge sharing platform for teams. Prior to 1.69.1, checkApiAuth() in src/main/java/com/erudika/scoold/utils/ScooldUtils.java accepts a JWT signed with app_secret_key or para_secret_key for /api/config and /api/stats without requiring a registered API-key jti, and maps the request to the hardcoded administrative API_USER. The special endpoint checks run even when scoold.api_enabled is false. An attacker who obtains either signing secret can forge a token that reads sensitive configuration and server logs and reaches privileged configuration functionality, while an ordinary login-session token is not sufficient. This issue is fixed in version 1.69.1.
📍 영향받는 시스템
Scoold 버전 1.69.1 미만
⚔️ 공격 벡터
탈취한 app_secret_key 또는 para_secret_key를 사용하여 위조된 JWT 토큰을 생성한 후 API 엔드포인트에 요청 전송
🛡️ 대응 방법
Scoold를 최신 보안 패치가 적용된 버전인 1.69.1 이상으로 업데이트하십시오.
🔧 검증 코드
출력 결과에 1.69.1 이상의 버전 번호가 포함되어 있으면 취약점이 해결된 상태입니다.
curl -s http://<target_host>/api/version | grep -E '1.69.1'