Security

npm 디펜던시 관리로 인한 보안 취약점: 개발자가 알아야 할 사항

2024.12.04R&D | June

 

프론트엔드와 백엔드 개발 모두에서 디펜던시 관리는 프로젝트의 안정성과 보안성을 보장하는 핵심적인 요소입니다. 특히, RN(React Native) 프로젝트를 포함하여 npm이나 yarn과 같은 패키지 매니저를 사용하는 경우, 디펜던시 관리는 더욱 중요한 과제가 됩니다. 이 글에서는 RN 프로젝트에서 디펜던시를 효과적으로 관리하는 방법을 단계별로 정리하고, 보안 문제를 예방하면서 프로젝트의 성능을 극대화할 수 있는 실용적인 팁을 소개합니다. 😊

 

 


 

 

1️⃣ 디펜던시는 항상 최신 상태로 유지하기

 

오래된 디펜던시는 보안 취약점의 주요 원인 중 하나입니다. 새로운 버전에서는 기존의 취약점을 수정하고 성능을 개선한 경우가 많으므로, 항상 최신 상태로 유지하는 것이 중요합니다.

 

 

💡 정기 점검 및 업데이트 방법

 

  1. npm audit 또는 yarn audit 명령어를 활용해 현재 디펜던시의 보안 취약점을 확인하세요.
  2. npm updateyarn upgrade로 의존성 패키지를 최신 상태로 업데이트합니다.
  3. 패키지 업데이트 전후에는 테스트를 통해 변경 사항이 프로젝트에 영향을 미치지 않는지 반드시 확인하세요.

 

# NPM 예시
npm audit
npm update

 

 

Tip: npm audit fix 명령어를 사용하면 자동으로 보안 이슈를 해결할 수 있습니다. 다만, 주요 버전 변화(major version)는 수동으로 확인하는 것이 안전합니다.

 

 

참고 자료

 

 


 

 

2️⃣ 설치 단계에서 스크립트 실행 여부 확인하기

 

패키지 설치 시 실행되는 스크립트(run scripts)는 유용하게 쓰일 수 있지만, 악성 라이브러리가 이를 악용할 위험이 있습니다. 특히 검증되지 않은 라이브러리를 설치할 때에는 설치 단계에서 자동으로 실행되는 스크립트를 철저히 확인하고 검증하세요.

 

🚨 실제 사례

 

  • 2021년, 일부 악성 npm 패키지가 설치 과정에서 run scripts를 이용해 데이터를 탈취하거나 시스템 파일을 수정한 사건이 발생했습니다.
  • 공격자는 라이브러리를 설치하는 개발자의 정보를 노출시키는 스크립트를 사용했습니다.

 

사례 분석 보기:

악성 스크립트 사례 분석

npm의 run scripts 악용 사례

 

 

📌 예방 조치

 

  1. 설치하려는 패키지의 package.json 파일에 정의된 스크립트를 반드시 검토하세요.
  2. -ignore-scripts 옵션을 사용해 설치 과정에서 스크립트 실행을 방지합니다.

 

# NPM 스크립트 실행 방지
npm install --ignore-scripts

 

 


 

 

3️⃣ 디펜던시 혼동(Dependency Confusion) 방지하기

 

대규모 프로젝트에서는 내부 저장소공개 저장소의 패키지가 혼동되는 문제가 발생할 수 있습니다. 이로 인해 악성 패키지가 내부 프로젝트에 유입되는 경로가 생길 수 있습니다. 이를 방지하기 위해 다음 사항을 준수하세요.

 

🔑 해결 방안

 

  1. 퍼블릭 레지스트리와 프라이빗 레지스트리 경계 설정:
    • 내부에서 사용하는 패키지는 프라이빗 네임스페이스를 사용합니다. 예: @mycompany/mypackage
  2. 패키지 이름 확인: 외부 라이브러리 이름과 유사한 내부 패키지 이름은 피하세요.
  3. npm config.npmrc 파일에서 프라이빗 레지스트리를 우선적으로 사용하도록 설정합니다.

 

# .npmrc 설정 예시
registry=https://registry.npmjs.org/
@mycompany:registry=https://private-registry.mycompany.com/

 

 

사례: 유명 라이브러리 이름을 도용한 공격

  • 예: awesome-library → 악성 패키지명 awesome-library.js

 

 


 

4️⃣ 간단한 보안 팁 체크리스트 ✅

 

React Native 프로젝트에서 보안을 유지하고 디펜던시 관리를 효율적으로 하기 위해 다음의 체크리스트를 참고하세요!

 

🛠️ 디펜던시 관리 팁

 

  1. 정기 점검: npm audit 또는 yarn audit 도구를 활용해 보안 이슈를 확인하세요.
  2. Lockfile 사용: package-lock.json 또는 yarn.lock 파일을 유지해 의존성 버전을 고정하세요.
  3. 패키지 출처 확인: 불분명한 출처의 라이브러리는 설치 전에 검증하세요.
  4. 설치 스크립트 차단: -ignore-scripts 옵션을 통해 악성 스크립트를 방지합니다.
  5. 내부/공개 레지스트리 구분: 프라이빗 레지스트리와 퍼블릭 레지스트리를 명확히 구분하세요.

 

 

추천컬럼

추천컬럼 이미지

홈페이지 제작기획, 올바른 사이트 개발 및 리뉴얼

2025.03.18
추천컬럼 이미지

프로그램개발, 합리적인 가격을 위해 잊으면 안되는 MVP

2024.09.20

상담만 받아보셔도 좋습니다 긱다이브의 상담으로 업체 비교를 시작해보세요

CONTACT US