본문 바로가기

공급망 공격의 이해와 방어 전략: 파이썬, NPM, 오픈소스 생태계의 취약점

오토씨 2024. 11. 4.

안녕하세요! 오토씨입니다. 최근 오픈소스 생태계를 겨냥한 사이버 보안 위협인 공급망 공격이 부쩍 증가하고 있습니다. 이러한 공격은 프로그래머와 개발자를 대상으로 시스템을 침투하는 새로운 방식으로, 우리 모두가 경각심을 가져야 할 문제입니다. 이 글에서는 파이썬과 NPM, 그리고 다른 오픈소스 생태계에서 공급망 공격이 어떻게 이루어지고 있는지, 또 이를 어떻게 방어할 수 있는지에 대해 쉽게 설명해드리겠습니다.

 

공급망 공격의 이해와 방어 전략: 파이썬, NPM, 오픈소스 생태계의 취약점

 

공급망 공격이란 무엇인가요?

공급망 공격은 소프트웨어 개발의 저장소을 타겟으로 하여 악성 코드를 주입하는 방식입니다. 예를 들어, 우리가 일상적으로 사용하는 오픈소스 패키지에 악성 코드를 숨겨두고, 이를 개발 과정에서 아무 의심 없이 가져다 쓰게 만드는 것이죠. 특히 파이썬(PYPI)이나 자바스크립트(NPM)와 같은 오픈소스 생태계에서 이러한 공격은 점점 더 흔해지고 있습니다.



다양한 프로그래밍 생태계의 취약점

Checkmarx 연구에 따르면, 다양한 프로그래밍 언어와 생태계에서 진입점 공격이 가능하다고 합니다. 진입점 공격은 소프트웨어 설치나 실행 시 사용자가 무심코 악성 코드를 실행하게 만드는 공격 방식으로, 패키지의 취약점을 이용해 시스템에 침투하는 것을 목표로 합니다. 공격자들은 유명한 패키지를 흉내내거나 같은 이름으로 가짜 패키지를 배포하여, 개발자들이 이를 다운로드하고 실행하게끔 유도합니다. 이러한 패키지 스쿼팅(package squatting) 기법은 특히 보안에 취약한 오픈소스 프로젝트에서 큰 문제가 되고 있습니다.

반응형



Command-Jacking

공급망 공격의 일종으로 Command-Jacking라는 방법이 있습니다. 예를 들어, 2021년에 발생한 Codecov 사건에서는 공격자가 인기 있는 코드 커버리지 도구의 명령어를 수정하여 수천 개의 기업과 개발자들의 민감한 데이터를 훔친 사례가 있습니다. 우리가 자주 사용하는 'aws'나 'docker' 같은 명령어를 공격자가 가짜로 만들어 배포할 수 있습니다. 이러한 가짜 명령어는 사용자에게 악성 코드가 실행되도록 유도하며, 이를 통해 민감한 정보를 탈취하거나 시스템을 장악할 수 있습니다. 특히 로컬 패키지 경로가 시스템 디렉토리보다 우선순위를 가지는 경우, 이 공격의 위력은 배가됩니다.



드러나지 않는 공격: Command Wrapping

또 다른 위험한 방식은 Command Wrapping입니다. 예를 들어, 원래 'git commit' 명령어를 실행할 때, 공격자는 이를 감싸는 스크립트를 작성해 정상적인 커밋 작업이 이루어지면서도 동시에 백그라운드에서 민감한 정보를 전송하는 방식으로 악성 코드를 실행할 수 있습니다. 이러한 방식은 사용자가 명령어를 실행할 때 정상적인 결과를 유지하면서도, 은밀하게 악성 동작을 수행하기 때문에 탐지가 어렵습니다. 개발자 입장에서는 이 명령어가 정상적인 것처럼 보이기 때문에 피해를 입기 쉽습니다.



수정된 플러그인과 악성 확장 기능

공격자들은 또한 개발자 도구에 악성 플러그인을 추가하는 방식으로 공급망 공격을 시도합니다. 이러한 플러그인을 사용하면, 공격자는 개발 환경에 깊이 침투해 코드베이스에 악성 코드를 삽입하거나, 특정 테스트 과정에서 조작을 가할 수 있습니다. 이는 특히 지속적 통합(CI) 및 지속적 배포(CD) 환경에서 치명적인 영향을 미칠 수 있습니다.



공급망 공격을 어떻게 방어할 수 있을까요?

공급망 공격은 이제 단순한 이슈가 아닌, 모든 개발자가 경계해야 할 큰 위협입니다. 2024년 기준으로 약 512,847개의 악성 패키지가 발견되었으며, 이는 이전보다 더 정교하고 탐지하기 어렵습니다. (출처: Cybersecurity Ventures 보고서) 이러한 위협에 대비하기 위해서는 몇 가지 기본적인 보안 수칙을 지켜야 합니다.

  • 패키지의 출처를 확인하고, 신뢰할 수 있는 소스에서만 패키지를 다운로드하세요.
  • 정기적인 보안 감사와 코드 검토를 통해 프로젝트에 포함된 패키지의 안전성을 확인하세요.
  • 의심스러운 명령어나 패키지가 있다면 설치를 피하고, 먼저 검토하는 습관을 가지세요.

공급망 공격의 피해를 줄이기 위해서는 개발자와 기업 모두가 보안 교육을 강화하고, 최신 보안 트렌드에 대한 이해를 높여야 합니다. 이는 단순히 우리의 시스템을 보호하는 것이 아니라, 더 나아가 소프트웨어 생태계의 건강을 지키는 일입니다.

 

댓글