[하루한줄] CVE-2021-33766: AN AUTHENTICATION BYPASS IN MICROSOFT EXCHANGE SERVER

URL

PROXYTOKEN: AN AUTHENTICATION BYPASS IN MICROSOFT EXCHANGE SERVER

Target

Microsoft Exchange Server

Explain

Microsoft Exchange Server에서 인증 우회 취약점이 발견되었습니다. 이 취약점을 통해 해커는 인증 절차 없이 임의 사용자의 이메일 수신함 설정을 조작해 이메일을 탈취할 수 있습니다.

Microsoft Exchange는 front-end와 back-end 웹사이트를 생성합니다. front-end는 주로 back-end의 proxy 기능을 수행합니다. front-end는 모든 post-authentication 요청을 재구성해 back-end로 전달하고 back-end로부터 응답을 수집해 다시 client로 전달합니다.

Microsoft Exchange는 “Delegated Authentication” 기능을 지원합니다. SecurityToken이라는 cookie가 존재한다면 요청에 대한 적절한 인증 절차를 front-end가 아닌 back-end가 수행하게 됩니다. 요청이 들어오면 front-end는 인증 과정을 거치지 않고 그대로 back-end에 전달합니다.

modules> 
...
      <add name="DelegatedAuthModule" type="Microsoft.Exchange.Configuration.DelegatedAuthentication.DelegatedAuthenticationModule, Microsoft.Exchange.Configuration.DelegatedAuth" preCondition="managedHandler" /> 
...
      <!-- Remove all DataCenter only modules by default. They will be enabled by enable-LiveIDForWebApplication.ps1 --> 
      <remove name="DelegatedAuthModule" /> 
      <remove name="OrgIdAuthenticationModule" /> 
      <remove name="LiveIdBasicAuthModule" /> 
      <remove name="OAuthAuthModule" /> 
    </modules>

위는 back-end의 /ecp/web.config 내용 일부입니다. back-end는 “Delegated Authentication” 기능을 수행해야 할 DelegatedAuthModule를 로드하지 않습니다. 즉, front-end는 back-end가 요청의 인증을 처리할 것이라 믿고 인증 절차 없이 요청을 전달하지만 back-end에는 인증에 사용될 모듈이 없어 인증을 수행할 수 없습니다. front-end와 back-end에서 모두 인증되지 않는 요청을 보낼 수 있습니다.