Understanding npm Developers' Practices, Challenges, and Recommendations for Secure Package Development
본 연구는 75명의 npm 패키지 개발자를 대상으로 한 혼합 방법론 설문조사를 통해 이들의 보안 인식, 관행 및 과제를 조사하였으며, 보안이 우선순위임에도 불구하고 개발자들이 시간 제약 및 도구의 한계와 같은 상당한 장벽에 직면해 있음을 밝혀내어, 생태계의 신뢰성을 높이기 위한 개선된 탐지 도구, 문서화 및 교육에 대한 권고를 촉구한다.
원본 논문은 CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기
소프트웨어 개발의 세계를 **노드 시티(Node City)**라고 불리는 거대하고 북적이는 도시라고 상상해 보세요. 이 도시의 거의 모든 건물(앱 또는 웹사이트)은 처음부터 만드는 것이 아니라, 미리 만들어진 레고 브릭을 끼워 맞추는 방식으로 건설됩니다. 이 브릭들을 npm 패키지라고 부릅니다. 이 브릭들은 200만 개가 넘으며, 매달 수십억 번씩 다운로드됩니다.
이 브릭들을 만들고, 유지 관리하고, 나누어 주는 사람들은 바로 npm 개발자들입니다. 이들은 이 도시의 설계자이자 관리자입니다.
이 논문은 연구진들이 75명의 브릭 제작자들에게 다음과 같이 질문한 타운 홀 미팅과 같습니다. "당신의 브릭이 얼마나 안전하다고 생각하나요? 무엇이 당신을 밤잠 설치게 하나요? 그리고 도시를 안전하게 지키기 위해 어떤 도구를 사용하나요?"
그들이 발견한 내용을 알기 쉽게 설명해 드립니다:
1. "중요한 건 알지만..."이라는 역설
개발자들은 모두 동의했습니다: 보안은 매우 중요합니다. 그들은 보안을 깊이 신경 쓰고 있습니다. 하지만 자신의 브릭이 얼마나 안전한지 평가해 달라는 질문에, 대부분은 "C+" 또는 "B-" 점수를 주었습니다. 그들은 "내 브릭은 완벽하다"라고 말하지 않았습니다. 대신 "괜찮긴 하지만, 아주 훌륭하지는 않다"라고 말했습니다.
- 비유: 이는 음식 안전이 매우 중요하다는 것을 알면서도, "내 주방은 깨끗하지만, 국물에 아주 작은 먼지 한 점이 들어가지 않았다고 100% 확신할 수는 없다"라고 인정하는 요리사와 같습니다. 그들은 안전을 가치 있게 여기지만, 자신의 작업이 결점 없이 완벽하지는 않다는 것을 알고 있습니다.
2. 거대한 무서운 괴물들 (위협)
무엇이 그들을 가장 두렵게 하는지 물었을 때, 개발자들은 세 가지 주요 괴물을 지목했습니다:
- 공급망 공격 (Supply Chain Attacks): 도둑이 브릭이 보관된 창고에 몰래 잠입하여 안전한 빨간색 브식 대신 폭탄을 바꿔치기하는 상황을 상상해 보세요. 이것이 가장 큰 공포(1순위)입니다.
- 의존성 취약점 (Dependency Vulnerabilities): 당신의 브릭 자체는 안전할지 모르지만, 그 브릭이 금이 간 다른 브릭에 붙어 있을 수 있습니다. 만약 그 다른 브릭이 깨지면, 당신의 브릭도 함께 무너집니다.
- 악성 코드 (Malicious Code): 누군가 의도적으로 브릭 안에 함정을 설치하는 것입니다.
3. 도구: "스팸 메일함" 문제
개발자들은 이러한 괴물들을 체크하기 위한 도구(예: npm audit 또는 Dependabot)를 가지고 있습니다. 하지만 그들 중 단 **40%**만이 이 도구들에 만족하고 있습니다.
- 비유: 주방에 연기 감지기가 있다고 상상해 보세요. 작동은 잘 되지만, 토스트를 굽거나 창문을 열 때마다 벨이 울립니다. 시간이 지나면 여러분은 **경보 피로(alert fatigue)**를 느끼게 됩니다. "아, 그냥 토스터기 때문이구나"라고 생각하며 벨 소리를 무시하기 시작하는 것이죠.
- 개발자들은 도구들이 실제로는 위험하지 않은 일에 대해 너무 자주 "위험!"이라고 외친다고 말했습니다(오보). 이로 인해 그들은 지치게 되고, 진짜 불이 났을 때 제대로 반응하지 않을 가능성이 높아집니다.
4. 문제를 해결하는 방법
개발자가 자신의 브릭에서 금이 간 것을 발견하면, 보통 빠르게 대처합니다.
- 과정: 그들은 금이 얼마나 심한지 확인하고, 이를 고친 뒤 즉시 새로운 버전을 출시합니다.
- "버리기" 전략: 만약 그들이 사용하는 브릭이 방치되었거나(관리하는 사람이 없거나), 고쳐지지 않는 알려진 금이 있다면, 그들은 그 브릭을 사용하는 것을 중단합니다. 이는 마치 공급업체가 파산했다는 것을 깨닫고 즉시 새로운 공급업체로 바꾸는 것과 같습니다.
5. 장애물 (왜 어려운가?)
왜 모든 것을 완벽하게 만들지 못할까요? 가장 큰 걸림돌은 시간입니다.
- 비유: 집을 짓고 있는 동안 누군가 계속해서 새로운 설계도를 건네주며 벽을 칠하라고 하고, 지붕을 고치라고 말하는 상황을 상상해 보세요. 당신은 보안을 위해 모든 못 하나하나를 일일이 다시 확인할 충분한 시간을 가질 수 없습니다.
- 다른 장애물로는 도구가 혼란스럽다는 점, 경보가 너무 많은 "소음" 문제, 그리고 수천 개의 브릭 사이의 복잡한 연결 관계를 관리하는 데 따르는 막막함 등이 있습니다.
6. 희망 사항 (위시 리스트)
만약 시의회(npm)가 도시를 더 안전하게 만들기 위해 세 가지 소원을 들어줄 수 있다면, 개발자들은 다음과 같은 것들을 요청했습니다:
- 더 나은 탐지기: 토스트 때문에 비명을 지르는 대신, 진짜 불이 났을 때만 비명을 지르는 도구입니다. 그들은 단순히 더 많은 도구가 아니라, 더 똑똑한 도구를 원합니다.
- 더 명확한 지침: 안전하게 만드는 방법에 대한 더 나은 가이드와 문서화입니다.
- 더 많은 지원: 그들은 재정적 도움이나 인센티브를 원합니다. 보안에는 시간이 소요되며, 그들은 그 시간을 쓰는 것에 대해 보상받기를 원합니다.
그들이 특히 원하지 않는 것: 그들은 자신에게 묻지도 않고 브릭을 자동으로 수정하는 도구를 원하지 않습니다. 그들은 로봇이 구멍을 메우려다가 엉뚱한 곳을 메울 수도 있다는 점을 경계합니다. 그들은 문제가 무엇인지 알게 된 후 직접 직접 고치는 것을 선호합니다.
핵심 요약
npm 개발자들은 선의를 가지고 있으며 위험을 인지하고 있지만, 압도당한 상태입니다. 그들은 때때로 너무 자주 경고를 보내는 도구들을 가지고 거대하고 서로 연결된 도시를 안전하게 지키려 노력하고 있으며, 시간이 부족합니다. 소프트웨어 세상을 더 안전하게 만들기 위해서는, 그들에게 더 나은 도구, 더 조용한 도구, 그리고 명확한 지침, 그리고 일을 제대로 해낼 수 있는 약간의 시간을 주어야 합니다.
연구 분야의 논문에 파묻히고 계신가요?
연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.