

진짜 취약점 찾는데에만 대부분의 시간이 다 들어갔던 것 같다..
CVE-2022-24724라는 취약점이 존재하는 줄도 몰랐는데, 해당 취약점을 활용하는 문제였다.
https://github.com/github/cmark-gfm/security/advisories/GHSA-mc3g-88wq-6f4x

해당 취약점은 마커 행이 UINT16_MAX 열을 초과하는 테이블을 구문 분석할 때 cmark-gfm의 테이블 행 구문 분석
table.c:row_from_string에서 정수 오버플로가 발생하면 힙 메모리 손상이 발생할 수 있다는 점이다.
cmark-gfm이 원격 사용자 제어 마크다운을 렌더링하는데 사용되는 경우,
이 취약점은 영향을 받는 버전의 cmark-gfm 라이브러리를 사용하는 환경에서 RCE로 이어질 수 있다.

이 문제는 libcmark-gfm.so.0.29.0.gfm.2 와 libcmark-gfm-extensions.so.0.29.0.gfm.2 라이브러리를 사용하기 때문에 해당 취약점이 발생할 수 있다. ( 문제파일에서 주어지기 때문에, 처음부터 이걸 검색해볼걸 그랬다..)
row->n_columns++가 증가(uint16_t)한다.n_columns를 신뢰해 정렬 배열 alignments 를 헤더 컬럼 수만큼 calloc(header_row->n_columns, 1)로 할당한다.alignments[i] 접근이 OOB 쓰기가 된다.cmark_mem의 구현체로 대형 mmap 아레나를 확보하고, 상단(top)에서 잘라 쓰는 bump-pointer 방식이다.