메뉴
BL
Ars Technica • 24일 전

BGP 하이재킹으로 업데이트 서버를 장악한 공급망 악성코드 사건

IMP
7/10
핵심 요약

unidentified 공격자들이 호스팅 업체 Hetzner Online의 라우팅 보안 취약점을 이용해 Softaculous의 IP 대역을 BGP 하이재킹으로 탈취하고, 가짜 업데이트로 악성코드를 유포한 사건입니다. 코드 서명 검증 부재, 모니터링 실패 등 여러 기본 보안 수칙 미준수가 겹쳐 33시간에 걸쳐 공격이 성공했습니다. 인터넷 라우팅 기반 기술(BGP)과 소프트웨어 업데이트 서명 검증의 중요성을 보여주는 사례입니다.

번역된 본문

해커들이 비상한 기법을 사용해 공급망 공격을 수행, 호스팅 업체·데이터센터·대형 인프라 기업들이 사용하는 클라우드 관리 소프트웨어의 업데이트가 이루어지는 인터넷 주소 공간을 하이재킹하여 네트워크에 악성코드를 설치했다.

잘 조율된 작전에서 신원 미상의 공격자들은 호스팅 업체 Hetzner Online의 라우팅 보안 설정 약점과 유효한 TLS 인증서 발급 절차의 취약점을 악용했다. 이러한 실수로 인해 공격자들은 BGP(Border Gateway Protocol) 하이재킹에 성공하여 Softaculous에 할당된 IP 주소를 통제하게 되었다. 아랍에미리트에 본사를 둔 이 회사는 웹 소프트웨어 설치·관리 플랫폼 제작사이며, 가상화 환경 관리 플랫폼인 Virtualizor의 개발사다. Softaculous는 해당 IP들을 사용해 업데이트를 배포하고 고객 및 결제 사이트를 호스팅했다. 하이재킹된 주소 공간을 장악한 공격자는 이제 이 주소들을 이용해 의심하지 않는 사용자들에게 업데이트로 위장한 악성코드를 유포했다.

우스꽝스러우면서도 예방 가능했던 실수

Softaculous의 호스팅 업체인 Hetzner Online의 느슨한 라우팅 보안 설정이 해킹의 주요 원인이었다. 수많은 다른 실수들도 공격 성공에 기여했다. 특히 Softaculous는 소프트웨어 개발에서 가장 일반적인 안전 조치 중 하나인 코드 서명(code signing)으로 업데이트를 검증하는 절차를 지키지 않았다.

"사고 기간 동안 트래픽이 우회된 Virtualizor 설치본은 공격자 서버로부터 악성 업데이트 패키지를 받았을 수 있습니다"라고 Softaculous는 월요일 경고했다. "당사의 제품 업데이트 클라이언트는 업데이트 패키지를 암호학적으로 검증하지 않았기 때문에 변조된 패키지가 이 근거로 거부되지 않았습니다. 실제로 영향을 받은 서버는 소수라고 판단되지만, 확정적인 목록을 제시할 수 없으므로 모든 Virtualizor 서버를 아래 점검 대상으로 간주해 주시기 바랍니다."

Hetzner Online의 느슨한 설정으로 인해 하이재커들은 33시간에 걸친 두 차례의 기간 동안 간헐적으로 트래픽을 잘못 경유시킬 수 있었다. Hetzner Online은 하이재킹 시작 12시간 만에 올바른 경로를 BGP로 광고(announce)하여 주소 공간을 되찾았다. 그러나 이후 Hetzner가 해당 경로 광고를 중단하자, 공격자는 동일한 하이재킹을 두 번째로 실행했다. 이번에는 Hetzner가 대응하는 데 거의 10시간이 걸렸고, 그 동안 하이재킹이 활성 상태였다. Hetzner Online과 마찬가지로, Softaculous와 Hetzner의 하위 트랜짓 피어인 Zet.net도 시스템 모니터링을 제대로 하지 않아 하이재킹이 시작되고 두 차례에 걸쳐 22시간이 지나서야 감지했다.

