왜 해커는 텍스트 에디터를 공격하는가
Notepad++ 공급망 공격 사건이 처음 보안 커뮤니티에 알려졌을 때 많은 사람들의 반응은 비슷했다. 공격 자체보다도 공격 대상이 의외였기 때문이다. 텍스트 에디터는 일반적으로 중요한 보안 시스템처럼 보이지 않는다. 운영체제도 아니고, 데이터베이스 서버도 아니며, 기업 인프라의 핵심 서비스도 아니다. 대부분의 사람들에게 텍스트 에디터는 단순히 파일을 열어보고 수정하는 도구에 불과하다. 그래서 “왜 해커가 이런 프로그램을 공격할까”라는 질문이 자연스럽게 등장한다. 보통 해킹 사건이라고 하면 금융 시스템, 기업 서버, 혹은 사용자 데이터를 저장하는 서비스가 떠오르기 때문이다.
하지만 이 질문을 조금 다른 방향에서 바라보면 상황은 완전히 달라진다. 공격자는 항상 가장 가치 있는 지점을 노린다. 여기서 가치라는 것은 단순히 프로그램 자체의 중요성을 의미하지 않는다. 오히려 공격자가 얻을 수 있는 파급력을 의미한다. 어떤 시스템을 공격했을 때 얼마나 많은 사용자에게 영향을 줄 수 있는지, 얼마나 넓은 네트워크에 접근할 수 있는지, 그리고 그 공격이 얼마나 오랫동안 지속될 수 있는지가 더 중요한 기준이 된다. 이 관점에서 보면 텍스트 에디터나 IDE 같은 개발 도구는 생각보다 훨씬 매력적인 공격 대상이 된다.
개발자에게 텍스트 에디터는 단순한 프로그램이 아니다. 개발자는 하루 대부분의 시간을 코드와 함께 보내고, 그 코드를 작성하고 수정하는 환경이 바로 에디터나 IDE다. 어떤 개발자는 하루 동안 수십 번씩 같은 에디터를 실행하고, 프로젝트를 열고, 코드를 수정하고, 빌드를 수행한다. 다시 말해 개발 도구는 개발자의 작업 환경 중심에 존재한다. 그리고 이 도구를 통해 만들어진 코드는 결국 제품이 되어 수많은 사용자에게 배포된다.
이 사실을 공격자의 관점에서 다시 생각해 보면 매우 흥미로운 그림이 나타난다. 만약 공격자가 개발자가 사용하는 도구에 접근할 수 있다면, 단순히 그 개발자의 컴퓨터 하나를 감염시키는 것 이상의 일이 가능해진다. 개발자가 작성하는 코드, 빌드하는 프로그램, 그리고 배포되는 소프트웨어까지 연결될 수 있기 때문이다. 즉 공격 대상이 단순한 에디터라 하더라도, 그 에디터가 연결된 생태계는 훨씬 더 크다.
그래서 보안 연구자들은 종종 이렇게 말한다. 현대 소프트웨어 생태계에서 가장 중요한 시스템은 서버가 아니라 개발 환경이라고 말이다. 서버는 이미 만들어진 소프트웨어가 실행되는 장소이지만, 개발 환경은 그 소프트웨어가 처음 만들어지는 장소이기 때문이다. 공격자가 서버를 공격하면 한 시스템을 장악할 수 있지만, 개발 환경을 공격하면 그 개발자가 만드는 모든 소프트웨어에 영향을 줄 가능성이 생긴다. 이 차이는 단순한 기술적 차이를 넘어 공격 전략 자체를 바꾸는 요소가 된다.
결국 텍스트 에디터를 공격한다는 것은 단순한 프로그램을 공격하는 것이 아니다. 그것은 소프트웨어 생산 과정의 출발점을 공격하는 것이다. 그리고 이 사실을 이해하는 순간, Notepad++ 같은 프로그램이 왜 공격 대상이 될 수 있는지 자연스럽게 설명된다. 공격자는 항상 지름길을 찾는다. 그리고 개발 도구는 종종 그 지름길이 된다.

