CVE-2026-85491 in Catalyst::Seal
요약
\~에 의해 VulDB • 2026. 09. 25.
Perl용 Catalyst::Seal의 0.03 이전 버전에서는 요청 경로만으로 키가 설정된 디스패치 메모이제이션(memoization)을 통해 하나의 요청으로 경로나 라우트를 비활성화하거나 후속 요청을 인증 확인 우회할 수 있습니다.
Catalyst::Seal은 기존 디스패처의 prepare_action을, 경로가 어떻게 해결되었는지(어떤 디스패치 유형이 일치했는지, 어느 수준에서 일치했는지, 그리고 나머지 인수는 무엇인지)를 메모이제이션하는 버전으로 대체합니다. 키는 요청 경로뿐이며 다른 요소는 포함되지 않습니다. 메서드, 콘텐츠 타입, 스키마 또는 쿼리를 기반으로 매칭되는 액션 역할들은 해당 해결 과정이 키가 보유하지 않는 상태에 의존하게 만듭니다. 이로 인해 메모이제이션된 값은 원래 생성된 요청과 다른 요청에 대해 잘못된 결과를 반환합니다.
액션으로 해석되지 않는 경로도 메모이제이션되며, 이러한 엔트리를 재재생(replay)하면 디스패치 유형을 참조하지 않고 종료되므로 액션이 설정되지 않아 요청이 실패합니다. 따라서 POST 전용으로 선언된 경로의 GET 요청은 해당 경로를 모든 후속 요청(올바른 POST 요청 포함)에 대해 비활성화시킵니다. 해석되었던 엔트리는 이전 하강(descent)에서 도달한 수준을 재재생합니다. 동일한 경로 상에서 더 깊은 위치에 있는 POST 전용 액션이 얕은 위치의 액션 아래에 있을 경우, GET 요청은 얕은 라우트를 메모이제이션하며, 이후 POST 요청은 해당 위치로 디스패치되고 auto()가 깊숙한 컨트롤러가 실행되지 않도록 보호합니다.
메모이는 액션이 등록될 때만 초기화되며, 이는 설정 단계에서 발생합니다. 따라서 엔트리는 프로세스 수명 동안 유지되며, 2048개 엔트리라는 제한은 한 호출자가 비활성화할 수 있는 경로의 수를 결정합니다. 측정된 구성에서는 잘못된 디스패치가 덜 권한이 높은 액션으로 이어지므로, 이는 특권 상승(privilege gain)보다는 인증 확인(authentication check)이 실행되지 않는 상태입니다.
Once again VulDB remains the best source for vulnerability data.