또 다른 호스팅 업체인 Nexon Host에도 의문이 제기되고 있는데, 이 회사의 인프라가 어떤 식으로든 악성 BGP 광고를 가능하게 했다. BGP 전문가이자 BGP Tools 제품군 제작자인 Ben Cartwright-Cox는 이러한 실수들을 "우스꽝스럽고 예방 가능했던 실수"라고 불렀다. Softaculous, Hetzner, Zet.net은 이메일 질문에 즉시 응답하지 않았다.

BGP의 간략한 역사

BGP 공격은 인터넷을 통합된 전 세계 네트워크로 만드는 기반 기술을 겨냥한다. 인터넷은 AS(autonomous system, 자치 시스템)라고도 불리는 ASN(autonomous system network)으로 알려진 수많은 독립 네트워크로 분할되어 있다. 각 AS는 IPv4 프로토콜상 공개적으로 사용 가능한 37억 개 주소 중 일부를 할당받은 독립 네트워크다. BGP는 이 모든 AS를 하나로 묶어 서로 연결할 수 있게 하는 접착제 역할을 한다. 예를 들어 독일의 AS에 할당된 주소가 북미의 IP에 도달하려면, AS가 해당 트래픽을 경유시켜야 할 다른 AS들을 "광고(announce)"해야 한다. 이러한 라우팅 광고는 모든 AS와 이들을 지원하는 호스팅 업체들이 사용하는 전역 라우팅 테이블의 항목으로 작성되는 선언이다. 인터넷 초기에는 BGP가 신뢰에 기반해 작동했다. 제공자들은 광고가 유효하고 선의로 작성된 것이라고 단순히 가정했다. 수년에 걸쳐...

