GPAC MP4box 2.1-DEV-rev574-g9d5bb184b is vulnerable to Buffer Overflow via gf_vvc_read_sps_bs_internal function of media_tools/av_parsers.c
Thanks for reporting your issue. Please make sure these boxes are checked before submitting your issue - thank you!

- [X] I looked for a similar issue and couldn't find any.
- [X] I tried with the latest version of GPAC. Installers available at http://gpac.io/downloads/gpac-nightly-builds/
- [X] I give enough information for contributors to reproduce my issue (meaningful title, github labels, platform and compiler, command-line ...). I can share files anonymously with this dropbox: https://www.mediafire.com/filedrop/filedrop_hosted.php?drop=eec9e058a9486fe4e99c33021481d9e1826ca9dbc242a6cfaab0fe95da5e5d95

Detailed guidelines: http://gpac.io/2013/07/16/how-to-file-a-bug-properly/

# Description

buffer overflow in gf_vvc_read_sps_bs_internal function of media_tools/av_parsers.c

```c
for (i=0; i<sps_rpl1_same_as_rpl0; i++) {
  u32 j;
  sps->num_ref_pic_lists[i] = gf_bs_read_ue_log_idx(bs, "sps_num_ref_pic_lists", i);
  for (j=0; j<sps->num_ref_pic_lists[i]; j++) {
	  s32 res = vvc_parse_ref_pic_list_struct(bs, sps, i, j, &sps->rps[i][j]); // when j == 64, overflow sps->rps
	  if (res<0) return res;
  }
}
```
# Version info

```
MP4Box - GPAC version 2.1-DEV-rev574-g9d5bb184b-master
(c) 2000-2022 Telecom Paris distributed under LGPL v2.1+ - http://gpac.io

Please cite our work in your research:
	GPAC Filters: https://doi.org/10.1145/3339825.3394929
	GPAC: https://doi.org/10.1145/1291233.1291452

GPAC Configuration: --enable-sanitizer
Features: GPAC_CONFIG_LINUX GPAC_64_BITS GPAC_HAS_IPV6 GPAC_HAS_SSL GPAC_HAS_SOCK_UN GPAC_MINIMAL_ODF GPAC_HAS_QJS GPAC_HAS_LINUX_DVB  GPAC_DISABLE_3D
```

# Reproduce 

compile and run

```
./configure --enable-sanitizer
make
./MP4Box import -add poc.mp4
```
Crash reported by sanitizer

```
[VVC] Warning: Error parsing NAL unit
[Core] exp-golomb read failed, not enough bits in bitstream !
media_tools/av_parsers.c:10710:71: runtime error: index 65 out of bounds for type 'VVC_RefPicList [64]'
```

# POC

[poc_bof.zip](https://github.com/gpac/gpac/files/10199702/poc_bof.zip)

# Impact

Potentially causing DoS and RCE

# Credit 

xdchase







Buffer overflow in gf_vvc_read_sps_bs_internal function of media_tools/av_parsers.c
This is a GitHub Issue
repo:gpac
owner:gpac
Title : Buffer overflow in gf_vvc_read_sps_bs_internal function of media_tools/av_parsers.c
Issue date:

--- start body ---
Thanks for reporting your issue. Please make sure these boxes are checked before submitting your issue - thank you!

- [X] I looked for a similar issue and couldn't find any.
- [X] I tried with the latest version of GPAC. Installers available at http://gpac.io/downloads/gpac-nightly-builds/
- [X] I give enough information for contributors to reproduce my issue (meaningful title, github labels, platform and compiler, command-line ...). I can share files anonymously with this dropbox: https://www.mediafire.com/filedrop/filedrop_hosted.php?drop=eec9e058a9486fe4e99c33021481d9e1826ca9dbc242a6cfaab0fe95da5e5d95

Detailed guidelines: http://gpac.io/2013/07/16/how-to-file-a-bug-properly/

# Description

buffer overflow in gf_vvc_read_sps_bs_internal function of media_tools/av_parsers.c

```c
for (i=0; i<sps_rpl1_same_as_rpl0; i++) {
  u32 j;
  sps->num_ref_pic_lists[i] = gf_bs_read_ue_log_idx(bs, "sps_num_ref_pic_lists", i);
  for (j=0; j<sps->num_ref_pic_lists[i]; j++) {
	  s32 res = vvc_parse_ref_pic_list_struct(bs, sps, i, j, &sps->rps[i][j]); // when j == 64, overflow sps->rps
	  if (res<0) return res;
  }
}
```
# Version info

```
MP4Box - GPAC version 2.1-DEV-rev574-g9d5bb184b-master
(c) 2000-2022 Telecom Paris distributed under LGPL v2.1+ - http://gpac.io

Please cite our work in your research:
	GPAC Filters: https://doi.org/10.1145/3339825.3394929
	GPAC: https://doi.org/10.1145/1291233.1291452

GPAC Configuration: --enable-sanitizer
Features: GPAC_CONFIG_LINUX GPAC_64_BITS GPAC_HAS_IPV6 GPAC_HAS_SSL GPAC_HAS_SOCK_UN GPAC_MINIMAL_ODF GPAC_HAS_QJS GPAC_HAS_LINUX_DVB  GPAC_DISABLE_3D
```

# Reproduce 

compile and run

```
./configure --enable-sanitizer
make
./MP4Box import -add poc.mp4
```
Crash reported by sanitizer

```
[VVC] Warning: Error parsing NAL unit
[Core] exp-golomb read failed, not enough bits in bitstream !
media_tools/av_parsers.c:10710:71: runtime error: index 65 out of bounds for type 'VVC_RefPicList [64]'
```

# POC

[poc_bof.zip](https://github.com/gpac/gpac/files/10199702/poc_bof.zip)

# Impact

Potentially causing DoS and RCE

# Credit 

xdchase







--- end body ---

A buffer overflow vulnerability exists in the gf_vvc_read_sps_bs_internal function of GPAC's media_tools/av_parsers.c. The vulnerability occurs when the number of reference picture lists exceeds the allocated size, leading to an out-of-bounds write. This can potentially allow an attacker to execute arbitrary code or cause a Denial of Service (DoS) by crashing the application.