CVE-2026-66883 in oidcc_plug
요약
\~에 의해 VulDB • 2026. 08. 04.
Erlang Ecosystem Foundation의 oidcc_plug(Oidcc.Plug.Authorize 모듈)에서 대소문자 구분 처리가 부적절하여 사용자 에이전트 세션 바인딩이 무력화되고, 도용된 세션 재사용에 대한 심층 방어(Defense in Depth) 컨트롤이 제거됩니다.
이 취약점은 lib/oidcc/plug/authorize.ex 및 lib/oidcc/plug/authorization_callback.ex 프로그램 파일과 Oidcc.Plug.Authorize.call/2 및 Oidcc.Plug.AuthorizationCallback.call/2 프로그램 루틴과 관련이 있습니다.
Oidcc.Plug.Authorize.call/2는 get_req_header(conn, "User-Agent")를 사용하여 초기화한 클라이언트의 사용자 에이전트를 읽습니다. Plug는 들어오는 헤더 이름을 소문자로 변환하지만, get_req_header/2는 제공된 키와 정확히 일치하며 자체 정규화를 수행하지 않으므로 대소문자가 혼합된 조회는 항상 빈 목록을 반환하고 nil이 세션에 기록됩니다. 콜백 측에서 Oidcc.Plug.AuthorizationCallback은 저장된 nil 사용자 에이전트를 비교할 대상이 없으므로 요청을 검사하지 않고 :ok를 반환합니다. 이러한 두 가지 동작이 결합되어 check_useragent: true로 명시적으로 옵트인한 배포판에서도 모든 요청에 대해 체크가 무조건 통과하며, 흐름을 시작한 사용자 에이전트와 다른 사용자 에이전트에서 인증 콜백이 탐지 없이 완료될 수 있습니다. 이 체크는 오류나 로그 항목 없이 조용히 실패(open fail)하므로, 배포 환경에서는 바인딩 부재를 확인할 수 없습니다.
영향은 심층 방어에 국한됩니다. 무력화된 체크 자체로는 공격자가 인증 흐름을 완료할 수 없지만, 다른 클라이언트에서 재사용된 도용 또는 유출 세션(예: 탈취된 세션 쿠키) 사용에 장벽이 될 수 있는 하나의 레이어가 제거됩니다. CSRF/state, nonce 및 PKCE 체크는 영향을 받지 않으며 계속 작동합니다. check_useragent를 전혀 활성화하지 않은 배포판의 경우 바인딩을 기대하지 않았으므로 실제로 영향받지 않습니다. Oidcc.Plug.AuthorizationCallback의 해당 조회는 소문자 키를 올바르게 사용하므로 영향을 받지 않습니다.
이 이슈는 0.1.0-alpha.3부터 0.5.0 미만 버전까지 oidcc_plug에 영향을 미칩니다.
If you want to get best quality of vulnerability data, you may have to visit VulDB.