Web/Library

[라이브러리] faker.js color.js 라이브러리는 어디갔을까?

레에몽 2022. 2. 24. 00:26

Marak Squires라는 개발자가 직접 만든 faker.js, color.js를 고의로 손상시키는 사태가 발생했습니다.

 

faker.js의 경우는 파일 자체를 모두 날려버리는 업데이트를 하면서 기존 코드가 무용지물이 되게 했지만, color.js에는 인피니티 루프를 넣는 패치인 1.4.0버전에서 1.4.1 버전으로 업데이트하면서 많은 개발자를 괴롭혔습니다.

 

더구나, 두 라이브러리 모두 다운로드 수가 상당했던 라이브러리였기 때문에 많은 개발자들이 해당 사태를 겪었어야 합니다.

 

color.js

 

faker.js

 

 

 

어쩌다가 이런 사태가 벌어지게 되었을까요? 경위를 간단하게 알아봅시다.

 

해당 사건은 marak이 사제폭탄을 만들다가 걸려서 아파트에 불이나고, 모든 재산을 압수 당한 시점부터 시작이 됩니다.

 

현재는 삭제되었지만, "Pay me or Fork this"를 통해서, 자신의 힘듦뿐만 아니라 오픈소스 라이브러리 관리자들에 대한 처우가 그렇게 좋지 않다는 것을 알리고 있습니다.

 

npm에서는 faker.js를 이전 버전 패키지로 되돌아가게 했으며, Gtihub은 모든 공개 및 비공개 프로젝트에 대한 액세스를 중단했다고 합니다.

 

그리고 해당 트위터 다음 날 성지로 불리는 커밋이 생겨났습니다.

https://github.com/Marak/colors.js/commit/074a0f8ed0c31c35d13d28632bd8a049ff136fb6

 

Adds new American flag module · Marak/colors.js@074a0f8

Permalink This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository. Browse files Adds new American flag module Loading branch information Showing 2 changed files with 41 additions and 0 deletions. +31

github.com

 

해당 커밋내역 아래를 내리다보면

와 같은 내용도 볼 수 있습니다.

 

자신의 오픈소스를 공짜로 쓰는데, 보상이 제대로 되지 않자 경각심을 주기 위해 한 행동이라고 하지만 모두에게 공감을 받기는 어려웠습니다. 

 

 해당 라이브러리를 쓰고 있었다면 어떻게 해야 할까요? 해당 사건은 우리 개발자에게 있어서 버전의 중요성을 알려주는 사건입니다. 최신 버전만 쓰는 것이 아니라, 안전한 버전을 선호하는 이유도 해당 사건을 통해서 깨달을 수 있습니다.

 

 버전이 업그레이드되었을 때 점진적인 방식으로 마이그레이션을 해야 함을 알 수 있습니다. 그런 방식을 통해서 테스트를 활용하고, 다른 시스템에 영향이 있는지 없는지 알아내야 합니다. 위와 같은 경우는 다른 코드가 아니라, 무한 루프를 넣어 두거나 파일 자체를 터뜨리는 방식을 사용했습니다. 그러나, 이런식으로 눈에띄는 코드가 아니라, 겉으로 보기에 멀쩡한 악성 코드가 들어가있었다면 어떻게 되었을까요? 그 코드가 실제로 배포까지 되버린다면요?

 수많은 개발자들이 시말서를 쓰고 있는 모습이 상상할 수 있지 않을까요? 예상치 못한 문제를 발견해야 한다는 것은 정말 어려운 사실입니다. 그렇지만 개발자라면, 오픈 소스를 가져다 써야 하는 상황이 생긴다면 많은 테스트가 필요할 수도 있습니다. 사람들이 많이쓰고 선호하는 라이브러리일지라도 저런 버전업이 있는데, 신생 라이브러리들은 어떻게 가져와야 할까요? 오픈소스라고 막 가져오면 안된다는 생각을 이제 할 수 있습니다.

 

 사람들이 라이브러리를 고를 때에는 각자의 기준을 두고 있습니다.

 커스터마이징 하기 편한 라이브러리인가? npm 다운로드 수가 많으니까  좋다고 판단하는 것인가? 이슈와 피알 관리가 잘 되어있는가? 너무 무거운 라이브러리가 아닌가? 등이 있을텐데 위의 사건을 보았을 때에는 해당 기준도 무의미할 수 있다는 생각이 듭니다.

 

우리가 원하는 것은 안정적인 배포와 운영을 하는 것이고, 그것을 해내려면은 정말로 꼼꼼해야겠다는 생각이 듭니다.