기술

오염된 VS Code 확장 프로그램이 깃허브 내부 저장소 3,800개를 훔쳐 갔다

Susan Hill

깃허브(GitHub)는 자사 내부 저장소에 대한 무단 접근을 조사하고 있으며, 공격자가 그 가운데 약 3,800개의 저장소에서 데이터를 빼내는 데 성공했다고 확인했다. 침입은 한 직원이 설치한 오염된 비주얼 스튜디오 코드 확장 프로그램을 통해 들어왔다. 공격자는 그 기기에 발판을 마련했고, 거기서부터 본래 회사의 담장 안에 머물러야 할 내부 코드까지 손을 뻗었다.

깃허브가 가리키는 경계, 곧 내부 저장소와 고객용 플랫폼 사이의 선은, 통제된 사건과 전 세계 공급망 비상사태를 가르는 유일한 장벽이다. 깃허브에는 약 1억 명의 개발자가 머물고, 현대 인터넷이 의지하는 오픈소스 코드의 상당 부분이 이곳에 있다. 회사가 “내부”라고 말할 때, 그것은 자사 플랫폼 코드, 자사 도구, 운영 구성, 곧 깃허브가 스스로를 만들고 굴리는 데 쓰는 재료를 가리킨다. 고객 조직과 기업, 그 고객들이 깃허브 위에 두고 있는 공개·비공개 저장소는 회사 자신의 설명에 따르면 이번 침입의 영향권 바깥에 있다.

그 구별은 회사가 공식 X 계정에 올린 성명에서 적지 않은 무게를 짊어지고 있다. “현재로서는 깃허브 내부 저장소 외부에 보관된 고객 정보에 영향을 받았다는 증거가 없다”고 성명은 말하면서, “후속 활동이 있는지 인프라를 면밀히 감시하고 있다”고 덧붙인다. 표현은 정밀하고, 침해 공지의 정밀함은 보통 조사가 여전히 움직이고 있다는 뜻이다. “영향 증거 없음”은 “영향 없음”과 같지 않다. 대형 플랫폼에서 일어난 사건들은, 포렌식이 공격자의 활동을 따라잡을수록 규모가 커지는 버릇이 있다. 내부 시스템과 고객용 시스템 사이의 선도 깨끗한 물리적 벽인 경우는 드물다. 그것은 접근 제어와 자격 증명, 서비스 계정의 묶음이고, 하나하나 따져 봐야 한다.

이 이야기에서 모든 개발자가 우려해야 할 부분은 침입의 메커니즘이다. 비주얼 스튜디오 코드는 지구상에서 가장 널리 쓰이는 코드 편집기이며, 거의 모든 대형 엔지니어링 조직에 들어와 있다. 그 확장 프로그램 마켓플레이스는 커뮤니티의 신뢰로 돌아간다. 누구나 공개할 수 있고, 대다수 엔지니어는 브라우저에 즐겨찾기를 추가하는 정도의 가벼움으로 플러그인을 설치한다. 그 통로를 거쳐 개발자의 단말에서 실행된 오염된 확장 프로그램은, 그 개발자의 세션이 닿을 수 있는 모든 것에 공격자의 손을 닿게 한다. 저장소, 토큰, 패키지 레지스트리, 내부 서비스가 모두 포함된다. 이번 사건에서 사용된 확장의 구체적인 이름은 아직 공개되지 않았지만, 패턴 자체는 새로울 게 없다. 개발자 도구용으로 인기 있는 확장 프로그램 Nx Console도 비슷한 침해를 겪은 적이 있다.

TeamPCP를 자처하는 집단이 침입을 인정했고, 데이터셋을 지하 포럼에서 최소 5만 달러부터 판매하고 있다. 이들이 사용하는 표현인 “이것은 몸값이 아니다”는 그 자체로 하나의 신호다. 깃허브를 직접 협박하려는 시도가 아니다. 다른 범죄자들이 신용카드 덤프를 다루듯 훔친 내부 소스 코드를, 살 사람이 있는 상품으로 다루고 있다. 결국 3,800개 저장소의 그 보관소를 손에 쥐는 쪽은, 그 안에서 코드에 박힌 자격 증명, 하드코딩된 비밀, 깃허브 자체 인프라를 공격하는 데 쓸 수 있는 단서, 하류 표적을 추가로 무너뜨리는 데 도움이 될 만한 모든 것을 빗질하듯 훑어낼 것이다. 같은 집단은 PyPI의 durabletask 패키지를 친 미니 샤이훌루드(Mini Shai-Hulud) 웜과도 연결되어 거론되며, 이는 이 이야기의 실제 배경을 또렷이 드러낸다. 개발 공급망에 대한 공격은 이론적 시나리오에서 실무의 손기술로 옮겨 갔다.

깃허브의 봉쇄 대응은 회사 자체 설명상 빨랐다. 침해된 단말은 격리되었다. 악성 확장 프로그램은 제거되었다. 회사는 영향이 큰 자격 증명을 우선해 핵심 비밀들을 교체했다고 밝혔으며, 조사가 확대될 경우 자리 잡은 사고 대응 채널을 통해 영향을 받은 고객에게 알릴 것이라고 했다. 마이크로소프트 계열사인 이 회사는 단말이 침해된 깃허브 직원의 이름도, 사용된 확장의 이름도, 공격자가 탐지되기 전까지 접근을 유지한 정확한 시간 창도 공개하지 않았다. 그런 세부 사항들은 통상 최초 공지로부터 몇 주 뒤에 나오는 더 긴 사후 보고서에서 모습을 드러낸다.

나머지 업계가 받아 들어야 할 실용적 교훈은, 위협 인텔리전스의 포장이 들리게 하는 것보다 더 단순하다. 모든 엔지니어링 조직은 부주의한 확장 프로그램 설치 한 번 거리에서 같은 사건에 닿아 있다. 어느 포럼 스레드의 추천을 따라 비주얼 스튜디오 코드 확장 프로그램을 깔아 본 사람이라면 누구나, 깃허브 직원에게 떨어진 그 위험을 똑같이 짊어졌다. 효과가 입증된 방어책은 잘 알려져 있고, 적용은 고르지 못하다. 확장 프로그램 설치를 검증된 허용 목록으로 제한하기, 개발자 워크스테이션을 운영 자격 증명으로부터 분리하기, 비밀을 빠른 주기로 교체하기 등이다. 이번 침해는 그동안 그것들을 미뤄 둔 기업의 우선순위 목록에서 이들을 위로 밀어 올릴 것이다.

깃허브는 전체 공개 사후 보고서의 시점을 밝히지 않았다. 이 정도 규모의 플랫폼에서 이 정도 크기의 조사가 전체 범위를 드러내는 데는 보통 몇 주가 걸리며, 후속 업데이트는 회사의 공식 채널을 통해 단계적으로 전해질 것이다. 다음으로 지켜봐야 할 지점은, 3,800개 저장소의 그 보관소가 실제로 판매대 위에 올라오는지, 그리고 지하 시장이 색인을 며칠 들여다본 뒤 가격 하한이 어느 쪽으로 움직이는지다.

토론

댓글 0개가 있습니다.