1. लाइब्रेरी
  2. 라우팅과 네트워크
  3. 인터넷 라우팅

अपडेट किया गया 1 माह पहले

BGP는 신뢰의 악수로 탄생한 프로토콜이다. 하지만 지금 세상은 더 이상 그런 악수를 하지 않는다.

인터넷이 수십 개의 대학교들이 연구 자료를 주고받던 시절, BGP의 설계는 충분히 합리적이었다: 내가 도달할 수 있는 주소를 알리고, 이웃도 그렇게 할 거라 믿으면 경로는 자연스럽게 진실로 수렴하리라. 검증 체계가 없었던 건 검증이 필요 없었기 때문이다. 모두가 모두를 알았다.

오늘날의 인터넷은 수십만 개의 자율 시스템(AS) 위에서 수십억 개의 기기를 연결한다. 그중엔 서로 이해관계가 충돌하는 곳도 있고, 악의를 품은 곳도 있다. 그런데 BGP는 여전히 같은 방식으로 작동한다. 어떤 네트워크가 "나는 이 주소들에 도달할 수 있다"고 알리면, 다른 네트워크들은 그냥 믿는다. 이를 확인할 방법이 없다.

바로 이렇게 트래픽이 탈취된다.

하이재킹의 해부

BGP 하이재킹은 누군가가 자신이 제어하지 않는 IP 주소를 알릴 때 시작된다. 그 알림이 전파되고, 라우터들이 테이블을 갱신하며, 트래픽이 엉뚱한 곳으로 흘러간다.

공항 대신 자신의 창고로 향하는 가짜 고속도로 안내판을 세우는 상황을 상상해보라. 운전자들은 표지판을 따라간다. 결국 당신의 문 앞에 도착한다. BGP 하이재킹도 정확히 이렇게 작동한다 — 다만 여기서 "운전자"는 은행 거래, 의료 기록, 정부 통신을 실어 나르는 패킷이다.

하이재커에겐 여러 선택지가 있다:

블랙홀 처리. 모든 트래픽을 버린다. 목적지는 도달 불가능해진다. 단 하나의 공격 패킷도 보내지 않고 서비스 거부를 달성한다.

검사 후 전달. 트래픽을 자신의 네트워크로 끌어들여 관심 있는 것을 복사한 다음, 실제 목적지로 전달한다. 피해자의 연결은 정상적으로 작동한다 — 누군가 엿보고 있다는 걸 알 도리가 없다.

전송 중 변조. 전달하기 전에 트래픽 내용을 바꾼다. 악성코드를 심는다. 거래 내역을 조작한다. 현실을 다시 쓴다.

세밀한 경로 우선의 함정

BGP에는 단순한 규칙이 있다: 더 세밀한(more specific) 경로를 우선한다. Google이 8.8.8.0/24(256개 주소)를 알리고 있을 때 당신이 8.8.8.0/25(128개 주소)를 알리면, 라우터들은 그 범위의 앞 절반에 대해 당신의 알림을 선택한다. 더 세밀한 경로를 알리는 것만으로 Google DNS 서비스의 절반을 가로챈 셈이다.

우아하면서도 파괴적인 수법이다. 정당한 소유자는 자신의 알림을 더 작은 조각으로 끝없이 쪼개지 않고는 쉽게 방어할 수 없다.

경로 위조

BGP 알림에는 경로 정보가 포함된다 — 해당 경로가 통과하는 자율 시스템들의 목록이다. 공격자들은 이 경로를 정당해 보이도록 위조한다. 실제 소유자의 AS 번호를 포함시켜, 가짜 경로가 목적지로 향하는 유효한 경로처럼 보이게 만든다.

"나를 통해 Google에 도달하고, 그다음 AS 15169로" — 알림은 이렇게 말한다. 평범한 경로처럼 보인다. 하지만 그렇지 않다.

실제로 벌어진 사고들

파키스탄 대 YouTube (2008)

파키스탄 정부가 YouTube 차단을 명령했다. Pakistan Telecom의 엔지니어들은 파키스탄 내에서 YouTube 주소를 무효화하는 BGP 알림을 만들었다. 흔히 쓰이는 검열 기법이었다.

그런데 그 알림이 새어 나갔다. 상위 네트워크로 전파되더니, 급기야 전 세계로 퍼졌다. 갑자기 전 세계의 라우터들이 YouTube로 가는 최적 경로가 Pakistan Telecom을 통과한다고 믿게 됐다 — 그리고 Pakistan Telecom은 그 트래픽을 모두 블랙홀에 떨어뜨리고 있었다.

YouTube는 몇 시간 동안 인터넷에서 사라졌다. YouTube의 인프라가 공격받아서가 아니었다. 한 나라의 검열 설정이 통제를 벗어났기 때문이었다.

