소프트웨어 공급망 공격(supply chain attack)이 점차 심각한 위협으로 떠오르면서, 소프트웨어 재사용 방식에 대한 근본적인 재검토가 필요하다는 주장이 제기되고 있습니다. 과거에는 재사용 가능한 소프트웨어를 만드는 것이 어려워 '소프트웨어 위기'를 겪었지만, 이제는 패키지 저장소와 패키지 관리자의 발달로 코드 재사용이 너무 쉬워지면서 오히려 새로운 위기를 맞고 있다는 분석입니다.
현재의 공급망 공격은 소프트웨어 배포 비용이 극도로 낮아지고 빌드 및 배포 자동화(CI/CD)가 보편화되면서 더욱 확산되고 있습니다. 자동화된 의존성 갱신은 악성 변경이 빠르게 퍼지게 만들며, 공격자는 CI(지속적 통합) 러너가 실행되는 속도로 악성 코드를 확산시킬 수 있습니다. 이에 대한 해법으로 제시되는 것이 바로 '벤더링(vendoring)'입니다. 벤더링은 모든 의존성 코드를 프로젝트 저장소에 직접 포함시켜 관리하는 방식으로, 외부에서 갑자기 변경될 수 있는 의존성을 2~3개 수준으로 줄이는 것을 목표로 합니다. 이는 저장소 크기를 키우지만, 자동 변경을 막고 의존성의 규모와 비용을 명확하게 보여주는 장점이 있습니다.
이러한 접근 방식은 의존성 사용에 대한 비용과 가시성을 높여 불필요한 재사용을 줄이고 코드베이스의 비대화를 방지하는 효과도 가져옵니다. 예를 들어, 단순한 라이브러리를 추가했는데 실제 코드가 수만 줄에 달한다면, 개발자는 그 필요성에 대해 다시 한번 고민하게 됩니다. 물론 모든 소프트웨어에 적용할 수 있는 만능 해법은 아니지만, 순수 계산을 수행하거나 기본적인 I/O(입출력)만 사용하는 작은 라이브러리나 애플리케이션에는 실용적인 이점을 제공할 수 있습니다. 궁극적으로는 의존성 자동 갱신을 줄이고 프로젝트가 직접 의존성 소스까지 보유함으로써 공급망 공격의 자동 확산을 늦추고 소프트웨어의 안정성을 높이자는 것이 핵심입니다.