소프트웨어는 어디에서 만들어지는가
소프트웨어가 사용자에게 도달하기까지의 과정을 조금만 생각해 보면 개발 도구가 왜 중요한 위치에 있는지 더 명확하게 이해할 수 있다. 대부분의 사람들은 프로그램을 다운로드하거나 실행하는 순간만을 떠올리지만, 실제로 그 이전에는 훨씬 긴 과정이 존재한다. 모든 소프트웨어는 개발자의 컴퓨터에서 시작된다. 개발자가 코드를 작성하고, 수정하고, 테스트하고, 빌드하는 과정이 반복되면서 프로그램이 만들어진다. 이 과정은 눈에 잘 보이지 않지만, 소프트웨어 산업 전체를 움직이는 핵심적인 생산 과정이다.
이 과정을 단순화하면 하나의 흐름으로 정리할 수 있다. 개발자는 먼저 에디터나 IDE를 사용해 코드를 작성한다. 이후 빌드 시스템을 통해 코드를 컴파일하거나 패키징한다. 그렇게 만들어진 결과물은 패키지 저장소나 배포 서버로 전달되고, 마지막으로 사용자에게 배포된다. 이 흐름은 거의 모든 소프트웨어 프로젝트에서 비슷하게 반복된다.
개발자 → 개발 도구 → 빌드 시스템 → 패키지 → 배포 → 사용자
이 구조를 조금만 자세히 보면 중요한 특징 하나가 드러난다. 모든 코드가 처음으로 지나가는 지점이 바로 개발 도구라는 점이다. 개발자가 코드를 작성하는 순간부터 프로그램은 개발 환경을 통과하게 된다. 이후의 모든 과정은 그 코드 위에서 이루어진다. 즉 개발 도구는 단순히 텍스트를 편집하는 프로그램이 아니라, 소프트웨어 생산 체인의 가장 앞단에 위치한 시스템이다.
이 사실은 개발자에게는 너무 익숙해서 잘 의식되지 않는다. 에디터를 열고 코드를 작성하는 것은 매우 자연스러운 행동이기 때문이다. 하지만 보안 관점에서 보면 이 지점은 매우 흥미로운 위치다. 왜냐하면 개발 도구는 코드 작성, 파일 접근, 프로젝트 관리, 빌드 실행 등 다양한 기능을 수행하면서 매우 넓은 권한을 가지게 되기 때문이다. 대부분의 IDE는 프로젝트 전체에 접근할 수 있으며, 파일 시스템에 자유롭게 접근하고, 때로는 네트워크 통신이나 패키지 다운로드 기능도 포함하고 있다.
결국 개발 도구는 단순한 프로그램이 아니라 코드와 시스템을 연결하는 허브와 같은 역할을 한다. 개발자가 작성하는 코드, 빌드 과정, 테스트 환경, 배포 시스템이 모두 이 환경과 연결되어 있다. 그래서 개발 환경을 장악하는 것은 단순히 한 프로그램을 감염시키는 것 이상의 의미를 가진다. 그것은 소프트웨어 생산 체인의 시작점에 접근하는 것과 같다.
이 지점에서 공격자의 전략이 다시 한 번 이해된다. 공격자가 직접 수많은 사용자 시스템을 공격하는 대신, 개발자가 사용하는 도구를 공격한다면 훨씬 더 효율적인 결과를 얻을 수 있다. 개발 도구는 단 하나의 프로그램처럼 보이지만, 실제로는 수많은 소프트웨어와 연결된 출발점이기 때문이다. 그래서 개발 환경은 보안 연구자들에게 점점 더 중요한 공격 표면으로 인식되기 시작했다.