자국 시민들에게 YouTube를 차단하려던 네트워크가, 실수로 전 세계 모두에게 차단해버렸다.

차이나 텔레콤 (2010)

18분 동안, 차이나 텔레콤은 자신이 제어하지 않는 수천 개의 프리픽스에 대한 경로를 알렸다. 미국 군사 네트워크, 정부 기관, 주요 기업들의 트래픽이 중국을 경유했다.

공격이었을까? 설정 오류였을까? 트래픽은 목적지로 정상 전달됐고, 서비스는 계속 작동했다. 하지만 그 18분 동안 중국 어딘가에서 모든 것을 복사했을 수도 있다.

우리는 여전히 정확히 무슨 일이 있었는지 모른다. 그것이 신뢰 기반 시스템의 문제다 — 악의와 실수를 구분할 수 없고, 아무 일도 없었던 것처럼 보이는 경우가 다반사다.

암호화폐 절도

BGP 하이재킹은 암호화폐 절도의 도구가 됐다. 공격자들은 DNS 서버나 암호화폐 거래소로 향하는 경로를 가로채 사용자들을 가짜 사이트로 유도하고, 자격 증명을 탈취해 지갑을 털어간다. 공격 지점은 거래소의 보안 취약점이 아니라 인터넷의 라우팅 인프라 자체다.

경로 누출: 우발적 재앙

경로 누출은 하이재킹과 다르다. 하이재킹은 자신이 소유하지 않은 주소를 알린다. 누출은 받은 경로를 받아서는 안 될 네트워크에 다시 퍼뜨린다.

어떻게 일어나는지 살펴보자:

당신은 작은 인터넷 서비스 제공업체(ISP)다. 대형 통신사에서 트랜짓을 구매하고(그들이 트래픽을 인터넷으로 라우팅해준다), 몇몇 네트워크와 피어링한다(트래픽을 직접 교환하며 별도 비용 없이). 규칙은 명확하다: 자신의 주소는 모두에게 알리고, 피어에게서 받은 경로는 고객에게만 알리고, 트랜짓 제공업체의 경로를 피어에게 재알림하지 않는다.

그런데 누군가가 필터를 잘못 설정했다. 라우터가 트랜짓 제공업체의 전체 라우팅 테이블 — 수십만 개의 경로 — 을 피어에게 뿌리기 시작한다. 그 피어는 당신을 어디든 갈 수 있는 경로로 인식한다. 트래픽이 쏟아져 들어온다. 링크가 마비된다. 트랜짓 제공업체는 수익을 잃는다. 피어의 트래픽은 전 세계 이상한 경로를 헤맨다.

2014년에 인도네시아의 한 ISP가 30만 개 이상의 경로를 누출했다. 인터넷 라우팅 테이블이 뒤죽박죽이 됐다. 무작위 위치에서 주요 서비스에 접속이 되지 않았다. 해결을 위해서는 누출 원인을 파악하고, 해당 ISP에 연락해 설정을 수정할 때까지 기다리는 수밖에 없었다 — 그동안 인터넷은 불타고 있었다.

왜 이런 일이 계속 일어나는가

수십 년 전부터 이런 취약점들을 알고 있었다. 해결책도 존재한다. 왜 적용되지 않는 걸까?

RPKI가 이를 해결해야 한다. 리소스 공개 키 인프라(RPKI)를 통해 네트워크는 어떤 AS 번호가 자신의 프리픽스를 알릴 권한이 있는지 암호화 방식으로 서명할 수 있다. 라우터는 알림을 검증하고 가짜를 거부할 수 있다.

하지만 RPKI는 모두의 참여가 필요하다. 당신이 경로에 서명해도 이웃들이 검증하지 않으면 보호받지 못한다. 당신이 검증해도 경로에 서명이 없으면 정상과 비정상을 가릴 수 없다. 조율할 주체 없이 조율이 필요한 문제 한가운데에 있는 셈이다.

필터링이 누출을 막아야 한다. 네트워크는 수신하고 알리는 내용에 대해 엄격한 필터를 유지해야 한다. 하지만 필터는 지속적인 관리가 필요하다. 주소가 바뀌고, 관계가 바뀐다. 지난달에는 맞았던 필터가 오늘은 경로를 새게 만들 수 있다.

경제 논리가 보안에 역행한다. RPKI 도입에는 비용과 노력이 든다. 그 혜택은 분산되어 있다 — 자신만이 아니라 모두를 보호한다. 합리적인 개인의 선택은 다른 사람들에게 비용을 떠넘기는 것이다. 그래서 도입은 더디고 취약점은 남아 있다.

어떻게 방어할 것인가

네트워크 운영자를 위해

경로에 서명하라. RPKI에서 경로 원본 인가(ROA)를 생성하라. 이를 통해 다른 사람들이 당신의 알림이 정당한지 검증할 수 있다.

