개발자 / 보안

"보안 위험 줄이는 종속성 관리법" 오픈SSF, 'npm 베스트 프랙티스 가이드' 발표

Michael Hill | CSO 2022.09.06
최근 오픈SSF(The Open Source Security Foundation, OpenSSF)가 npm 베스트 프랙티스 가이드(npm Best Practices Guide)를 발표했다. 자바스크립트와 타입스크립트 개발자가 오픈소스 종속성 관련 보안 위협을 줄이는 데 도움을 주기 위한 목적이다. 개발자들이 종속성을 점점 더 많이 공유하고 사용하는 것은 신속한 개발과 혁신에 기여할 수 있지만, 동시에 위험을 초래할 수도 있기에 주의가 요구된다.
 
ⓒ Getty Images Bank

오픈SSF 베스트 프랙티스 워킹 그룹(OpenSSF Best Practices Working Group)이 제작한 이번 가이드는 npm을 위한 종속성 관리와 공급망 보안을 중심으로 안전한 CI 환경을 설정하는 방법, 종속성 혼란을 피하는 방법, 종속성 탈취로 인한 여파 제한하는 방법과 같은 다양한 영역을 다룬다. 


심각한 보안 위험이 될 수 있는 오픈소스 종속성

오픈SSF 기여자들은 블로그에서 오픈소스 종속성을 사용하는 이점이 단점을 능가하는 경우가 종종 있지만 상당한 위험이 발생할 수 있다며, “간단한 종속성 업데이트로 종속 프로젝트가 중단될 수 있다. 또한 다른 소프트웨어처럼 종속성에 취약성이 있거나 하이재킹되어 이를 사용하는 프로젝트에 영향을 줄 수 있다”라고 썼다.

리눅스 재단의 오픈소스 공급망 보안 부문 이사 데이비드 A. 휠러는 CSO에 개발자의 오픈소스 종속성 사용으로 인한 가장 큰 보안 위험이 직간접 종속성의 취약성이 지닌 파괴력을 과소평가하는 것이라고 지적했다. 휠러는 “결함은 모든 소프트웨어에서 발생할 수 있다. 주의를 기울이지 않으면 공급망에 심각한 영향을 미칠 수 있다. 종속성은 보이지 않는 경우가 빈번하며, 개발자나 조직은 스택의 모든 레이어를 볼 수 없다. 소프트웨어 재사용을 중단한다고 해서 해결되는 문제가 아니다. 소프트웨어를 현명하게 재사용하면서 취약점이 발견됐을 때 구성요소를 업데이트할 준비를 하고 있어야 한다”라고 덧붙였다.

그러나 효율적인 종속성 보안 전략을 개발하는 것은 어려울 수 있다. 그동안 개발자들이 자주 다루던 문제와는 다른 종류의 문제가 연관된 경우가 있어서다. 따라서 npm 베스트 프랙티스 가이드는 개발자와 조직이 직면한 다양한 문제를 해결하고 안전한 종속성을 사용할 수 있도록 지원한다. 구체적으로 npm에서 사용할 수 있는 공급망 보안 기능의 개요를 제공하고 종속성 사용에 관한 문제를 설명하며, 각 프로젝트 단계에서 위험을 줄이는 방법을 제시한다.


오픈소스 위험을 해결하는 종속성 관리의 핵심

가이드는 종속성 관리에 전반적으로 집중하면서 발생할 수 있는 위협을 완화하는 단계를 세부적으로 제시한다. 예를 들어, 종속성을 사용하는 첫 단계는 해당 종속성의 원본과 신뢰성, 보안 상태를 학습하는 것이다. 가이드는 특히 타이포스쿼팅(typosquatting) 공격을 조심하라고 조언한다. 이 공격에서 공격자는 깃허브 리포지토리를 식별하고 해당 패키지의 신뢰성(기고자 수, 점수 등)을 평가해 사용자가 악성 패키지를 설치하게끔 유도하도록 공식적인 것으로 보이는 패키지 이름을 만든다.

개발자는 관심 있는 깃허브 프로젝트를 조사할 때 해당 패키지의 이름을 확인한 후 오픈SSF 시큐리티 스코어카드(OpenSSF Security Scorecards)를 사용해 종속성의 현재 보안 상태를 살펴봐야 한다. 또한 deps.dev 사이트에서 전이 종속성의 보안 상태를 공부해야 하며, npm-audit를 통해 프로젝트 종속성에 있는 기존 취약점을 확인해야 한다.

재현할 수 있는 설치는 패키지가 설치될 때마다 종속성의 정확한 복사본이 사용되도록 보장한다. 이는 보안 측면에서 이점을 제공한다. 종속성에 취약성이 있는 경우 잠재적인 네트워크 손상을 빠르게 식별할 수 있고 악의적인 종속성과 같은 위협을 완화할 수 있으며, 패키지 손상을 감지하는 데 도움이 되기 때문이다.

또한 개발자들은 암호화 해시를 사용해 해시 피닝(pinning)이 적용된 잠금파일을 사용해야 한다. 가이드는 “해시 피닝은 레지스트리에 대한 신뢰 없이 종속성에 대한 예상 해시를 패키지 관리자에게 알려준다. 그런 다음 패키지 관리자는 각 설치가 진행되는 동안 각 종속성의 해시가 동일하게 유지되는지 확인한다. 종속성에 대한 악의적인 변경을 탐지하면 설치를 거부한다”라고 설명했다.

새로운 취약점 발견과 패치에 발맞춰 정기기적으로 업데이트를 하며 종속성을 지속적으로 유지보수하는 것도 매우 중요한 작업이다. 가이드는 “종속성 관리를 위해 디팬다봇(dependabot)이나 레노베이트봇(renovatebot)과 같은 툴을 사용하라. 이런 툴은 개발자가 검토하고 제출한 병합 요청을 기본 분기에 통합한다. 종속성을 제거하기 위해 개발자는 주기적으로 npm-prune을 실행하고 병합 요청을 제출해야 한다”라고 덧붙였다.

오픈SSF의 가이드는 패키지와 내부 레지스트리의 패키지 출시/배포와 프라이빗 패키지에 대한 보안 지침도 제공한다. 
editor@itworld.co.kr

회사명 : 한국IDG | 제호: ITWorld | 주소 : 서울시 중구 세종대로 23, 4층 우)04512
| 등록번호 : 서울 아00743 등록발행일자 : 2009년 01월 19일

발행인 : 박형미 | 편집인 : 박재곤 | 청소년보호책임자 : 한정규
| 사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2024 International Data Group. All rights reserved.