개발자를 공격하면 무엇이 가능한가
이제 시점을 조금 더 공격자의 관점으로 옮겨 보자. 사이버 공격을 설계하는 사람은 항상 같은 질문을 던진다. 어디를 공격하면 가장 큰 효과를 얻을 수 있을까. 이 질문에 대한 가장 단순한 답은 사용자를 공격하는 것이다. 실제로 많은 공격이 피싱 메일, 악성 파일, 사회공학 기법을 통해 일반 사용자 컴퓨터를 감염시키는 방식으로 이루어진다. 이런 공격은 비교적 단순하면서도 성공률이 높기 때문에 오랫동안 사용되어 왔다.
하지만 사용자 공격에는 분명한 한계가 있다. 한 명의 사용자를 공격하면 기본적으로 한 시스템에 접근할 수 있을 뿐이다. 물론 그 시스템에서 추가 공격을 시도할 수는 있지만, 영향 범위는 상대적으로 제한적이다. 공격자는 여러 시스템을 장악하려면 같은 작업을 반복해야 한다.
개발자를 공격하는 전략은 완전히 다른 결과를 만들어 낸다. 개발자는 단순한 사용자가 아니라 소프트웨어를 생산하는 위치에 있기 때문이다. 개발자가 만든 프로그램은 수백 명, 수천 명, 때로는 수백만 명의 사용자에게 배포될 수 있다. 즉 개발자의 환경은 하나의 개인 시스템이 아니라 수많은 사용자와 연결된 출발점이 된다.
이 때문에 보안 연구자들 사이에서는 오래전부터 하나의 표현이 사용되어 왔다. “한 명의 개발자를 공격하면 수많은 사용자를 공격할 수 있다.” 이 말은 단순한 비유가 아니라 실제 사건을 통해 여러 번 확인된 사실이다. 개발자의 환경에 침투하는 순간 공격자는 코드 저장소, 빌드 서버, 패키지 저장소, 내부 API 등 다양한 시스템과 연결될 가능성이 생긴다. 이 연결 구조를 이용하면 공격자는 조직 내부로 이동하거나, 소프트웨어 배포 과정에 개입하거나, 심지어 사용자에게 전달되는 프로그램 자체를 조작할 수도 있다.
또 하나 중요한 점은 개발 환경이 가진 권한이다. 개발자는 보통 프로젝트 전체에 접근할 수 있는 권한을 가지고 있으며, 빌드 시스템이나 배포 서버와 연결되어 있는 경우도 많다. 이런 환경은 공격자에게 매우 매력적인 위치가 된다. 일반 사용자 컴퓨터에서는 얻기 어려운 권한을 개발 환경에서는 훨씬 쉽게 얻을 수 있기 때문이다.
그래서 최근 몇 년 동안 보안 연구자들은 개발 환경을 새로운 공격 전장으로 보기 시작했다. 서버와 사용자 시스템 사이 어딘가에 존재하는 이 공간은 생각보다 넓고, 생각보다 많은 권한을 가지고 있으며, 무엇보다도 소프트웨어 생산의 중심에 위치해 있다. 공격자가 이 지점을 장악할 수 있다면 단순히 한 대의 컴퓨터를 감염시키는 것이 아니라 소프트웨어 생태계 전체에 영향을 줄 가능성이 생긴다.
이것이 바로 개발자 도구가 공격자의 관심을 받는 이유다. 공격자는 항상 가장 효율적인 경로를 찾는다. 그리고 개발 환경은 종종 그 경로가 된다. 다음 섹션에서는 이러한 공격 전략이 실제로 어떤 형태로 등장했는지, 그리고 공급망 공격이라는 개념이 어떻게 발전해 왔는지 살펴보게 된다.