다른 사람의 경로를 검증하라. 라우터에서 경로 원본 검증(ROV)을 설정하라. 검증에 실패한 알림은 거부하라.

적극적으로 필터링하라. 피어에게서는 예상되는 프리픽스만 수신하라. 알려야 할 것만 알려라. 최대 프리픽스 제한을 설정해 누출이 퍼지기 전에 잡아라.

지속적으로 모니터링하라. 다른 네트워크에서 당신의 주소에 대해 예상치 못한 알림이 없는지 감시하라. BGPStream, RIPE RIS, RouteViews 같은 서비스가 전 세계적인 가시성을 제공한다.

그 외 모든 사람을 위해

암호화된 프로토콜을 사용하라. HTTPS, TLS, 암호화된 DNS. 하이재커가 트래픽을 리디렉션할 수 있더라도, 암호화는 그것으로 할 수 있는 일을 제한한다.

인증서를 확인하라. 하이재커가 가짜 서버로 유도하더라도, 유효한 인증서를 위조할 수는 없다 (인증 기관까지 침해당했다면 또 다른 악몽이지만).

위험을 직시하라. 당신의 트래픽은 당신이 제어하지 않는 인프라를 지나고, 들어본 적 없는 조직들이 운영하며, 가 본 적 없는 나라에 있다. 경로는 보장되지 않는다. 경로는 안전하지 않다. 그럼에도 인터넷은 대부분의 경우 작동한다.

불편한 진실

BGP는 사라지지 않을 것이다. 너무 깊이 자리 잡혀 있고, 너무 넓게 퍼져 있으며, 인터넷이 작동하는 방식의 근간을 이루고 있다. 인터넷을 통째로 바꾸지 않고는 BGP를 바꿀 수 없다.

그래서 우리는 패치한다. 위에 RPKI를 얹는다. 모니터링 시스템을 구축한다. 규범을 세우고 사람들이 따르길 바란다. 병을 치료할 수 없으니 증상을 다스린다.

인터넷은 신뢰 위에서 돌아가는데, 신뢰는 규모를 감당하지 못한다. 주요 BGP 사고가 날 때마다 그 기반이 얼마나 불안정한지 다시 떠오른다 — 병원, 은행, 정부, 그리고 그 외 모든 것을 연결하는 이 글로벌 네트워크가, 수천 명의 독립적인 운영자들이 라우터를 올바르게 설정하고 거짓말을 하지 않기로 선택하는 것에 달려 있다는 사실이.

대부분은 그렇게 한다. 대부분은 작동한다.

하지만 "대부분"은 문명의 신경계를 떠받치기엔 너무 얇은 기반이다.

BGP 하이재킹에 관한 자주 묻는 질문

내 트래픽이 하이재킹되고 있는지 알 수 있나요?

대부분은 알 수 없다. 하이재커가 트래픽을 검사한 후 그대로 전달한다면 연결은 정상적으로 작동한다 — 누군가 엿보고 있다는 걸 알 방법이 없다. traceroute를 실행하면 비정상적인 경로가 드러날 수 있지만, 대부분의 사용자는 확인하지 않는다. 이것이 BGP 하이재킹이 그토록 교묘한 이유다: 피해자에게는 보이지 않는다.

왜 모든 네트워크가 RPKI를 사용하지 않나요?

도입에는 노력과 전문 지식이 필요하다. 소규모 네트워크는 자원이 부족할 수 있다. 보호 효과를 얻으려면 광범위한 참여가 필요하기 때문에 이점을 실감하지 못하는 운영자도 있다. 그리고 강제할 방법이 없다 — 아무도 네트워크에 참여를 강제할 수 없다. 천천히 나아가고는 있지만, "천천히"는 취약점이 계속 남아 있는 동안 수년이 걸린다는 뜻이다.

하이재킹과 누출의 차이점은 무엇인가요?

하이재킹은 자신이 소유하지 않은 주소를 알린다 — 목적지인 척하는 것이다. 누출은 받아서는 안 될 네트워크에 경로를 재배포한다 — 경로인 척하는 것이다. 둘 다 문제를 일으키지만, 하이재킹은 대체로 의도적이고 누출은 대체로 우발적이다.

BGP 하이재킹이 국가 수준의 스파이 활동에 사용된 적이 있나요?

거의 확실하지만, 귀속을 입증하기가 어렵다. 2010년 차이나 텔레콤 사건, 여러 러시아 통신사 리디렉션 사건, 그 밖의 사례들은 국가 행위자들이 정보 수집에 BGP 하이재킹을 활용했거나 활용할 수 있음을 시사한다. 이 프로토콜은 감사 추적 기록을 남기지 않아, 부인 가능한 작전에 매력적인 도구가 된다.

क्या यह पृष्ठ सहायक था?

😔
🤨
😃