jq는 명령줄 JSON 프로세서입니다. 1.8.2 이전 버전에서는 'jq --rawfile'을 사용하면 처리된 크기가 너무 큰 문자열 오류를 유효하지 않은 상태 재사용으로 전환하고 어설션이 비활성화된 빌드에서 범위를 벗어난 실제 힙 쓰기를 수행할 수 있습니다. jv_load_file(raw=1)은 공격자가 제어하는 파일을 읽을 때 동일한 jv 문자열 누산기에 파일 청크를 반복적으로 추가합니다. jv_string_append_buf()가 jv_invalid_with_msg("String too long")를 반환하면 원시 파일 루프가 중지되지 않습니다. 파일에 적어도 1바이트 이상이 포함되어 있으면 다음 루프는
jq는 명령줄 JSON 프로세서입니다. 1.8.2 이전 버전에서는 'jq --rawfile'을 사용하면 처리된 크기가 너무 큰 문자열 오류를 유효하지 않은 상태 재사용으로 전환하고 어설션이 비활성화된 빌드에서 범위를 벗어난 실제 힙 쓰기를 수행할 수 있습니다. jv_load_file(raw=1)은 공격자가 제어하는 파일을 읽을 때 동일한 jv 문자열 누산기에 파일 청크를 반복적으로 추가합니다. jv_string_append_buf()가 jv_invalid_with_msg("String too long")를 반환하면 원시 파일 루프가 중지되지 않습니다. 파일에 1바이트 이상이 포함되어 있으면 다음 루프 반복에서는 이미 유효하지 않은 개체에 새 청크를 추가합니다. 어설션이 활성화되면 jvp_string_ptr()에서 중단됩니다. 어설션이 비활성화되면 잘못된 개체는 문자열 개체로 해석되고 ASan은 힙 버퍼 오버플로를 보고합니다. 이 취약점은 1.8.2에서 수정되었습니다.
왜 이 VPI인가 (설명가능 · 실험적)
VPI 산정 기준
| 영향도 | 71.00 |
| 악용 신호(PoC 존재) | ×1.20 |
| VPI | 85.20 |
VPI 공식 vpi-v1 기준