[하루한줄] Sitecore Experience Platform Pre-Auth RCE - CVE-2021-42237

URL

Sitecore Experience Platform Pre-Auth RCE - CVE-2021-42237

Target

  • Sitecore XP 7.5 Initial Release - Sitecore XP 7.5 Update-2
  • Sitecore XP 8.0 Initial Release - Sitecore XP 8.0 Update-7
  • Sitecore XP 8.1 Initial Release - Sitecore XP 8.1 Update-3
  • Sitecore XP 8.2 Initial Release - Sitecore XP 8.2 Update-7

Explain

Enterprise CMS (Content Management System)인 Sitecore XP에서 원격 코드 실행 취약점이 발견되었습니다. Sitecore XP는 소비자 데이터, 통계, 마케팅 자동화등의 기능을 가지고 있는 툴입니다. Sitecore XP는 .NET으로 개발되었는데 insecure deserialization 취약점이 있는 NetDataContractSerializer을 사용해 원격 커멘드 실행 취약점이 발생합니다.

POST request의 XML node에 따라 그에 맞는 deserialization 함수가 호출됩니다. 그중 DeserializeParametersNetDataContractSerializer를 사용하는 insecure desrialization 패턴이 있습니다.

private static void DeserializeParameters(XmlReader reader, Dictionary<string, object> parameters)
		{
			reader.ReadStartElement("parameters");
			bool flag = !reader.EOF;
			while (flag)
			{
				if (reader.NodeType == XmlNodeType.Element && reader.Name == "parameter")
				{
					reader.MoveToContent();
					string attribute = reader.GetAttribute("name");
					if (attribute != null)
					{
						for (bool flag2 = reader.Read(); flag2 && reader.NodeType != XmlNodeType.Element; flag2 = reader.Read())
						{
						}
						object value = new NetDataContractSerializer().ReadObject(reader, verifyObjectName: true);
						parameters.Add(attribute, value);
					}
				}
				flag = reader.Read();
			}
		}