OWASP TOP10 중에 6번째 항목은 다음과 같다
A06: Vulnerable and Outdated Components (취약하고 오래된 요소)
서비스가 오래 지속될 때 라이브러리나 패키지 또한 지속되거나 없어지거나 병합, 업데이트 되면서 서비스에 취약점이 발생할 수 있다. 이러한 취약점을 방비하기 위해서 우리는 항상 우리 서비스에 종속되어있는 패키지 툴에 대한 유지보수가 필요하다.
이러한 종속성에 대한 검사를 진행하려면 어떻게 해야할까? 라는 고민에서 npm audit명령어를 알아보게 되었다.
npm audit 명령어는 Node.js 프로젝트에서 사용되는 의존성 패키지들의 보안 취약점을 검사하고, 보안 문제를 해결할 수 있는 업데이트 정보를 제공하는 npm의 기능이다.
1.프로젝트에서 사용하는 의존성 패키지의 취약점을 확인하고, 취약점에 대한 업데이트를 적용할 필요성이 있는 경우
2.프로젝트를 공유하거나 배포하기 전에 보안 취약점을 확인하고 수정할 필요성이 있는 경우
3.새로운 의존성 패키지를 추가할 때, 해당 패키지가 보안 취약점을 가지고 있는지 미리 확인할 필요성이 있는 경우
위의 경우를 보았을 때에 배포 전이나, 새로운 패키지를 사용하게 되거나를 볼 수 있는데 이 경우는 코드를 test하는 과정과 거의 일치하는 것 같다. 필자의 생각으로는 CI/CD를 구현하면서 같이 CI파이프라인쪽에 npm audit명령어를 실행해 주면 좀 더 편하게 관리할 수 있을 것이라 생각된다.
npm audit 명령어를 실행하면, 해당 프로젝트에서 사용하는 모든 의존성 패키지들을 검사하여 보안 취약점이 있는 패키지들의 목록을 출력합니다. 이때 각 패키지별로 취약점의 심각도, 취약점 유형, 취약점에 대한 설명 등을 함께 제공한다.
OWASP TOP10 중에 6번째 항목에 나타난 보안 취약점을 해결하기 위해서는 매번 배포 및 신규 라이브러리 설치 시 해당 패키지를 최신 버전으로 업데이트하거나, 패치된 버전으로 업데이트해 주어야 한다. npm audit
명령어 실행 이후 발생하는 취약점이 있다면, npm audit fix
명령어를 사용하여, 보안 취약점을 해결할 수 있는 패치 버전으로 의존성 패키지를 업데이트할 수 있다.
npm audit 명령어를 통해 보안 취약점을 검사하고 업데이트하는 것은 Node.js 프로젝트를 안전하게 유지하고, 보안 위협을 예방하는 데 매우 중요한 역할을 할 수 있을 것이다.