cloudflare

BGP AS PATH의 첫 번째 AS 강제하기 (새 탭에서 열림)

최근 BGP 하이재킹에서 공격자는 사용하지 않는 ASN을 이용해 실제 자신의 ASN을 AS_PATH에서 제거하고, 존재하지 않는 네트워크 경로를 위조하고 있다. RPKI-ROV나 ASPA만으로는 이런 공격을 완전히 막기 어려우므로, 고객이 광고한 경로의 첫 번째 ASN이 실제 BGP 피어의 ASN과 일치하는지 검증하는 First AS 검사가 필요하다. 통신사업자는 이 검사를 강제함으로써 위조된 AS_PATH가 상위 네트워크로 전파되는 것을 차단할 수 있다.

위조된 AS_PATH를 이용한 경로 하이재킹

  • Spamhaus가 보고한 여러 하이재킹 사례에서 공격자는 사용되지 않는 ASN을 활용해 비정상적인 AS_PATH를 만들었다.
  • 공격 목적은 다음과 같다.
    • 실제 공격자의 ASN을 경로에서 숨김
    • 자신이 해당 prefix의 발신자인 것처럼 위장
    • 트래픽을 공격자가 원하는 경로로 유도
    • 트래픽 가로채기 또는 추가 공격 수행
  • BGP UPDATE의 AS_PATH는 일반적으로 경로를 구성하는 네트워크들의 순서를 나타내지만, BGP 자체는 기본적으로 이 값을 신뢰한다.
  • 따라서 공격자가 AS_PATH를 조작해도 중간 네트워크가 별도 검증을 하지 않으면 해당 경로가 정상 경로처럼 전파될 수 있다.

Orange S.A. prefix 사례

  • Orange S.A.의 90.98.0.0/15 prefix에 대해 다음과 같은 경로가 관측됐다.
48237 1299 199524 270118 17072 41128
  • AS1299는 Arelion의 Tier 1 네트워크이므로, 경로 오른쪽에 있는 ASN들은 일반적으로 고객-프로바이더 관계를 나타낸다.
  • 이 경로를 그대로 해석하면 다음과 같은 비정상 관계가 된다.
    • AS41128: Orange France가 보유하지만 사용되지 않는 ASN
    • AS17072: 주로 멕시코에서 운영되는 ISP
    • AS270118: 멕시코 소재 호스팅 사업자
    • AS199524: 글로벌 피어링 사업자인 Gcore
  • 즉, 사용되지 않는 Orange ASN이 멕시코 ISP와 호스팅 사업자를 거쳐 Gcore와 Tier 1 사업자에 연결된 것처럼 보인다.
  • 이 관계는 현실적으로 매우 부자연스럽기 때문에 AS_PATH가 공격자에 의해 위조됐다고 판단할 수 있다.

Cloudflare ASN을 포함한 또 다른 사례

  • 47.1.0.0/16, 47.2.0.0/16 하이재킹에서는 다음 경로가 관측됐다.
199524 270118 17072 13335 36429
  • 여기에는 Cloudflare의 ASN인 13335가 포함돼 있었지만, Cloudflare는 Charter가 보유한 현재 미사용 ASN 36429와 직접적인 인접 관계가 없다고 확인했다.
  • 따라서 Cloudflare ASN은 실제 경로에 참여한 것이 아니라 공격자가 만든 가짜 상위 경로에 포함된 것으로 보인다.
  • 실제 트래픽은 멕시코 ISP나 Cloudflare를 거치지 않고 Gcore의 시카고 피어링 네트워크 뒤쪽으로 전달됐다.
  • 이 사례에서는 왼쪽에서 처음으로 신뢰할 수 있는 공통 ASN인 Gcore의 199524까지는 실제 전파 경로일 가능성이 높고, 그 오른쪽의 나머지 경로는 위조된 것으로 추정된다.

공격자가 사용한 것으로 추정되는 방식

