NPM의 최신 업데이트에 파일 접근권한을 바꿔버리는 치명적 버그가 발견됐다. NPM은 자바스크립트와 노드JS 패키지 매니저다. 지난 21일 배포된 NPM 5.7.0 버전에 나타난 버그로 개발자의 주의가 요구된다.
22일(현지시간) 미국 지디넷에 따르면, NPM 5.7.0 업데이트를 설치한 후 비관리자 계정(non-root user)으로 관리자권한 명령어(sudo)를 입력하면 파일 디렉토리의 소유권이 접속한 계정으로 변경되는 버그가 발견됐다.[NPM 깃허브 버그 리포트]

가령 명령어 'sudo npm --help'나 'sudo npm update -g' 같은 명령어를 입력하면, '/etc, /usr, /boot' 등의 디렉터리 소유권이 변경된다. 해당 NPM을 사용중인 사용자에게 시스템의 접근권한이 옮겨가게 돼 운영자의 시스템 접근을 막아버린다.
리눅스 파일과 디렉토리 소유권, 접근권이 변경되므로 시스템이 파괴될 수 있다. 리눅스뿐 아니라 맥OS와 FreeBSD에서도 같은 현상이 나타나는 것으로 알려졌다.
5.7.0 버전 업데이트 4시간 뒤 버그가 발견됐고, NPM 개발주체 측은 버그를 해결한 5.7.1 업데이트를 긴급 배포했다.[NPM 블로그 바로가기]
패치를 배포하긴 했지만, 근본적인 문제를 다수 드러낸 사건이었다.
NPM은 노드JS와 자바스크립트 생태계에서 핵심을 차지하고 있다. 오늘날 수많은 웹사이트 다수가 NPM을 사용한다.
그런데 현재 NPM 프로젝트는 단 2명의 개발자 참여로 진행되고 있다. NPM 프로젝트의 중요성에 비해 코어레벨을 관리하는 주체가 매우 적다는 것이다.
최근의 버그같은 양상의 사건이 NPM에서 처음 벌어진 일이 아니다. 2016년 전세계 웹사이트를 패닉 상태에 빠뜨렸던 NPM 사건이 대표적이다. 당시 한 개발자가 몇줄의 코드로 이뤄진 'left-pad'란 모듈을 NPM에서 삭제하자 그 코드에 의존하던 수많은 노드JS 프로그램들이 작동불능 상태에 빠진적이 있다.[NPM left-pad 사태 관련기사 바로가기]
관련기사
- 구글 크롬 오탈자 수정 프로그램서 정보유출 버그2018.02.26
- 스펙터-멜트다운 CPU버그 공격시도 포착2018.02.26
- 최신 맥OS, 암호 몰라도 로그인된다고?2018.02.26
- 유명 드론 암호화 통신, 4년 간 훔쳐보기 가능했다2018.02.26
2명의 개발자로 관리되는 프로젝트인데다 많은 사용자들이 무수한 코드에 얽히고 얽혀 의존하는 문제는 사람의 작은 실수로 큰 사태를 만들어낼 수 있다.
NPM 설치 처리순서 자체도 문제점으로 지적된다. NPM은 시스템 변경을 루트 명령어로 하게 한다. 운영체제에서 루트권한이나 관리자계정을 사용하는 건 매우 민감한 문제에 한정한다. 그러나 NPM은 설치하는 작업조차 루트 유저로 할 수 있다.