“Left - Pad” 이슈

weonest·2023년 4월 30일
0

곁눈질

목록 보기
1/2

요즘 공부를 쉴 때에도 유튜브로 개발 관련 영상 위주로만 시청을 하다보니 보고 듣는 것들이 많아져서 개발 상식이 점차 풍부해지고 있는 것 같다. 그래서 이참에 곁눈질로만 볼 게 아니라 본 내용들을 정리해보자 싶어서 글을 쓰게 되었다!

지금! 개발자라면 알아야하는 NPM 해킹 사례 🚨

오늘 소개할 내용은 유명한 개발 유튜버인 “노마드 코더” 님의 NPM 해킹 사례 영상에서 나온 “Left - Pad” 이슈이다.

숏컷의 문제

오늘날 우리 개발자들에게 가장 중요한 것은 ‘키보드’를 제외하면 ‘시간’이다. 그렇기 때문에 개발을 시작하기에 앞서 참고할 만한 내용들을 준비해두고 작업을 하는 경우가 많다.

예를 들어 Spring에서 로그인 구현을 진행하고 싶다면 이와 관련한 내용을 구글에 검색하여 비슷한 코드를 찾아서 이용하거나, 이를 정확히 수행하는 라이브러리 ,패키지 등을 찾아 해당 파일을 설치하고 사용함으로써 시간을 절약할 수 있다.

직접 코딩하는 대신 패키지를 이용하는 편이 훨씬 쉽고 시간도 절약할 수 있기 때문에 많은 사람들이 이와 같은 방법을 이용하고 있을 것이다. 하지만, 때때로 개발자로서 지나치게 패키지에 의존하게 되는 경우가 있는데 이러한 경우에 발생할 수 있는 문제들을 담고 있는 내용이 “Left - Pad” 이슈이다.

이 “Left - Pad” 이슈는 몇 년 전, 한 개발자가 만든 자바스크립트 11줄로 밖에 이루어지지 않은 패키지를 급작스레 비공개 하는 바람에 자바스크립트계를 발칵 뒤집어 놓은 사건이다.

이 페키지는 11줄로 구성된 만큼 그 기능도 간단했는데, 이는 숫자와 최대 길이를 지정하면 텍스트 문자열에 왼쪽 패딩을 추가하는 것뿐인 코드였다. 실제 코드는 다음과 같다.

modul.exports = leftpad;

function leftpad (str, len, ch) {
	str = String(str);
	var i = -1;
	if (!ch && ch !== 0) ch = ' ';
	len = len - str.length;
	while (++i < len) {
		str = ch + str;
	}
	return str;
}

자바스크립트를 완벽히 알진 못하지만 내가 보기에도 정말 간단한 코드인데, 겨우 이 11줄의 코드가 한 달에 무려 200만 번 이상이나 이용되고 있었다고 한다. 이는 즉, 수많은 프로젝트들이 이 패키지에 의존하고 있었다는 이야기이고, 해당 패키지가 비공개로 전환됨과 동시에 이를 의존하고 있던 많은 프로젝트들이 몽땅 오류를 뿜어내기 시작했다는 것이다.

이번 이슈를 통해 개발자들이 서로의 코드를 얼마나 많이 재사용하고 있으며, 모든 것이 얼마나 상호 연결되어 있고, 패키지들이 서로 얼마나 많이 의존하는지도 강조하는 케이스였다.

이 사태를 통해 여러 문제점들이 수면위로 떠오르기 시작했고 해커들 또한 이 사태를 통해 취약점을 파악하여 Supply Chain Attack (공급망 공격)이 시작되게 된다.

Supply Chain Attack

공급망 공격은 해커가 직접적으로 서버를 공격하는 간접적인 공격 방식으로, 소트프웨어를 실행, 서버의 구성 요소를 손상시켜 개발자의 컴퓨터와 자격 증명을 손상시킬 수 있다.

나는 아직 개인 프로젝트 등에서 아주 많은 양의 라이브러리를 사용해보지 않았기 때문에 위와 같이 비공개 전환으로 인한 문제를 겪었던 적은 없지만, 라이브러리를 사용하면서 버전 충돌 및 오류 등으로 문제를 겪었던 적은 있다.

수 많은 라이브러리와 프레임워크가 등장 함에 따라 확장성과 편의성이 늘어난 만큼 버전관리, 충돌 등 신경써야할 것들도 많아지게 되는 것은 어쩔 수 없는 것 같다.

0개의 댓글