CVE-2026-80671 in Linux
요약
\~에 의해 VulDB • 2026. 08. 28.
리눅스 커널에서 다음 취약점이 해결되었습니다:
perf sched: register_pid() 오버플로우, strcpy 및 BUG_ON 수정
register_pid()는 신뢰할 수 없는 perf.data를 처리하는 동안 여러 가지 문제를 가지고 있습니다:
1. 정수 오버플로우: (pid + 1) * sizeof(struct task_desc *) 연산은 pid가 클 경우(예: 0x40000000), 32비트 시스템에서 작은 값으로 래핑(wrap)되어 realloc이 매우 작은 버퍼를 반환하고 초기화 루프 내에서 경계 밖 메모리 쓰기(out-of-bounds writes)를 유발합니다.
2. 힙 기반 버퍼 오버플로우: strcpy(task->comm, comm)는 길이 확인 없이 신뢰할 수 없는 comm 문자열을 고정된 20바이트 COMM_LEN 버퍼에 복사합니다.
3. 할당 실패 시 BUG_ON 발생: perf.data는 신뢰할 수 없는 입력이므로, 할당 실패 시 프로세스를 종료하는 대신 정상적으로 처리해야 합니다.
4. sched->tasks의 realloc 결과를 직접 다시 할당하면 실패 시 기존 포인터가 누설(leak)되며, nr_tasks가 realloc 전에 증가하여 실패 시 상태가 손상됩니다.
pid를 PID_MAX_LIMIT(64비트 시스템에서 커널 최대값과 일치하는 4194304)로 제한하고, strcpy 대신 strlcpy를 사용하며, NULL comm에 대한 검증을 추가합니다. 또한 안전한 realloc 패턴을 사용하여 BUG_ON을 NULL 반환으로 대체하고, 결과를 역참조(callers)하는 호출부에서 NULL 체크를 추가합니다.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.