공급망 공격이라는 전략
앞선 섹션에서 살펴본 것처럼 개발 환경은 단순한 개인용 작업 공간이 아니라 소프트웨어가 만들어지는 출발점이다. 공격자의 관점에서 보면 이 지점은 매우 매력적인 공격 표면이 된다. 그런데 이러한 공격 전략은 단순히 개발자 개인을 노리는 방식으로 끝나지 않는다. 실제로 현대 사이버 공격에서는 공급망 공격(Supply Chain Attack) 이라는 보다 조직적이고 전략적인 형태로 발전해 왔다.
공급망 공격이라는 개념은 이름 그대로 소프트웨어가 사용자에게 전달되는 전체 과정, 즉 소프트웨어 공급망을 공격하는 전략을 의미한다. 일반적인 해킹은 특정 서버나 특정 시스템을 직접 침투하는 방식으로 이루어진다. 예를 들어 기업의 웹 서버 취약점을 이용해 내부 네트워크로 접근하거나, 사용자의 컴퓨터에 악성 파일을 설치하는 방식이 여기에 해당한다. 하지만 공급망 공격은 이런 직접적인 접근 방식을 사용하지 않는다. 대신 공격자는 소프트웨어가 만들어지고 배포되는 과정 자체에 개입한다.
소프트웨어는 개발자의 컴퓨터에서 작성된 뒤 곧바로 사용자에게 전달되는 것이 아니다. 코드 저장소, 빌드 서버, 패키지 저장소, 업데이트 서버 같은 여러 단계를 거치며 점차 완성된 형태로 배포된다. 이 과정은 소프트웨어 산업 전체가 공유하는 일종의 생산 체인이다. 그리고 공격자는 바로 이 생산 체인의 어느 한 지점을 장악함으로써 훨씬 더 큰 효과를 얻을 수 있다. 한 번의 침투로 수많은 사용자에게 악성 코드를 전달할 수 있기 때문이다.
이 전략이 특히 위험한 이유는 공격이 정상적인 소프트웨어 배포 과정 속에서 이루어진다는 점이다. 사용자는 프로그램을 설치하거나 업데이트할 때 특별한 의심을 하지 않는다. 오히려 업데이트는 보안을 유지하기 위한 필수적인 행동으로 인식된다. 그래서 공격자가 업데이트 서버나 빌드 시스템을 장악하면, 사용자들은 스스로 악성 코드를 다운로드하고 실행하게 된다. 겉으로 보기에는 정상적인 업데이트 과정이기 때문에 공격을 알아차리기도 쉽지 않다.
보안 전문가들이 종종 “공급망 공격은 현대 사이버 공격의 지름길”이라고 표현하는 이유도 여기에 있다. 공격자는 개별 시스템을 하나씩 침투할 필요가 없다. 대신 소프트웨어 생산 과정의 어느 한 지점을 장악하기만 하면 된다. 그 지점에서 만들어지는 모든 프로그램은 공격자의 영향을 받게 된다. 그리고 그 프로그램을 설치하는 모든 사용자 역시 공격 범위 안으로 들어오게 된다.
앞서 살펴본 개발 환경 역시 이 공급망의 일부다. 개발자가 사용하는 에디터와 IDE, 그리고 그 환경에서 이루어지는 빌드 과정은 공급망의 가장 앞단에 위치한다. 따라서 공격자가 개발 도구를 공격하는 전략은 단순한 개인 시스템 침투가 아니라, 소프트웨어 공급망을 장악하려는 시도로 이해할 수 있다. 그리고 이 전략이 실제로 어떤 결과를 가져올 수 있는지는 이미 여러 사건을 통해 확인된 바 있다.

