[하루한줄] GNU Screen crashs while processing characters

URL

CVE-2021-26937

Target

GNU screen <= 4.8.0

  • Debian 9 ( GNU Screen 4.05.00 )
  • Raspbian 10 ( GNU Screen 4.06.02 )
  • Ubuntu 20.04.1 ( GNU Screen 4.08.00, Windows WSL )
  • Ubuntu 20.04 ( GNU Screen 4.08.00 )

Explain

GNU Screen은 여러 프로세스의 터미널을 한 화면에서 조작할 수 있게 도와주는 multiplexer로, Mac OSX와 대부분의 Linux 배포판에 포함되어있습니다. GNU Screen 4.8.0 이전 버전은 특정 UTF-8 문자 조합을 처리하는 과정에서 취약점(CVE-2021-26937)이 발생합니다. 해커는 이를 악용해 원격 시스템을 대상으로 invalid write access와 Dos를 할 수 있습니다.

else if (!combchars[i])
{
	combchars[i] = (strcut comchar *)malloc(sizeof(struct combchar));
	if (!comchars[i])
		return;
	combchars[i]->prev = i;
	combchars[i]->next = i;
}

encode.c의 일부 코드입니다. comchars[i]의 out-of-range로 인해 특정 UTF-8 문자열이 화면에 출력되면 GNU Screen이 비정상 종료됩니다.

PoC