Search
👨‍👧

Can I Take Your Subdomain? Exploring Same-Site Attacks in the Modern Web

Created
2021/09/09 11:39
Tags
Web
Subdomain
Conference
Usenix
Published
2021

0. 소개

Related-domain 공격는 subdomain takeover 등 대상 웹 애플리케이션의 형제 도메인을 제어합니다. Related-domain 공격이 가지고 있는 파급력에 비해 연구 커뮤티니에서는 그만큼 주목을 받지 못했습니다. 따라서 본 논문에서는 Related-domain 공격자가 웹 애플리케이션 보안에 가하는 위협을 처음으로 정의하고 수치화합니다. 더불어 쿠키, CSP, CORS, postMessage, 도메인 relaxation 등 다양한 방면에서 이러한 기능을 악용하여 웹 애플리케이션 보안을 훼손할 수 있는 방법을 제시합니다.

1. 배경지식

DNS Resolution
DNS는 기본적으로 ip주소를 사람이 알아볼 수 있는 문자로 연결시켜주는 프로토콜입니다. 이때 ip주소가 문자주소로 변환되는 과정을 DNS Resolution이라고 하는데, 이는 재귀적으로 도메인 계층에 따른 DNS 서버에 요청을 보내는 방식으로 진행이 됩니다. 결론적으로 해당하는 DNS 서버를 만날 경우 이름, TTL, 클래스, 유형, 데이터 형식의 RR(리소스 레코드) 집합을 클라이언트에 반환합니다.
Subdomain
우선 도메인(domain)이란, 인터넷에 연결된 컴퓨터를 사람이 쉽게 기억하고 입력할 수 있도록 문자(영문, 한글 등)로 만든 인터넷주소입니다. (출처) 따라서 서브도메인은 보조 도메인으로써, URL로 전송하거나 계정 내의 IP주소 혹은 디렉토리로 포워딩되는 도메인 이름의 확장자입니다.
예를 들면 www.dubini0.kr/hihi 뿐만아니라 hihi.dubini0.kr도 서브도메인에 포함이 됩니다. 보통 주 도메인과 관련지어 도메인을 부여하고 싶을 때 사용합니다.
Public Suffix List
DNS가 도메인 이름의 계층 구조를 정의한다면 PSL(Public Suffix List)은 등록자에 의해 제어되는 도메인 접미사에 대한 카탈로그입니다. 대표적으로 알고 있는 .com, .org, .net 등은 최상위 도메인(TLD)라고도 불리며, 개인이 등록할 수 있는 접미사들을 주로 유효 TLD(effective TLD)라고 합니다. 따라서 도메인(domain)은 보통 public suffix의 왼쪽에 작성되어있는 것들을 뜻하고, 보통 registerable domain, eTLD+1, 혹은 apex domain이라고 부르며 이 부분이 같으면 같은 사이트에 속한다고 판단합니다.
본 논문을 읽으면서 알아야 할 점은 쿠키는 사이트 정의에 따라 범위가 지정될 수 있으며, 도메인 속성을 공통 상속 항목으로 설정할 경우 서브도메인도 메인 도메인의 쿠키를 공유할 수 있습니다. 다만, 이는 메인 도메인만 설정할 수 있으며, 서브도메인들은 이와 관련된 설정을 할 수 없습니다.

2. 논문정리

본 연구는 related-domain 공격의 위험성을 알리기 위해 진행되었습니다. 크게 세 가지로 나누어 연구를 진행하였으며, 그 내용은 다음과 같습니다.
1.
Related-domain 공격의 종류 및 공격의 파급력 등에 대해 정리합니다.
2.
Related-domain 공격에 따른 위험성을 평가하기 위한 toolchain을 개발하였습니다.
3.
2번에서 개발한 toolchain을 통해 확립된 실험 결과에 대해 보고합니다.
본 논문은 가장 먼저 Related Domain Attack에 대하여 탐구합니다. 특히 related domain attack은 서로 다른 공격 벡터를 시스템화하여 관련 도메인 위치로 확장할 수 있다는 점에서 파급력이 큽니다. 본 연구에서는 관련 도메인 공격자를 기능 집합으로 분류하여 아래에 제시된 바와 같이 가장 일반적인 subdomain takeover 취약점에 대해 Figure 1에 요약된 웹 공격의 전제조건을 표현합니다. 이렇게 체계화를 통해 추후에 논의할 취약점 진단에 사용되었습니다.

Related Domain Attack

기존의 정의로 보았을 때, related domain attacker은 대상 웹 사이트의 관련 도메인에서 호스팅되는 악성 웹 사이트를 운영하는 웹 공격자를 뜻합니다. PSL에 포함된 접미사를 공유하면 두 도메인이 관련이 있게 되기 때문에, 이를 악용하는 공격들이 파생됩니다.
가장 대표적인 경우인 subdomain takeover의 경우 DNS 구성이 잘못되어 발생합니다. 또한 조직에서는 회사 도메인의 하위 도메인을 사용자에게 할당하는 경우도 발생하고, 취약한 웹 응용 프로그램에 침투하여 관련 도메인을 이용하려는 공격자의 권한을 높일 수도 있습니다.
추후에도 자세히 설명하지만, related domain attack에 사용되는 공격 벡터는 공격 대상의 개념보다는 공격자가 가지고 있는 기능에 영향을 미칩니다. 예를 들어 호스트를 완전히 제어하면 공격자가 웹 서버를 구성하여 임의 컨텐츠를 호스팅할 수 있는 기능을 제공하지만, 다른 공격 벡터를 선택할 경우 더 제한된 권한을 가질 수도 있습니다.