개발 도구가 가장 위험한 공급망 지점인 이유
공급망 공격이 가능한 지점은 생각보다 많다. 코드 저장소를 공격할 수도 있고, 빌드 서버를 침투할 수도 있으며, 패키지 저장소나 업데이트 서버를 조작할 수도 있다. 하지만 그중에서도 특히 주목받는 지점이 있다. 바로 개발 도구다. IDE나 텍스트 에디터, 컴파일러 같은 프로그램은 소프트웨어 생산 과정의 시작점에 위치하기 때문에 공격자에게 매우 매력적인 목표가 된다.
개발 도구가 위험한 이유 중 하나는 이 프로그램들이 항상 실행되어 있다는 점이다. 많은 개발자는 컴퓨터를 켜는 순간 IDE나 에디터를 실행하고 하루 종일 그 환경에서 작업을 진행한다. 코드 편집, 테스트 실행, 빌드 수행, 로그 확인 같은 모든 작업이 이 프로그램 안에서 이루어진다. 공격자의 입장에서 보면 이러한 프로그램은 장기간 시스템 안에 머무르기에 매우 좋은 위치가 된다. 일반적인 백도어 프로그램과 달리 개발 도구는 정상적인 프로그램처럼 계속 실행되기 때문에 의심을 받지 않기 때문이다.
또 다른 이유는 개발 도구가 매우 넓은 권한을 가지고 있다는 점이다. IDE는 보통 프로젝트 전체 디렉터리에 접근할 수 있으며, 파일 시스템을 자유롭게 읽고 쓸 수 있다. 많은 IDE는 패키지 다운로드 기능이나 네트워크 통신 기능도 포함하고 있으며, 외부 플러그인을 설치할 수도 있다. 이런 기능들은 개발 생산성을 높이기 위해 만들어졌지만, 동시에 공격자가 활용할 수 있는 공격 표면을 넓히기도 한다.
더 중요한 문제는 개발 환경이 조직 내부의 여러 시스템과 연결되어 있다는 사실이다. 개발자는 보통 코드 저장소에 접근할 수 있고, 빌드 서버나 테스트 서버에 접근할 수 있으며, 때로는 내부 API나 데이터베이스에 접근하기도 한다. 즉 개발자의 컴퓨터는 단순한 개인 장비가 아니라 조직 내부 네트워크의 중요한 연결 지점이다. 공격자가 개발 환경을 장악하면 이 연결을 이용해 다른 시스템으로 이동할 수 있다.
이런 이유 때문에 개발 도구는 공격자에게 매우 이상적인 foothold가 된다. 한 번 침투하면 장기간 은밀하게 활동할 수 있고, 여러 시스템으로 이동할 수 있으며, 심지어 소프트웨어 생산 과정 자체에 개입할 수도 있다. 그래서 최근 몇 년 동안 보안 연구자들은 IDE와 빌드 도구, 패키지 관리자 같은 프로그램을 새로운 보안 위협으로 바라보기 시작했다.
앞선 섹션에서 살펴본 공급망 공격 전략과 결합하면 이 문제는 더욱 명확해진다. 개발 도구는 단순한 프로그램이 아니라 소프트웨어 공급망의 첫 번째 단계다. 그리고 이 단계에서 공격이 발생하면 그 영향은 이후 단계로 자연스럽게 확산될 수 있다. 이 점은 실제 사건을 통해서도 분명하게 확인된다.