공격자는 다음 순서로 하이재킹을 수행한 것으로 분석된다.

  • 사용되지 않거나 “parked” 상태인 prefix를 직접 BGP에 광고한다.
  • 자신의 로컬 ASN을 AS_PATH에서 완전히 제거한다.
  • 실제로 존재하지 않는 고객-프로바이더 관계를 포함한 가짜 AS_PATH를 구성한다.
  • 해당 경로를 Gcore와 같은 상위 네트워크에 전달한다.
  • 상위 네트워크가 고객 ASN과 AS_PATH의 첫 ASN을 검증하지 않으면 경로가 수락된다.
  • 이후 해당 경로가 상위 프로바이더와 피어를 통해 인터넷 전체로 전파된다.

First AS 검사의 역할

  • BGP 피어가 경로를 광고할 때 AS_PATH의 첫 번째 ASN은 일반적으로 해당 피어의 ASN이어야 한다.
  • 예를 들어 AS64502가 AS64501로부터 경로를 받았다면, 경로의 첫 ASN이 AS64501인지 확인해야 한다.
  • 이 검사가 활성화돼 있으면 공격자가 자신의 ASN을 제거한 뒤 다른 ASN으로 시작하는 경로를 광고할 수 없다.
  • First AS 검사는 다음 공격을 차단하는 데 유용하다.
    • 자신의 ASN을 AS_PATH에서 제거하는 위조
    • 다른 네트워크를 최초 발신자인 것처럼 가장하는 공격
    • 가짜 상위 경로를 이용한 트래픽 유인
  • BGP의 AS_PATH는 경로 선택과 루프 방지에도 사용된다.
    • 라우터는 AS_PATH 길이와 정책 등을 바탕으로 최적 경로를 선택한다.
    • 이미 자신의 ASN을 거친 경로는 루프 방지를 위해 거부할 수 있다.
    • 운영자는 특정 ASN을 우회하거나 선호하도록 AS_PATH를 정책에 활용할 수 있다.
  • 하지만 AS_PATH는 원래 신뢰 기반으로 설계됐기 때문에 AS prepend처럼 정상적인 조작도 가능하고, 공격자가 경로를 줄이거나 위조하는 것도 가능하다.

RPKI-ROV와 ASPA만으로는 부족한 이유

  • RPKI ROA는 특정 prefix를 어떤 ASN이 원점(origin)으로 광고할 수 있는지 인증한다.
  • ASPA는 특정 ASN의 유효한 프로바이더 목록을 선언한다.
  • 그러나 공격자가 다음 조건을 만족하면 기존 검증을 우회할 가능성이 있다.
    • RPKI-ROV상 유효한 origin ASN을 AS_PATH에 포함
    • 합법적인 ASPA 상위 ASN을 경로에 포함
    • 자신의 ASN은 AS_PATH에서 제거
  • 예시에서는 AS64506이 ROA를 만들고, ASPA에 유효한 프로바이더로 AS64503을 등록했다.
  • 공격자 AS64505가 자신의 ASN을 제거하고 AS64506에서 시작하는 것처럼 광고하면, First AS를 검사하지 않는 AS64502는 이를 수락할 수 있다.
  • 결과적으로 경로가 RPKI-ROV상 유효하고 더 짧은 경로로 보이면서 AS64506으로 향하는 트래픽을 가로챌 수 있다.
  • 따라서 RPKI와 ASPA는 중요한 보안 수단이지만, 피어 ASN과 AS_PATH 첫 ASN의 일치 여부를 확인하는 First AS 검사를 대체하지 못한다.

실용적인 권고

  • 모든 BGP 세션에서 First AS 검사를 활성화하고 강제해야 한다.
  • 고객 경로를 수신할 때 다음을 검증하는 것이 바람직하다.
    • AS_PATH 첫 ASN이 실제 고객 또는 피어 ASN과 일치하는지
    • 고객이 광고할 수 있는 prefix인지
    • RPKI-ROV 상태가 유효한지
    • ASPA상 프로바이더 관계가 허용되는지
  • RPKI-ROV와 ASPA는 origin 및 경로 관계 검증에 사용하고, First AS 검사는 자신의 ASN을 숨긴 경로 위조를 차단하는 방어선으로 함께 운용해야 한다.