Dangling DNS Records

Dangling DNS Record란 이미 만료된 리소스를 가리키는 DNS 서버의 레코드를 말합니다. 이런 레코드는 리소스를 해제한 즉시 삭제해야 하지만 그렇지 못해 발생합니다. 비인가된 접근자가 만료된 리소스를 제어할 수 있는 경우 매달린 DNS 레코드는 취약한 것으로 간주됩니다. 이런 경우는 Cname 형식을 이용하는 경우에 발생할 수 있습니다. 또한 third-party를 사용할 때도 이런 경우가 발생할 수 있는데, 특히 third-party의 경우 잠시 사용하다가 해제시켜놓고 삭제를 하지 않아 발생합니다.

DNS Wildcard

DNS Wildcard의 경우는 dangling DNS record가 발생하는 이유 중 하나인데, 본 논문에서 새롭게 발견하였다고 하여 따로 작성하였습니다. 예를 들어서, 여러 웹 사이트를 example.com의 하위 도메인에서 호스트할 수 있도록 *.example.com과 같은 DNS 와일드카드를 구성하여 운영하는 사이트 운영자가 있다고 가정하겠습니다.
이런 경우에는 말그대로 와일드카드 덕분에 공격자가 원하는 하위 도메인을 서비스 공급자의 계정에 바인딩할 수 있습니다. 연구 조사 결과 일부 서비스 공급자는 상위 도메인이 이미 기존 계정에 매핑되어 있더라도 하위 도메인의 소유권을 확인하지 않는다는 것을 찾아내었습니다. 따라서 공격자는 proj.example.com이라는 적합하게 바인딩된 예시 사이트가 있다면 evil.proj.example.com같은 사이트도 바인딩 시켜버릴 수 있습니다.
조사 결과 일부 서비스 공급자는 www subdomain이 다른 계정에 연결되는 것을 방지하지 않고 www 접두사를 가진 subdomain을 상위 도메인으로 자동 리디렉션하는 것을 확인하였습니다.

Web Threats

본 연구에서는 기본적으로 related domain attack이 발생할 수 있는 요소에 대해서도 정리하였습니다. 본 정리에서는 각 요소에 대해서 언급 및 간단한 정리를 하고 넘어가려고 합니다.
내부적 위협
Cookie 이슈들 (기밀성, 무결성)

RDScan

RDScan은 각종 related-domain attack을 수행하여 취약점을 찾아내는 진단 프로그램입니다. 뒤에서 자세히 이야기하겠지만 수많은 취약점을 찾아내었고, 버그바운티 또한 받았습니다. cnn.com과 time.com같은 뉴스 웹사이트에서부터 .edu, .eu 등등 다양한 종류의 웹사이트에서 subdomain 취약점을 발견할 수 있었습니다.
결론적으로 RDScan을 통해 몇 가지 상관관계성을 찾아내었습니다. 가장 먼저, 서브 도메인의 수와 취약할 가능성이 비례관계를 가진다는 것을 알아내었습니다. 어떻게 보면 너무 당연한 이야기이지만, 이는 Figure 3a를 통해서도 알 수 있고, 하위 도메인이 50,000개 이상인 도메인의 약 15%가 취약하다는 것을 보여줍니다. Figure 3b는 Tranco 목록에 있는 각 사이트의 순위에 따라 취약한 도메인의 분포를 개략적으로 보여줍니다.
마지막으로 Figure 3c는 분석된 웹사이트를 카테고리의 범주로 나누어 보여줍니다. 이 Figure를 통해 몇 가지 결과를 볼 수 있었습니다. 먼저, 동적 DNS 서비스에서 압도적으로 취약한 것을 확인할 수 있었습니다. 그 다음으로는 교육관련 웹사이트였으며, 다른 TLD에 비해 7.32%라는 비교적 높은 비율을 보여주었습니다. (.com의 경우 취약한 사이트가 1.81%)
RDScan이 발견한 대부분의 취약점은 DNS 레코드의 유효성을 정기적으로 확인하여 쉽게 해결할 수 있었지만, 미리 예방을 하는 것이 바람직하다고 시사합니다.
나아가 RDScan은 third-party 서비스에 대해서도 조사를 진행했습니다. 결과는 Table 4에서 확인할 수 있습니다.

Security Evaluation

본 연구에서는 결론적으로 887개 도메인에서 실제로 공격할 수 있는 취약점을 발견하였고, 1,000달러의 버그 바운티를 받은 새로운 subdomain hijacking 기법을 발견했습니다. 이런 취약점을 발견하는데는 앞서 개발한 툴을 사용하였으며, 31가지의 서비스를 통해 취약점을 발견하고, 나아가 개선 사항에 대해서 발견하였습니다. 이를 바탕으로 웹 분석 결과를 해당 사이트들에 제시하였으며, 아래 Table 3은 본 연구에서 분석한 내용을 정리한 테이블입니다.
본 논문은 도메인 공격자가 다양한 공격 벡터를 통해 획득할 수 있는 기능을 명확히 해 관련 도메인 공격자 개념의 다양한 인스턴스가 주목할 가치가 있음을 보여 줍니다.

3. Reference