curl과 libcurl처럼 에코시스템 밖에 있는 C 라이브러리는 SBOM과 의존성 추적 도구에서 누락되기 쉬우며, 그 결과 실제 의존 관계를 파악하기가 어렵다는 점을 설명한다.
기본 메뉴
검색어:

March 10, 2026Daniel Stenberg댓글 4개
curl과 libcurl은 C로 작성되었다. 많은 소프트웨어 시스템에 존재하는, 비교적 저수준의 컴포넌트들이다.
이들은 대개 어떤 에코시스템 에도 속하지 않는다. 그냥 도구이자 라이브러리일 뿐이다.
웹의 많은 곳에서 오픈 소스 프로젝트를 언급하면, 그 프로젝트가 어떤 에코시스템에 속하는지도 함께 적을 수 있는 옵션이 제공된다. npm, go, rust, python 등. 널리 알려지고 큰 에코시스템만 해도 최소한 열두 개쯤은 쉽게 떠올릴 수 있다. curl은 그 어느 것에도 속하지 않는다.
최근에는 PURL(Package URLs)을 밀어붙이는 흐름이 있다. 예를 들어 CVE에서 특정 패키지를 설명할 때 말이다. 패키지 URL은 해당 컴포넌트가 에코시스템의 일부일 때만 동작한다. curl은 그렇지 않다. 우리는 PURL로 curl이나 libcurl을 지정할 수 없다.
SBOM 생성기와 관련 스캐너는 패키지 관리자를 사용해 사용된 컴포넌트 목록 및 그 의존성 을 생성한다. 이 때문에 이런 도구들은 꽤 자주 libcurl을 그냥 놓치고 무시한다. 패키지 관리자에 목록으로 잡히지 않기 때문이다. 그저 그 안에 들어 있어서, 쓸 준비가 되어 있다. 마치 마법처럼.
비슷하게, 이런 도구들이 curl이 또 다른 라이브러리들에 의존하며 그것들을 사용한다는 사실을 알아내는 것도 어렵다. 빌드 시점에 무엇을 사용할지 선택하게 되지만, curl 프로젝트는 기본적으로 소스 코드 타르볼만 배포하기 때문에 누군가에게 “당신의 빌드가 어떤 의존성을 갖는지”를 알려줄 수가 없다. libcurl이 자체적으로 사용하는 추가 라이브러리들 역시 표준 에코시스템 밖에 있는 경우가 대부분이다.
이런 현상의 이유 중 하나는 libcurl과 curl이 많은 경우 운영체제와 함께 번들로 제공되거나, 때로는 OS의 일부라고 인식 되기도 하기 때문이다.
따라서 대부분의 그래프, SBOM 도구, 의존성 추적기는 curl 또는 libcurl을 사용하는 바인딩이나 시스템에서 멈춘다. 하지만 curl이나 libcurl을 포함하지는 않는다. 말하자면 바로 위 레이어까지만 보는 셈이다. 이 때문에 정확히 얼마나 많은 컴포넌트와 얼마나 많은 소프트웨어가 libcurl에 의존하는지 알아내기가 어렵다.
문제를 완벽하게 보여주는 방법은 GitHub에 가서, 수백만 개에 달하는 방대한 저장소 컬렉션 중 얼마나 많은 저장소가 curl에 의존하는지 확인해 보는 것이다. 결국 curl은 약 300억 설치에 들어 있으니, 분명 엄청 많이 사용되고 있다. (물론 그 대부분은 libcurl이다.)
curl에 대해 하나 의 의존성만 나열하고 있다.

curl/curl에 의존하는 저장소: 1개. 스크린샷은 2026년 3월 9일에 촬영됨
더 재미있는 점은, 이 단 하나의 의존 저장소(Pupibent/spire)가 실수로 curl을 의존성으로 적어둔 것처럼 보인다는 사실이다.
이전 글 연간 1만 건의 curl 다운로드다음 글 curl 8.19.0
🙂 답글
2. Johannes Müller말함: March 10, 2026 at 14:33 무작위 저장소의
go.mod 파일에 랜덤하고 부정확한 의존성이 들어가는 일이 있는 것 같다.
예를 들어 이 저장소에는 이 괴물 같은 파일이 유일한 파일이다: https://github.com/flushedface/look-at-my-profile/blob/master/go.mod 답글
3. Oleg말함: March 11, 2026 at 00:57 guix graph curl
최소 바이너리 시드까지의 전체 의존성 그래프를 제공한다
https://guix.gnu.org/en/blog/2023/the-full-source-bootstrap-building-from-source-all-the-way-down/ 답글
4. Dmitry말함: March 11, 2026 at 12:51 Nixpkgs는 그 이유로 놀랍다. 의미론 덕분에 모든 입력을 추적할 수 있고, 빌드 의존성과 프로덕션 의존성을 구분할 수 있다. 답글
이메일 주소는 공개되지 않는다. 필수 항목에는 * 표시가 되어 있다.
댓글 *
이름 *
이메일 *
웹사이트
시간 제한이 만료되었다. CAPTCHA를 다시 로드해 달라. one 5 7 4 six
Δ
이 사이트는 스팸을 줄이기 위해 Akismet을 사용한다. 댓글 데이터가 어떻게 처리되는지 알아보기.
후원하기:GitHub에서
팔로우하기: @bagder
구독하기: RSS-feed
이메일: 주간 보고서
March 2026| M | T | W | T | F | S | S | | --- | --- | --- | --- | --- | --- | --- | | | 1 | | 2 | 3 | 4 | 5 | 6 | 7 | 8 | | 9 | 10 | 11 | 12 | 13 | 14 | 15 | | 16 | 17 | 18 | 19 | 20 | 21 | 22 | | 23 | 24 | 25 | 26 | 27 | 28 | 29 | | 30 | 31 | | « Feb