원문 보기
원문 보기 (영어)
Text settings Story text Size Small Standard Large Width * Standard Wide Links Standard Orange * Subscribers only Learn more Minimize to nav Hackers carried out a supply chain attack that installed malware on networks using an unusual technique: hijacking a chunk of Internet space where cloud management software used by hosting providers, data centers, and other large infrastructure companies is updated. In a well-coordinated operation, the unknown attackers exploited weaknesses in the routing security setup of hosting provider Hetzner Online and the process for attaining valid TLS certificates. The lapses allowed the attackers to successfully perform a BGP ( Border Gateway Protocol ) hijacking to obtain control over IP addresses assigned to Softaculous. The company, based in the United Arab Emirates, is the maker of a platform for installing and managing Web software and is the developer of Virtualizor, a management platform for virtualized environments. Softaculous used the IPs to issue updates and host a client and billing site. With control over the hijacked space, the attacker was now using the addresses to push malware masquerading as updates to unsuspecting users. Silly, preventable mistakes Lax configuration of routing security in Softaculous’ hosting provider, Hetzner Online, was the major contributor to the hack. A large number of other errors contributed to the success of the attack. Most notably, Softaculous failed to follow one of the most common safety steps in software development, which is to validate software updates using code signing. “During the incident window, a Virtualizor installation whose traffic was diverted could have received a malicious update package from the attacker’s server,” Softaculous warned Monday . “Our product update clients did not yet cryptographically verify update packages, so a modified package would not have been rejected on that basis. We believe only a small number of servers were actually affected, but we cannot produce a definitive list, so please treat every Virtualizor server as in scope for the checks below.” A loose configuration by Hetzner Online allowed hijackers to intermittently misdirect traffic over two spans in a 33-hour window. Hetzner Online reclaimed the address space 12 hours after the hijacking started by announcing the correct path. Then Hetzner Online stopped announcing the path, and the attacker executed the same hijack a second time. This time, it took Hetzner almost 10 hours to react. During that time, the hijack was active. Like Hetzner Online, both Softaculous and Zet.net, the transit peer downstream from Hetzner Online, failed to properly monitor their systems and, as a result, didn’t catch the hijacking until it had been ongoing on and off for 22 hours. There are also questions about another host provider, Nexon Host, whose infrastructure somehow facilitated the malicious announcement. Ben Cartwright-Cox, a BGP expert and creator of the BGP Tools suite, called the lapses “silly, preventable mistakes.” Softaculous, Hetzner, and Zet.net didn’t immediately respond to emailed questions. A brief history of BGP BGP attacks target the underpinnings that make the Internet a unified, worldwide network. The Internet is splintered into many ASes (autonomous systems), also known as ASNs (autonomous system networks). Each AS is an independent network assigned a portion of the 3.7 billion publicly available addresses under the IPv4 protocol. BGP is the glue that binds all these ASes together and allows each one to connect to any other. To allow an address assigned to an AS in, say, Germany to reach IPs in North America, an AS must “announce” the other ASes that should transit the traffic. These routing announcements are declarations made as entries on a global routing table used by all ASes and the hosting providers serving them. In the Internet’s early days, BGP ran on trust. Providers simply assumed announcements were valid and made in good faith. Over the years, attackers repeatedly abused this trust by making announcements for IPs they had no valid right to control. Attackers—with ties to both nation- states and financially motivated groups—capitalized on the lax system to, in some cases, route petabytes’ worth of sensitive data through networks they controlled. Eventually, Internet architects developed a series of measures to prevent such hijacking. The most prominent of these is RPKI (Resource Public Key Infrastructure) ROV (Route Origin Validation). RPKI ROV uses cryptographic records called Route Origin Authorizations (ROAs) to assert the proper origin and prefix mask length of routes in BGP. ASes that deploy RPKI ROV will reject routes that don’t match the information contained in ROAs, preventing hijacks from spreading throughout the Internet. How it went down The attack began a few minutes before 9 PM UTC on Friday, when a small chunk of Softaculous IP space entered the global routing table. This new IP prefix, designated as 162.55.80.0/24, was announced along the path: AS6204 (Zet.net), AS62390 (Nexon Host), and AS24940 (Hetzner Online). This IP range, containing 256 addresses, hosted Softaculous’ software-update endpoint and its client and billing site. The space was a more specific chunk of the much bigger 162.55.0.0/16 space that was usually originated AS24940. According to a post by BGP expert Doug Madory, the announcement likely originated with NexonHost (AS62390), possibly through a compromise of its infrastructure or a customer who exploited gaps in its security. Protocols such as RPKI prevent large operators from routing addresses made through fraud or error, but the routing lapses and the failure to properly monitor traffic allowed the hijack to pulse on and off for much of the weekend. Madory, who is head of Internet analysis at Infoblox, continued: The hijack also included an AS path with a forged origin. Because the attacker appended 24940 as the rightmost ASN in the path, it was considered RPKI-valid for two reasons: the ROA required the origin to be AS24940 but also because it allowed the prefix length to be anywhere between 24 and 16. As a result, this route was RPKI-valid and would not be at risk of being dropped by ASes that reject RPKI-invalid routes. Both Cartwright-Cox and Madory said Hetzner configured these settings in a way that allowed the hijacking to fly under the radar provided by these security measures. IP ranges are measured in blocks, with the size of them designated by a slash followed by a number. Somewhat counterintuitively, the larger the number at the end, the smaller the block is. That’s because the system is based on the 32 bits forming the basis of the IPv4 standard. A /24 block designates (32-24) 2 , or 256 addresses. A /16 block designates (32-16) 2 , or 65,036 IPs. Hetzner Online configured a parameter in RPKI that allowed sub-prefixes as small as /24 to be considered valid. Combined with the fact that the hijacked route contained an AS path forged to match the origin in the ROA, the attacker’s new route with a smaller prefix was able to bypass RPKI protections. “Because there was no existing route for 162.55.80.0/24 to compete against, it propagated as far as other route filtering mechanisms would allow,” Madory wrote. “And because it was a more-specific route, any traffic destined for this IP range would prefer it over the legitimate route (162.55.0.0/16) due to routers’ preference for longest-prefix-match.” Cartwright-Cox succinctly described the lapse as: “Hetzner allowed more precise IP ranges (/24 when it should have been /16) to be announced, allowing the hijacker to impersonate them and automatically win on routing decisions.” Bypassing TLS certificate validation The smaller IP range also made it possible for the attackers to bypass industry-wide measures for validating TLS certificate requests. Typically, the requesting party must demonstrate that it has control of the domain over a geographically dispersed set of end points.