Most of today’s computing systems are connected to the network and they constantly communicate with each other using standardized protocols. The protocols’ detailed specifications are open to the public, and many applications based on those protocols are open-sourced, like the OpenSSL project. Unfortunately, there have been continuous attempts to find and exploit vulnerabilities in such applications and Heartbleed is a striking example. Heartbleed shows open protocol standards and their applications are under the risk of a zero-day vulnerability, and that addresses the necessity of defense mechanisms. We propose to use protocol dialect to address the problem. Protocol dialect is a revised version of the existing protocol to encode additional information in the protocol using pre-established secrets. The goal of protocol dialect is to reject communication attempts made by unauthorized users who do not speak our dialect. The protocol dialect should be located at the earliest stage possible of a connection to reduce the risk surface. We define two techniques to convert a protocol into dialect: nonce encoding and order shuffle. Also, we propose two network protocol dialect prototypes. Then we present DialectFilter, a system that uses the proposed protocol dialects to filter out unauthorized packets. We protected the pre-established secrets used in protocol dialects with Intel Software Guard Extensions (SGX). We show that DialectFilter provides security measures against possible zero-day vulnerability.
최근 사용되는 대부분의 컴퓨터 시스템은 네트워크에 연결되어 있으며, 표준 프로토콜을 통해 통신한다. 프로토콜의 세부 명세 내용은 공개되어 있으며, 그러한 프로토콜에 기반한 어플리케이션 중 OpenSSL과 같이 오픈 소스인 경우도 많다. 공개된 어플리케이션에 존재하는 취약점을 찾아 악용하려는 시도는 계속되고 있다는 문제가 있으며 대표적인 예로 Heartbleed가 있다. Heartbleed는 공개된 프로토콜과 그 프로토콜을 기반으로 한 어플리케이션이 잠재적인 제로 데이 취약점의 위험에 노출되어 있다는 문제점이 있음을 보여주는 동시에 그러한 문제에 대한 해결책이 필요함을 시사한다. 이 논문은 위에서 언급한 문제를 해결하기 위해 프로토콜 방언을 사용할 것을 제시한다. 프로토콜 방언은 기존의 프로토콜을 조금 수정해서 사용하는 것으로, 사전에 합의된 비밀을 이용하여 추가적인 정보를 프로토콜에 숨길 수 있는 방법이다. 프로토콜 방언의 목표는 통신을 하려는 상대가 프로토콜 방언을 사용하지 않을 경우 비인가된 사용자로 간주하여 차단하는 것에 있다. 위협에 노출되는 범위를 줄이기 위해 프로토콜 방언을 이용한 차단은 통신이 이루어지는 과정 중 이른 단계에서 차단할 수 있어야 한다. 이 논문은 프로토콜 방언을 위한 방법으로 랜덤값 인코딩과 순서 셔플링을 정의한다. 또한, 이 논문은 두 가지 프로토콜에 대한 방언 기법을 제시한다. 다음으로 이 논문은 제안된 프로토콜 방언으로 비인가된 패킷을 필터링하기 위한 시스템인 DialectFilter를 제안한다. 이 논문에서는 프로토콜 방언에 사용되는 비밀을 보호하기 위해 인텔 소프트웨어 가드 익스텐션을 사용한다. 마지막으로 이 논문은 DialectFilter가 잠재적인 제로데이 취약점에 대한 보안 대책을 제공함을 보여준다.