실제 사례 1 — XcodeGhost 사건
개발 도구 공격이 얼마나 큰 영향을 미칠 수 있는지를 보여주는 대표적인 사건 중 하나가 XcodeGhost 사건이다. 이 사건은 2015년에 발생했으며, iOS 애플리케이션 생태계 전체에 상당한 충격을 주었다. Xcode는 Apple이 제공하는 공식 iOS 개발 도구로, 모든 iPhone 앱 개발자가 사용해야 하는 필수 프로그램이다. 즉 iOS 앱은 거의 예외 없이 Xcode를 통해 만들어진다.
문제는 당시 중국에서 발생한 다운로드 환경이었다. 많은 개발자들이 Apple의 공식 서버 대신 다른 경로에서 Xcode 설치 파일을 다운로드하고 있었는데, 그중 일부 파일이 이미 공격자에 의해 조작된 상태였다. 공격자는 Xcode 설치 파일에 악성 코드를 삽입했고, 개발자들은 아무런 의심 없이 그 프로그램을 설치해 사용했다. 개발 환경 자체가 이미 감염된 상태였던 것이다.
이후 발생한 일은 매우 충격적이었다. 개발자들이 그 조작된 Xcode를 이용해 앱을 빌드하자, 악성 코드가 자동으로 앱 안에 포함되기 시작했다. 즉 개발자는 정상적인 앱을 만들고 있다고 생각했지만 실제로는 악성 코드가 삽입된 앱을 생성하고 있었던 것이다. 그리고 그렇게 만들어진 앱들은 그대로 App Store에 업로드되었다.
결과적으로 수백 개의 iOS 앱이 XcodeGhost 악성 코드에 감염된 상태로 배포되었다. 일부 앱은 수백만 명의 사용자를 가지고 있었기 때문에 영향 범위는 매우 넓었다. 사용자들은 자신이 설치한 앱이 정상적인 앱이라고 믿었지만, 실제로는 공격자가 삽입한 코드가 함께 실행되고 있었다.
이 사건은 개발 도구 공격이 얼마나 위험한지를 분명하게 보여준다. 공격자는 개별 사용자 기기를 직접 공격하지 않았다. 대신 개발자가 사용하는 도구를 조작했다. 그리고 그 결과 수많은 앱과 사용자 기기가 동시에 영향을 받았다. 단 한 번의 공격이 소프트웨어 생태계 전체로 확산된 것이다.
XcodeGhost 사건 이후 보안 연구자들은 개발 환경 보안을 새로운 관점에서 바라보기 시작했다. IDE나 컴파일러 같은 프로그램이 단순한 개발 도구가 아니라, 소프트웨어 공급망의 핵심 지점이라는 사실이 분명해졌기 때문이다. 그리고 이러한 관점은 이후 등장한 여러 공급망 공격 사건을 이해하는 중요한 기준이 되었다.

실제 사례 2 — SolarWinds 사건
앞선 섹션에서 살펴본 XcodeGhost 사건은 개발 도구를 공격했을 때 어떤 일이 발생할 수 있는지를 보여주는 대표적인 사례였다. 그러나 공급망 공격이 가진 파괴력이 얼마나 큰지 보여주는 사건은 따로 있다. 바로 2020년에 공개된 SolarWinds 공급망 공격 사건이다. 이 사건은 단순한 보안 사고를 넘어, 국가 차원의 사이버 공격 전략이 어떻게 소프트웨어 공급망을 이용할 수 있는지를 보여주는 사례로 기록되었다.
SolarWinds는 네트워크 관리 소프트웨어를 만드는 회사로, 기업과 정부 기관의 인프라를 관리하는 데 사용되는 Orion 플랫폼을 제공하고 있었다. 이 소프트웨어는 전 세계 수많은 조직에서 사용되고 있었으며, 네트워크 상태를 모니터링하고 서버를 관리하는 핵심 도구 중 하나였다. 다시 말해 Orion은 단순한 애플리케이션이 아니라 조직의 IT 인프라 깊숙한 곳에서 동작하는 관리 시스템이었다. 공격자가 이 소프트웨어에 접근할 수 있다면, 그 영향은 단일 시스템을 넘어 조직 전체로 확산될 가능성이 있었다.
공격자는 바로 이 지점을 노렸다. 직접 조직의 서버를 공격하는 대신 SolarWinds의 빌드 시스템을 침투한 것이다. 빌드 시스템은 개발자가 작성한 코드를 컴파일하고 패키징하여 사용자에게 배포할 수 있는 형태로 만드는 시스템이다. 공격자가 이 시스템을 장악하면, 정상적인 소프트웨어 업데이트 안에 악성 코드를 삽입할 수 있다. 그리고 그 업데이트는 평소와 같은 방식으로 사용자에게 전달된다.
SolarWinds 사건에서 실제로 이런 일이 일어났다. 공격자는 Orion 업데이트 패키지 안에 백도어를 삽입했고, 이 업데이트는 정상적인 디지털 서명을 포함한 상태로 배포되었다. 즉 사용자 입장에서는 완전히 정상적인 업데이트처럼 보였다. 기업과 정부 기관들은 보안 업데이트라고 생각하고 해당 소프트웨어를 설치했다. 그러나 실제로는 공격자가 삽입한 코드가 함께 실행되고 있었다.
이 공격의 규모는 매우 컸다. 약 18,000개의 조직이 이 업데이트를 다운로드하고 설치한 것으로 알려졌다. 그중에는 미국 정부 기관과 주요 기술 기업들도 포함되어 있었다. 공격자는 단 한 번의 공급망 침투를 통해 수천 개의 조직에 동시에 접근할 수 있는 발판을 마련한 셈이었다.
SolarWinds 사건은 공급망 공격이 단순한 기술적 취약점 문제가 아니라 전략적인 공격 방식이라는 사실을 분명하게 보여준다. 공격자는 더 이상 개별 서버를 공격하는 데 집중하지 않는다. 대신 소프트웨어가 만들어지고 배포되는 과정 자체를 노린다. 그리고 그 과정의 어느 한 지점을 장악함으로써 훨씬 더 큰 영향력을 확보하려 한다.
XcodeGhost 사건이 개발 도구를 통한 공급망 공격의 가능성을 보여주었다면, SolarWinds 사건은 그 전략이 얼마나 큰 규모로 실행될 수 있는지를 보여주었다. 그리고 이 두 사건은 공통된 메시지를 전달한다. 공격자는 항상 가장 효율적인 경로를 찾으며, 소프트웨어 공급망은 그 경로가 되기 쉽다는 사실이다.

