BREACH

BREACH(역두문자어: 브라우저 정찰 및 적응형 하이퍼텍스트 압축을 통한 유출, Browser Reconnaissance and Exfiltration via Adaptive Compression of Hypertext, 브리치)는 HTTP 압축 사용 시 HTTPS에 대한 보안 취약점이다. BREACH는 CRIME 보안 취약점을 기반으로 구축되었다. BREACH는 2013년 8월 블랙햇 컨퍼런스에서 보안 연구원 앤젤로 프라도, 닐 해리스, 요엘 글룩에 의해 발표되었다. 이 아이디어는 발표 이전에 커뮤니티에서 논의되었다.

세부 정보

CRIME 공격은 많은 수의 프로토콜에 대해 효과적으로 작동할 수 있는 일반적인 공격으로 제시되었지만, SPDY 요청 압축 및 TLS 압축에 대한 악용만 시연되었고 브라우저 및 서버에서 대부분 완화되었다. HTTP 압축에 대한 CRIME 악용은 전혀 완화되지 않았는데, CRIME의 저자들은 이 취약점이 SPDY 및 TLS 압축을 합친 것보다 훨씬 더 광범위할 수 있다고 경고했다.

BREACH는 HTTP 압축에 대한 CRIME 공격의 한 사례로, 많은 웹 브라우저 및 서버에서 HTTP 내의 content-encoding 옵션을 통해 gzip 또는 DEFLATE 데이터 압축 알고리즘을 사용하는 것이다. 이 압축 오라클이 주어지면 BREACH 공격의 나머지는 CRIME 악용과 동일한 일반적인 선을 따르며, 초기 블라인드 무차별 대입 검색을 수행하여 몇 바이트를 추측한 다음, 분할 정복 검색을 통해 올바른 추측을 임의로 많은 양의 콘텐츠로 확장한다.

완화

BREACH는 기본 HTTP 프로토콜의 압축을 악용한다. 따라서 TLS 압축을 끄는 것은 BREACH에 아무런 영향을 미치지 않으며, BREACH는 여전히 HTTP 페이로드에 대해 선택 평문 공격을 수행할 수 있다.

결과적으로 클라이언트와 서버는 HTTP 압축을 완전히 비활성화하거나(성능 저하 초래), 사이트 간 요청 위조 (CSRF) 보호와 같은 개별 공격 시나리오에서 BREACH를 방해하기 위한 해결책을 채택해야 한다.

또 다른 제안된 접근 방식은 리퍼러 헤더가 교차 사이트 요청을 나타내거나 헤더가 없을 때 HTTP 압축을 비활성화하는 것이다. 이 접근 방식은 기능 손실 없이 공격을 효과적으로 완화하며, 영향을 받는 요청에 대해서만 성능 저하가 발생한다.

또 다른 접근 방식은 TLS, HTTP 헤더 또는 페이로드 수준에서 패딩을 추가하는 것이다. 2013-2014년경에, 길이 숨김 패딩을 위한 TLS 확장에 대한 IETF 초안 제안이 있었고, 이론적으로는 이 공격에 대한 완화책으로 사용될 수 있었다. 이것은 TLS 페이로드의 실제 길이를 고정된 길이 세트로 반올림하기 위해 패딩을 삽입하거나 외부 길이를 무작위화하여 BREACH 공격의 기반이 되는 압축률의 작은 변화를 감지할 가능성을 줄인다. 그러나 이 초안은 그 이후로 추가 조치 없이 만료되었다.

매우 효과적인 완화책은 HTB (Heal-the-BREACH)이며, 압축된 데이터에 무작위 크기의 패딩을 추가하여 출력 콘텐츠 크기에 약간의 변화를 제공한다. 이 무작위성은 BREACH가 비밀 토큰의 올바른 문자를 추측하는 것을 500배(최대 10바이트)에서 500,000배(최대 100바이트)까지 지연시킨다. HTB는 최소한의 CPU 사용량과 최소한의 대역폭 증가로 서버의 모든 웹사이트 및 페이지를 보호한다.

 각주 

 외부 링크 
 BREACH 공식 웹사이트
 BlackHat 2013에서 시연된 BREACH 공격을 실행하는 도구
 HEIST, BlackHat 2016에서 시연된 응답 본문에 대한 관련 압축 기반 공격

분류:암호학
분류:데이터 압축
분류:웹 취약점 공격
분류:전송 계층 보안