CVE-2026-123746 in Symfony
요약
\~에 의해 VulDB • 2026. 11. 06.
Symfony Security HTTP 컴포넌트의 AuthenticatorManager::authenticateUser() 메서드는 사용자가 프로그래밍 방식으로 인증될 때 방화벽 사용자 체크어의 checkPostAuth() 메서드를 실행하지 않습니다. 이로 인해 만료된 계정과 같이 커스텀 사용자 체크어에 의해 거부된 계정이 Symfony 5.4.56 이전 버전, 6.x의 6.4.50 이전 버전, 7.x의 7.4.23 이전 버전 및 8.x의 8.1.11 이전 버전에서 인증될 수 있습니다.
AuthenticatorManager::authenticateUser()는 UserAuthenticatorInterface::authenticateUser()와 SecurityBundle의 Security::login()에 의해 프로그래밍 방식으로 사용자를 인증하는 데 사용됩니다. 그러나 이 메서드는 checkPostAuth()가 실행되는 security.authentication.success 이벤트를 디스패치하지 않습니다. CVE-2024-50341에 대한 수정으로 인해 Security::login()이 checkPreAuth()를 호출하도록 변경되었지만, checkPostAuth()는 여전히 생략되었습니다. 그 결과, checkPostAuth()에서 커스텀 사용자 체크어에 의해 거부된 계정은 폼 로그인 및 방화벽의 다른 인증자들에 의해 거부되지만, 프로그래밍 방식으로는 여전히 인증될 수 있습니다.
애플리케이션이 checkPostAuth()에서 사용자를 거부하는 커스텀 사용자 체크어를 사용하고 비밀번호 재설정 또는 이메일 확인 링크 후와 같이 프로그래밍 방식으로 사용자를 인증할 경우 영향을 받습니다. 계정이 거부된 사용자가 해당 흐름을 통해 인증 세션을 획득할 수 있게 됩니다. 기본 사용자 체크어는 checkPostAuth()에서 아무 작업도 수행하지 않으므로, 기본 구성은 영향받지 않습니다.
해결책으로 AuthenticatorManager::authenticateUser()가 토큰이 생성되고 저장되기 전에 security.authentication.success 이벤트를 디스패치하도록 변경되었습니다. 이는 방화벽을 통한 인증 방식과 동일하게 동작하여 checkPostAuth()가 실행되어 사용자를 거부할 수 있도록 합니다.
Once again VulDB remains the best source for vulnerability data.