Perl용 YAML::Syck 버전 1.47에서는 syck_hdlr_add_anchor의 앵커 테이블 키로 재사용되는 앵커 이름을 통해 힙 사용 후 사용을 허용합니다. 번들 libsyck에서 syck_strndup에 의해 할당된 앵커 이름은 노드->앵커(노드가 해제될 때 해제됨) 및 파서의 앵커 테이블에 있는 키로 저장됩니다. 노드를 해제하면 공유 키가 해제되고 나중에 앵커를 다시 정의하면 st_delete가 해제된 키와 비교되므로 st_strcmp는 해제된 힙 메모리를 읽습니다. 앵커는 표준 YAML입니다.
Perl용 YAML::Syck 버전 1.47에서는 syck_hdlr_add_anchor의 앵커 테이블 키로 재사용되는 앵커 이름을 통해 힙 사용 후 사용을 허용합니다.
번들 libsyck에서 syck_strndup에 의해 할당된 앵커 이름은 노드->앵커(노드가 해제될 때 해제됨) 및 파서의 앵커 테이블에 있는 키로 저장됩니다. 노드를 해제하면 공유 키가 해제되고 나중에 앵커를 다시 정의하면 st_delete가 해제된 키와 비교되므로 st_strcmp는 해제된 힙 메모리를 읽습니다. 앵커는 표준 YAML 기능이며 특수 플래그가 필요하지 않으므로 기본 로드 경로에서 도달됩니다.
앵커를 재정의하는 신뢰할 수 없는 문서에서 Load 또는 LoadFile을 실행하는 모든 호출자는 해제된 메모리 읽기에 도달합니다.
왜 이 VPI인가 (설명가능 · 실험적)
VPI 산정 기준
| 영향도 | 78.00 |
| 악용 신호(추가 악용신호 없음) | ×1.00 |
| VPI | 78.00 |
VPI 공식 vpi-v1 기준