Notepad++ 사건을 다시 보면
지금까지 살펴본 여러 사례를 바탕으로 다시 Notepad++ 사건을 돌아보면, 이 사건의 의미가 조금 더 분명해진다. 처음 이 사건이 알려졌을 때 많은 사람들은 단순히 “텍스트 에디터가 해킹되었다”는 뉴스로 받아들였다. 그러나 공급망 공격이라는 관점에서 보면 이 사건은 단순한 프로그램 해킹이 아니라 개발자 환경을 노린 공격 시도로 해석될 수 있다.
Notepad++는 세계적으로 매우 널리 사용되는 텍스트 에디터다. 특히 Windows 환경에서 개발을 하는 많은 개발자들이 기본적인 코드 편집 도구로 사용하고 있다. 개발자뿐 아니라 시스템 관리자나 데이터 분석가 같은 다양한 기술 직군에서도 사용된다. 이런 프로그램은 겉보기에는 단순한 편집기처럼 보이지만, 실제로는 수많은 개발 환경 속에서 중요한 역할을 수행한다.
공격자가 이 프로그램의 업데이트 시스템을 조작할 수 있다면 상황은 크게 달라진다. 개발자가 프로그램을 업데이트하는 순간 공격자가 삽입한 코드가 실행될 수 있기 때문이다. 그리고 그 코드가 개발 환경 안에서 동작하게 되면, 코드 저장소 접근이나 네트워크 통신 같은 다양한 활동이 가능해진다. 즉 공격자는 단순히 한 프로그램을 감염시키는 것이 아니라 개발 환경 안으로 침투하는 통로를 확보하게 된다.
이 지점에서 Notepad++ 사건의 의미가 분명해진다. 공격 대상은 단순한 에디터였지만, 실제로 노린 것은 개발자 생태계였을 가능성이 있다. 개발자가 사용하는 도구는 소프트웨어 생산 과정과 밀접하게 연결되어 있기 때문이다. 그래서 공격자가 개발 도구의 업데이트 시스템을 공격하는 것은 단순한 프로그램 변조가 아니라 공급망 공격 전략의 일부로 볼 수 있다.
이 사건은 또 하나의 중요한 교훈을 보여준다. 많은 개발자들은 오픈소스 프로그램을 비교적 안전한 도구로 생각하는 경향이 있다. 물론 오픈소스는 코드가 공개되어 있기 때문에 투명성이 높은 장점이 있다. 그러나 소프트웨어의 보안은 코드만으로 결정되지 않는다. 업데이트 서버, 빌드 시스템, 배포 인프라 같은 요소들도 동일하게 중요한 역할을 한다.
결국 Notepad++ 사건은 하나의 질문으로 이어진다. 우리가 매일 사용하는 개발 도구는 과연 얼마나 안전한가. 그리고 그 도구를 통해 만들어지는 소프트웨어는 얼마나 신뢰할 수 있는가. 이러한 질문은 단순히 특정 프로그램의 보안 문제를 넘어, 현대 소프트웨어 생태계 전체의 구조를 다시 바라보게 만든다.

