as-path

1 개의 포스트

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에 대해 다음과 같은 경로가 관측됐다. ```text 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` 하이재킹에서는 다음 경로가 관측됐다. ```text 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을 숨긴 경로 위조를 차단하는 방어선으로 함께 운용해야 한다.