[하루한줄] GNU Screen crashs while processing characters
URL
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
본 글은 CC BY-SA 4.0 라이선스로 배포됩니다. 공유 또는 변경 시 반드시 출처를 남겨주시기 바랍니다.