Unsafe and Unused? A History of Utility Code in Mature Open Source Projects
일곱 개의 성숙한 오픈소스 프로젝트를 대상으로 한 종단적 마이닝 연구를 통해 본 논문은"util"로 명명된 파일이 취약점에 관여할 가능성이 현저히 높으며 종종 사용되지 않은 채 방치되는 경향이 있음을 밝혀냈고, 이는 개발자들이 시간이 지남에 따라 이러한 유틸리티 코드의 안전성과 유지보수 문제를 재고할 필요성을 강조한다.
원본 논문은 CC0 1.0 (http://creativecommons.org/publicdomain/zero/1.0/)에 따라 공공 도메인에 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기
거대한 번화한 도시를 상상해 보세요. 수천 명의 건축가와 건설업자들이 거대한 공유 마천루를 끊임없이 건설하고 리모델링하고 있습니다. 이 마천루는 오픈소스 소프트웨어 프로젝트입니다. 이 도시에는 특별한 규칙이 하나 있습니다: 건설업자가 모두에게 유용할 수 있는 도구나 함수를 만들면—예를 들어 범용 렌치나 마스터 키처럼—그것을 "Util(유틸리티의 약자)이라고 불리는 특정하고 명확하게 표시된 방에 넣도록 권장됩니다.
이 아이디어는 훌륭합니다. 각 건설업자가 자신의 렌치를 만드는 대신, 모두 "Util" 방에서 하나를 가져와 사용하면 됩니다. 이는 시간을 절약하고 질서를 유지합니다.
하지만 로체스터 공과대학교의 연구팀이 단순한 질문을 던졌습니다: 이러한 "Util" 방들은 시간이 지남에 따라 실제로 어떻게 변할까요? 안전하고 유용하게 유지될까요, 아니면 위험하고 지저분하며 방치될까요?
이를 규명하기 위해 그들은 147 년에 달하는 합계 개발 기간 동안 일곱 개의 유명한 "마천루"(리눅스 커널, 장고, 아파치 토마캣과 같은 소프트웨어 프로젝트) 를 연구했습니다. 그들은 모든 파일의 역사, 모든 이름 변경, 모든 보안 수정 사항을 살펴보았습니다. 그들이 발견한 바를 간단히 설명하면 다음과 같습니다:
1. "Util" 방은 어디에나 있지만 (항상 사용되지는 않음)
연구자들은 "Util" 방이 매우 흔하다는 사실을 발견했습니다. 어떤 프로젝트에서는 건물의 모든 방 중 거의 **20%**가 "Util"로 표시되어 있습니다.
- 좋은 소식: 이러한 방은 활발히 사용됩니다. 어떤 프로젝트에서는 "Util" 방 안의 도구들이 일반 방의 도구들보다 7 배 더 자주 꺼내져 사용됩니다.
- 문제점: 방이 "Util"로 표시되었다고 해서 항상 효율적으로 사용되는 것은 아닙니다. 때로는 건설업자가 실제로 유용하지 않거나 완전히 방치될 경우 나중에 이름을 변경하거나 완전히 버리기 위해 새로운 "Util" 방을 만들기도 합니다.
2. "Util" 방은 더 지저분합니다 (더 복잡함)
일반 방이 단순한 옷장이라면, "Util" 방은 종종 얽힌 전선과 복잡한 기계로 가득 찬 혼란스러운 작업실입니다.
- 이 연구는 7 개 프로젝트 중 6 개에서 "Util" 파일이 일반 파일보다 훨씬 복잡하다는 사실을 발견했습니다.
- 왜 그럴까요? 모두가 자신의 "공통" 도구를 그곳에 던져 넣기 때문입니다. 시간이 지남에 따라 이러한 파일은 너무 많은 기능으로 비대해져 이해하기 어렵고 안전을 유지하기 어려워집니다.
3. "Util" 방은 팀의 노력입니다 (하지만 혼란스러운)
파일이 "Util"이라면 모두가 그것을 사용하는 방법을 알고 있을 것이라고 생각할 수 있습니다. 연구팀은 누가 이러한 파일들을 작업했는지 살펴보았습니다.
- 그들은 종종 "Util" 방에서 도구를 만든 사람과 그것을 사용하는 사람이 동일하지 않다는 사실을 발견했습니다.
- 실제로 최신 데이터에 따르면, 이러한 파일들과 작업하는 사람들의 57% 이상이 오직 만들거나 오직 사용하는 역할만 했지, 둘 다 수행하는 경우는 드뭅니다. 이는 기계를 만드는 사람들이 실제로 기계를 조작하지 않고, 기계를 조작하는 사람들이 기계를 수리하지 않는 공장과 같습니다. 이러한 단절은 혼란을 초래할 수 있습니다.
4. "Util" 방은 위험 구역입니다 (보안 위험)
이것이 가장 중요한 발견입니다. 연구자들은 "취약점"(보안 구멍) 을 건물의 기초에 생긴 균열처럼 취급했습니다.
- 큰 급증: 프로젝트 초기, 파일이 매우 적을 때, "Util" 파일은 일반 파일보다 보안 구멍이 있을 확률이 최대 10 배 더 높습니다.
- 장기적: 프로젝트가 성숙해짐에 따라 "Util" 파일은 여전히 더 위험합니다. 연구에 따르면 "Util" 파일은 비 "Util" 파일보다 보안 수정과 관련된 확률이 2.75 배 더 높습니다.
- "상습범" 문제: "Util" 파일에서 보안 구멍이 수정되면, 그 구멍이 다시 발생할 가능성이 매우 높습니다. 파이프의 누수를 수리했는데 몇 달 후 같은 파이프가 다시 터지는 것과 같습니다. 이는 파일이 너무 복잡하여 제대로 수정하기 어렵기 때문에 팀이 실수에서 배우지 못하고 있음을 시사합니다.
5. 리눅스 커널은 예외입니다
연구자들은 리눅스 커널(매우 안정적이고 거대한 프로젝트) 이 다른 것들과 다르게 행동한다는 사실을 알아차렸습니다.
- 그것은 일반적인 추세를 따르지 않았습니다. 그 "Util" 파일들이 반드시 더 위험한 것은 아니었고, 이름이 자주 변경되지도 않았습니다.
- 연구자들은 이것이 리눅스 커널이 너무 오래되고 안정적이어서 그들이 연구한 데이터가 시작되기 전에 이미 "Util" 습관을 정립했기 때문이라고 의심합니다. 이는 원래 설계도가 오래전에 사라졌지만 구조는 견고한, 여러 번 리모델링된 오래된 건물과 같습니다.
결론
이 논문은 "Util" 방이라는 아이디어는 좋은 것 (바퀴를 다시 발명하지 않도록 하기 위해) 이지만, 실제로는 이러한 방들이 종종 위험하고 유지 관리가 제대로 되지 않는다고 결론지었습니다.
- 너무 복잡해집니다.
- 보안 구멍이 너무 많아집니다.
- 이를 만드는 사람들과 사용하는 사람들이 서로 대화하지 않는 경우가 많습니다.
건설업자를 위한 조언:
단순히 파일에 "Util" 라벨을 붙이고 최선의 결과를 기대하지 마십시오. 만약 당신이 프로젝트 관리자라면 다음을 수행해야 합니다:
- 팀에게 "Util"이 실제로 무엇을 의미하는지 문서화하십시오.
- 이러한 파일들이 너무 복잡해지지 않도록 주의하십시오.
- 이러한 파일들에 대한 보안 점검을 특별히 신중하게 수행하십시오. 역사상 이러한 파일들이 가장 자주 고장 나는 것으로 나타났기 때문입니다.
요약하자면: 파일에 "Util"이라고 이름을 붙인다고 해서 그것이 마법 같은 해결책이 되는 것은 아닙니다. 때로는 그것이 단지 고위험 표적이 될 뿐입니다.
연구 분야의 논문에 파묻히고 계신가요?
연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.