🇰🇷 한글 설명
RVF(구 Remix Validated Form)는 React용 폼 검증 및 상태 관리 라이브러리입니다. 6.0.0 이상 6.0.4 미만 및 7.0.2 미만 버전의 @rvf/set-get 패키지 setPath 함수가 경로 탐색 시 __proto__, constructor, prototype 키를 차단하지 않아 프로토타입 오염이 발생할 수 있습니다. 6.0.4 및 7.0.2에서 수정되었습니다.
💡 쉬운 설명
폼 데이터의 필드 이름을 악용해 서버 프로세스의 기본 객체 속성을 임의로 변경할 수 있는 취약점입니다. 별도 설정 없이도 해당 라이브러리를 사용하는 폼 처리 엔드포인트가 영향을 받습니다.
🇺🇸 원문 (English)
RVF (formerly Remix Validated Form) provides easy form validation and state management for React. From 6.0.0 to before 6.0.4 and 7.0.2, setPath in @rvf/set-get (used by @rvf/core to flatten incoming form data into a nested object) does not block the keys __proto__, constructor, or prototype when walking a path. Because field names in submitted form data are passed directly to setPath via preprocessFormData (and through parseFormData / validate), an attacker who can submit a form to a Remix / React Router app using the library can set arbitrary properties on Object.prototype of the running server process. This is a default-reachable prototype pollution primitive: no special configuration is required. Any endpoint that accepts a form via parseFormData or runs a validator created with createValidator is affected. This vulnerability is fixed in 6.0.4 and 7.0.2.
📍 영향받는 시스템
Remix/React Router 기반 앱에서 @rvf/core, @rvf/set-get 6.0.0~6.0.3 및 7.0.0~7.0.1 버전 사용 시
⚔️ 공격 벡터
공격자가 __proto__, constructor, prototype 등의 키를 포함한 폼 필드 이름으로 데이터를 전송해 서버의 Object.prototype 속성을 변경
🛡️ 대응 방법
@rvf/core 및 @rvf/set-get을 6.0.4 또는 7.0.2 이상으로 업데이트
🔧 검증 코드
출력된 버전이 6.0.4 이상 또는 7.0.2 이상이면 패치 적용 상태이며, 6.0.0~6.0.3 또는 7.0.0~7.0.1이면 취약한 상태입니다.
npm ls @rvf/set-get @rvf/core 2>/dev/null | grep -E '@rvf'
📊 CVSS Vector String
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:L
💻 영향받는 소프트웨어
Multi-Domain Security Management Server