🇰🇷 한글 설명
Open Access Management(OpenAM)의 RADIUS 인증 모듈이 연결되지 않은 UDP 소켓을 사용하면서 응답의 출처 IP/포트, 식별자, Response Authenticator를 검증하지 않아, 공격자가 첫 번째 UDP 패킷을 위조하여 공유 비밀키 없이 인증을 우회할 수 있습니다. 16.1.1 미만 버전에 영향을 미치며, 16.1.1에서 수정되었습니다.
💡 쉬운 설명
OpenAM이 외부 인증 서버(RADIUS)의 응답을 제대로 확인하지 않아, 공격자가 가짜 '인증 성공' 응답을 보내면 다른 사용자로 로그인할 수 있습니다. 이 취약점을 악용하면 해당 사용자의 권한까지 얻을 수 있습니다.
🇺🇸 원문 (English)
Open Access Management (OpenAM) is an access management solution. Prior to 16.1.1, the `RADIUS` authentication module opens an unconnected datagram socket and trusts the first UDP datagram received on the client source port. The receive path does not verify the source IP and port, match the response identifier to the outstanding request, or verify the RFC 2865 `Response Authenticator`; the RFC 2869 `Message-Authenticator` is neither sent nor required. Any non-Reject/non-Challenge packet is treated as success. On a deployment with a `RADIUS` module instance enabled on a login chain, an unauthenticated network attacker can race the real server on-path or spray forged `Access-Accept` packets off-path and obtain a session for any `RADIUS`-mapped username without knowing the shared secret. Unlike CVE-2024-3596, exploitation requires no MD5 chosen-prefix forgery because no response authenticator is checked. The resulting session carries the impersonated principal's privileges. This issue is fixed in version 16.1.1.
📍 영향받는 시스템
Open Access Management(OpenAM) 16.1.1 미만 버전 중 RADIUS 인증 모듈이 로그인 체인에 활성화된 시스템
⚔️ 공격 벡터
네트워크상의 미인증 공격자가 실제 RADIUS 서버와 경쟁(on-path)하거나 위조된 Access-Accept 패킷을 무작위로 전송(off-path)하여 세션을 탈취합니다.
🛡️ 대응 방법
OpenAM을 16.1.1 이상 버전으로 업그레이드하고, 필요하지 않은 경우 RADIUS 인증 모듈을 비활성화하며, RADIUS 서버와의 통신을 네트워크 수준에서 격리합니다.
🔧 검증 코드
설치된 OpenAM 경로와 JAR 파일명에서 버전 정보를 확인하고, 16.1.1 미만이면 취약한 것으로 판단합니다(버전 확인을 위해 해당 JAR의 매니페스트나 관리 콘솔을 함께 점검하세요).
ls /opt/openam* /usr/share/openam* 2>/dev/null; find / -iname '*openam*.jar' 2>/dev/null | head -5