phenixdigital phoenix_storybook의 코드 주입 취약성으로 인해 HEEx 템플릿 생성 시 삭제되지 않은 속성 값 보간을 통해 인증되지 않은 원격 코드 실행이 허용됩니다. 'Elixir.PhoenixStorybook.Story.PlaygroundPreviewLive':handle_event/3의 psb-sign WebSocket 이벤트 핸들러는 인증되지 않은 클라이언트의 임의 속성 이름과 값을 허용합니다. 이 값은 'Elixir.PhoenixStorybook.Helpers.ExtraAssignsHelpers':handle_set_variation_sign/3에 전달되어 저장됩니다.
phenixdigital phoenix_storybook의 코드 주입 취약성으로 인해 HEEx 템플릿 생성 시 삭제되지 않은 속성 값 보간을 통해 인증되지 않은 원격 코드 실행이 허용됩니다.
'Elixir.PhoenixStorybook.Story.PlaygroundPreviewLive':handle_event/3의 psb-sign WebSocket 이벤트 핸들러는 인증되지 않은 클라이언트의 임의 속성 이름과 값을 허용합니다. 이 값은 'Elixir.PhoenixStorybook.Helpers.ExtraAssignsHelpers':handle_set_variation_sign/3에 전달되어 그대로 저장됩니다. 렌더링할 때 'Elixir.PhoenixStorybook.Rendering.ComponentRenderer':attributes_markup/1은 큰따옴표나 HEEx 표현식 구분 기호를 이스케이프하지 않고 바이너리 속성 값을 name=""로 HEEx 템플릿 문자열에 직접 삽입합니다. 공격자는 닫는 따옴표 뒤에 HEEx 표현식 블록(예: foo" 주입={EXPR} bar=")이 포함된 값을 제공할 수 있으며, 이로 인해 EXPR이 인라인 Elixir 표현식으로 처리됩니다. 결과 템플릿은 EEx.compile_string/2를 통해 컴파일되고 전체 커널 가져오기 및 샌드박스 없이 Code.eval_quoted_with_env/3을 통해 실행되므로 공격자가 서버에서 임의 코드를 실행할 수 있습니다.
이 문제는 1.1.0 이전 0.5.0의 phoenix_storybook에 영향을 미칩니다.
왜 이 VPI인가 (설명가능 · 실험적)
VPI 산정 기준
| 영향도 | 95.00 |
| 악용 신호(추가 악용신호 없음) | ×1.00 |
| VPI | 95.00 |
VPI 공식 vpi-v1 기준