결론 — 개발 도구는 새로운 공격 전장이 되었다
지금까지 살펴본 여러 사례들은 하나의 공통된 메시지를 전달한다. 현대 사이버 공격에서 중요한 것은 단순히 취약한 시스템을 찾는 것이 아니라 가장 효율적인 공격 경로를 찾는 것이라는 점이다. 공격자는 점점 더 복잡해지는 보안 환경 속에서 직접적인 침투 대신 간접적인 접근 방식을 선택하고 있다. 그리고 그 과정에서 소프트웨어 공급망은 매우 매력적인 공격 표면이 된다.
개발 도구는 이 공급망의 출발점에 위치한다. 개발자는 코드 작성, 빌드, 테스트, 배포 같은 모든 과정을 개발 환경을 통해 수행한다. 따라서 이 환경이 공격자의 통제 아래 들어간다면, 단순히 한 컴퓨터가 감염되는 것이 아니라 그 개발자가 만드는 모든 소프트웨어가 영향을 받을 수 있다. 이 사실은 개발 도구가 단순한 생산 도구가 아니라 소프트웨어 생태계 전체를 연결하는 핵심 지점이라는 것을 의미한다.
SolarWinds 사건은 빌드 시스템이 침투되었을 때 어떤 일이 발생할 수 있는지를 보여주었다. XcodeGhost 사건은 개발 도구 자체가 조작되었을 때 어떤 일이 일어나는지를 보여주었다. 그리고 Notepad++ 사건은 비교적 작은 도구라도 공급망 공격의 출발점이 될 수 있다는 사실을 보여주었다. 이 세 사건은 서로 다른 환경에서 발생했지만, 공통적으로 소프트웨어 공급망이라는 동일한 구조를 이용하고 있다.
이러한 흐름은 앞으로도 계속될 가능성이 높다. 소프트웨어 산업은 점점 더 복잡한 생태계로 발전하고 있으며, 개발 도구와 빌드 시스템, 패키지 저장소, 업데이트 서버는 서로 긴밀하게 연결되어 있다. 이 연결 구조는 개발 생산성을 높이는 동시에 새로운 공격 경로를 만들어 내기도 한다.
그래서 현대 보안 연구자들은 점점 더 개발 환경 보안에 주목하고 있다. IDE 플러그인, 패키지 관리자, 빌드 도구, 업데이트 시스템 같은 요소들이 모두 새로운 공격 표면으로 인식되기 시작했다. 개발자가 사용하는 도구 하나가 수많은 소프트웨어와 연결되어 있기 때문이다.
이 시리즈의 다음 글에서는 이러한 공급망 공격이 실제로 어떻게 이루어졌는지를 더 자세히 살펴보게 된다. 특히 SolarWinds 사건을 중심으로, 공격자가 어떻게 빌드 시스템을 침투했고 그 결과 어떤 일이 벌어졌는지 분석할 것이다. 그 사건은 단순한 보안 사고가 아니라, 소프트웨어 공급망 공격이 현실 세계에 어떤 영향을 미칠 수 있는지를 보여주는 대표적인 사례이기 때문이다.