[하루한줄] SLUB overflow CVE-2021-42327

URL

SLUB overflow CVE-2021-42327

Target

Linux kernel through 5.14.14

Explain

AMD GPU display driver debug filesystem에 악의적인 데이터를 전달해 Linux kernal 5.14.14 이전 버전의 AMD Radeon 그래픽카드 드라이버에서 heap overflow 취약점을 발생시킬 수 있습니다.

다음은 amdgpu_dm_debugfs.c의 parse_write_buffer_into_params() 코드 일부분입니다.

static int parse_write_buffer_into_params(char *wr_buf, uint32_t wr_buf_size,
					  long *param, const char __user *buf,
					  int max_param_num,
					  uint8_t *param_nums)
{
char *wr_buf_ptr = NULL;
	uint32_t wr_buf_count = 0;
	int r;
	char *sub_str = NULL;
	const char delimiter[3] = {' ', '\\n', '\\0'};
	uint8_t param_index = 0;

	*param_nums = 0;

	wr_buf_ptr = wr_buf;

	r = copy_from_user(wr_buf_ptr, buf, wr_buf_size); //here

	if (r >= wr_buf_size) {
		DRM_DEBUG_DRIVER("user data not be read\\n");
		return -EINVAL;
	}

user space로부터 40 byte 크기의 힙 버퍼에 데이터를 복사할 때 copy_from_user의 크기를 사용하는데, 해당 값에 대한 검증이 없어 취약점이 발생합니다. 로컬에 접근 권한이 있는 해커는 이 취약점을 사용해 권한 상승을 노릴 수 있습니다.