[하루한줄] CVE-2021-28474: SharePoint Interpretation conflict RCE

URL

CVE-2021-28474: SHAREPOINT REMOTE CODE EXECUTION VIA SERVER-SIDE CONTROL INTERPRETATION CONFLICT

Target

Microsoft SharePoint Server

Explain

Microsoft SharPoint Server에서 발생하는 원격 코드 실행 취약점이 패치되어 write-up이 공개되었습니다. 보안 확인에 사용되는 코드와 실제로 사용자 입력을 처리하는 코드 간의 불일치로 발생하는 취약점입니다. 인증된 SharePoint 사용자는 해당 취약점을 악용해 임의의 .NET 코드를 실행 할 수 있습니다.

EditingPageParser.VerifyControlOnSafeList() 함수는 server-side control(runat="server" attribute가 있는 tag)에 해당하는 input을 파싱해 해쉬 테이블을 만들고 그 값들을 web.config 파일과 비교하여 안전한 control 인지 확인합니다.

문제는 control을 처리할 땐 파서가 attribute를 HTML-decode 하지만, verification 작업에선 HTML-decode를 하지 않습니다. 따라서 runat="server"와 같은 ASPX tag attribute를 사용하면 verification 시 server-side control로 인식되지 않아 bypass 할 수 있습니다.