본문 바로가기
Security

HTTP DESYNC ATTACK (REQUEST SMUGGLING) 이란?

by 올엠 2024. 2. 24.
반응형

오늘 Microsoft에서 Microsoft Security Advisory 메일에 흥미로운 내용이 있어 웹에 찾아보니 Http Desync Attack (request smuggling) 공격에 대한 방어 방법에 대한 내용이였다. 어떤 공격일까 라는 생각에 확인해보니 매우 신선한 방식의 공격 기법으로 원문 링크와 주요 내용들을 정리해보았습니다.

smuggling – Wikipedia

 
 

Explain

공격 방식은 Smuggling(밀수) 단어엣 알 수 있듯이 웹서버 요청에 몰래 데이터를 넣는 공격 이라고 할 수 있습니다.

이렇게 몰래 넣은 데이터는 다른 사용자의 요청에 포함되어 전달되어집니다.

CL(Content-Length), TE( Transfer-Encoding)을 Header를 활용한 공격으로 아래와 같은 취약점으로 공격/테스트 가 가능합니다 .

– CL.TE: 0\r\n 이후에 데이터를 보내 서버에 문자를 대기시킴

– TE.CL: Content-Length를 통해 서버에 문자를 대기시킴

– TE.TE: 한쪽에서 Transfer-Encoding를 처리하지 않아 문자를 대기시킴

 

Desync Attack으로 분류되는 사유는 완전하지 않은 동기화를 통해 데이터를 조작하는 공격입니다. 주로 스트리밍 서비스에서 많이 사용되는 방식입니다.

세부적인 설명은 본 공격을 공개한 PortSwigger에서 잘 정리해 두었으니 참조의 원글에서 살펴보시기 바랍니다.

 

Impact

웹 요청에 데이터를 남겨놓는 방식이기 때문에, 사용자 요청을 제어가 가능해고, 다른 사람의 요청에 영향을 주는 XSS가 제일 대표적입니다.

 

아래 참조를 살펴보시면 그외 영향에 대해서도 확인할 수 있습니다.

 

Test

PortSwigger에서 제공하는 Burp Extension을 이용하는것이 제일 좋습니다.

https://github.com/portswigger/http-request-smuggler

그외 테스트 Tool로 Github에서 이용하는 도구를 활용하는 방법도 있습니다.

https://github.com/haroonawanofficial/HTTP-Desync-Attack

 

Actions

Microsoft에서는 보내준 내용과 같이 Regedit를 통해 레지스트리 수정하여 IIS의 request smugging 를 방지 할 수 있습니다.

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters
DisableRequestSmuggling(DWORD)
0 - disable the filter
1 - enable the filter

Tomcat에서도 패치된 버전을 제공하고 있습니다. 보안 패치의 중요성을 다시 한번 느낄 수 있네요.

org.apache.tomcat.embed:tomcat-embed-core (maven)
Patched versions
7.0.100
8.5.51
9.0.31
org.apache.tomcat:tomcat (maven)
Patched versions
7.0.100
8.5.51
9.0.31

Reference

https://portswigger.net/web-security/request-smuggling

https://portal.msrc.microsoft.com/en-us/security-guidance/advisory/ADV200008

https://github.com/advisories/GHSA-767j-jfh2-jvrc

반응형