---
title: "SBOM 1.0 (Sandwich Bill of Materials): 샌드위치로 풍자한 소프트웨어 공급망 보안 스펙 문서"
published: 2026-02-08T23:15:54.000Z
canonical: https://jeff.news/article/570
---
# SBOM 1.0 (Sandwich Bill of Materials): 샌드위치로 풍자한 소프트웨어 공급망 보안 스펙 문서

소프트웨어 SBOM, 의존성 관리, 공급망 보안의 모든 고통을 샌드위치에 그대로 대입한 풍자 스펙 문서. MIT는 'Mustard Is Transferable', GPL은 'General Pickle License'이고, 마요네즈 CVE는 패치 불가, 아보카도 숙성 시간은 17분이며, 닭이냐 달걀이냐 출처 문제는 v2.0으로 연기됨.

개발자라면 SBOM(Software Bill of Materials), 의존성 지옥, 공급망 보안 같은 키워드에 한 번쯤 한숨을 쉬어본 적이 있을 것임. 누군가가 이 고통을 **샌드위치**에 그대로 대입한 풍자 스펙 문서를 작성했는데, 디테일이 너무 정확해서 웃기다 못해 무서운 수준임.

## 라이선스 체계: MIT는 "Mustard Is Transferable"

- **MIT (Mustard Is Transferable)**: 어떤 샌드위치에든 제한 없이 사용 가능. 출처 표기는 고마운 일이지만 필수는 아님
- **GPL (General Pickle License)**: GPL 라이선스 재료를 하나라도 넣으면 **샌드위치 전체가 오픈소스**가 됨. 누구든 물어보면 전체 레시피를 공개해야 함. 피클 업체들이 이 부분에서 특히 공격적이라고 함
- **AGPL (Affero General Pickle License)**: GPL과 동일하되, 배달앱으로 서빙하면 레시피도 공개해야 함. 대부분의 음식점이 AGPL 피클을 기피하는 이유
- **BSD (Bread, Sauce, Distributed)**: 원래 제빵사 이름을 빵 봉투에 남기고, 두 번째 사본도 남기고, 제빵사 이름으로 샌드위치 홍보는 하지 말아야 함. **변종이 4개인데 아무도 어떤 게 어떤 건지 기억 못 함**
- **SSPL (Server Side Pickle License)**: 이 피클을 쓸 수는 있지만, 샌드위치 제작을 서비스로 제공할 경우 **주방 전체를 오픈소스**해야 함. 배달 메뉴판 잔뜩 쌓인 이상한 서랍까지 포함. 대부분의 클라우드 샌드위치 업체가 SSPL 피클 취급을 중단함

> 현실의 MongoDB SSPL 논란이 피클로 환생한 순간임. "주방 전체 오픈소스"라는 표현이 너무 정확함.

## 의존성 트리: BLT의 진실

겉으로는 세 글자(Bacon, Lettuce, Tomato)지만, 공급망은 **방향성 비순환 그래프(DAG)**의 지옥임:

- bacon → pork → pig → feed corn, water, antibiotics, farmer (밭이 아직 침수 안 된)
- 돼지가 옥수수를 먹고, 옥수수는 돼지가 비료를 준 밭에서 자라는 **순환 참조** 문제 발생
- 순환 의존성은 "허용하되 권장하지 않음"으로 처리됨. 맥주로 만든 빵의 곡물이 같은 밭 출신이면 리졸버가 "co-dependent sourdough" 경고를 발생시킴

## 2025 달걀 대란 = "아침 식사판 left-pad 사건"

- 조류독감 하나가 **달걀 생태계 전체를 수개월간 다운**시킴
- 사후 분석 결과, 피해 샌드위치의 **94%가 lockfile 없이** 조립 시점에 `eggs@latest`를 resolve하고 있었음
- 버전 고정 없이 `latest`를 쓰면 어떻게 되는지를 식품 업계가 몸소 증명함

## 포맷 선정: YAML은 탈락

> YAML이 검토되었으나, **"샌드위치 업계에 이미 충분한 문제가 있는데 거기에 공백 민감성까지 추가할 수는 없다"**는 이유로 거부됨.

JSON이 채택됨. 확장자는 `.sbom`. 프론트엔드 개발자들의 공감 포인트.

## CVE (Common Vulnerabilities and Exposures)

- **CVE-2024-MAYO**: 마요네즈가 상온에 4시간 이상 방치됨. 심각도: **Critical**. 영향 버전: 전체. **패치 없음**. 완화 조치로 냉장 보관이 필요하지만 스펙이 이를 강제할 수 없음
- **CVE-2025-AVO**: 아보카도 숙성 시간은 **약 17분**. 버전 고정 무효. 워킹 그룹은 아보카도를 vendoring(즉, 이미 으깬 상태로 구매)할 것을 권장함. ripeness drift 방지 목적
- **CVE-2023-GLUTEN**: 빵에 글루텐이 포함됨. 이것은 **버그가 아니라 밀의 기능**임. 다만 소비자의 1%가 영향을 받고, **나머지 99%가 어차피 물어볼 것**이므로 공개 필수
- **CVE-2019-SPROUT**: 알팔파 싹이 **샌드박스 없는 환경에서 임의의 박테리아를 실행**하고 있었음. 심각도: High. 벤더 측은 이 분류에 이의를 제기 중

## 재현 가능한 빌드(Reproducible Builds)

동일한 입력이 주어지면 두 독립적 조립자가 **한 입 단위로 동일한 샌드위치**를 만들어야 함. 실질적으로 불가능함. 스펙은 이를 `sandwich.lock` 파일에 비결정성 소스를 문서화하는 것으로 해결함:

- 조립 시 실내 온도
- **칼 날카로움** (토마토 슬라이스 두께 → 구조적 무결성에 영향)
- 양념 양을 **"대충 눈대중"**으로 넣었는지 여부
- 조립 장소의 **중력 상수**

> "close enough" 수준의 준수가 비안전 필수 샌드위치에 한해 허용됨. 안전 필수 샌드위치는 완전 재현성을 목표로 해야 함.

## 출처 증명(Provenance)과 닭이 먼저냐 달걀이 먼저냐

- 모든 재료에 **서명된 출처 증명서**가 필요함. 밀폐된 빌드 환경에서 생성되어야 하며, 다른 음식이 동시에 준비되는 환경에서 생성하면 **출처 주장의 교차 오염** 위험이 있음
- 토마토의 출처 체인: 씨앗 → 토양 → 물 → 햇빛 → 농부 → 트럭 → 유통업체 → **슈퍼마켓이 공개하고 싶지 않은 기간 동안 놓여있던 선반**
- 달걀의 출처 증명서는 **유효한 증명 체인이 없을 수 있는 닭**이 생성함
- 닭이냐 달걀이냐 출처 순서 문제는 **v2.0으로 연기됨**

## 샌드위치 유산 재단(Sandwich Heritage Foundation)

Software Heritage Foundation이 모든 공개 소스코드를 보존하듯, 샌드위치 유산 재단도 같은 미션을 채택했으나 **성공률이 현저히 낮음**:

- 현재 아카이브에 보관된 샌드위치는 **14개**. 대부분의 기여자가 해싱 전에 먹어버려서 그런 것으로 추정됨
- 3월에 제출된 BLT가 거부됨 — **운송 중 토마토의 체크섬이 변경**되었기 때문. 재단은 결로 현상을 의심 중
- 장기 보존은 미해결 과제임. 소프트웨어는 디스크에 무기한 보관 가능하지만, 샌드위치는 **스펙이 설계되지 않은 물질적 제약**을 도입함
- 동결건조, 진공포장, **"그냥 아주 상세한 사진 촬영"**이 검토되었으나, 어느 것도 아카이브에서 bit-for-bit 재현 가능한 샌드위치를 생성하지 못함
- EU Horizon 프로그램에 보조금을 신청했으나 **"샌드위치는 디지털이 아니다"**라는 이유로 거부됨. 재단은 SBOM 1.0 하의 모든 샌드위치가 해시를 가진 디지털 아티팩트라며 이의를 제기 중

## 규제 동향

- **EU Sandwich Resilience Act (SRA)**: 2027년 Q3까지 EU 내 유통되는 모든 샌드위치에 기계 판독 가능한 SBOM 포함 의무화. SBOM 없는 샌드위치는 **국경에서 입국 거부**됨. "조미료 공급망의 전략적 자율성"에 관한 실무 문서가 2027년 Q2에 나올 예정
- **미국 행정명령 14028.5**: 연방 건물에서 제공되는 모든 샌드위치에 SBOM 포함 의무. 다만 Sandwich인지 Software인지 **명시하지 않음**. 일부 연방 기관이 양쪽 다 제출하기 시작함

## 감사의 말

> 이 스펙은 SoMA의 Folsom Street에 있던 작은 샌드위치 가게에 헌정됨. 저자가 먹어본 최고의 BLT를 만들었으나, 2019년에 **SBOM이나 기계 판독 가능한 레시피를 남기지 않고** 폐업함.

> 이 스펙은 식용성, 특정 식사에 대한 적합성, 비오염성을 포함하되 이에 국한되지 않는 어떠한 종류의 보증도 없이 **"있는 그대로(AS IS)"** 제공됨.

---

SBOM/의존성 관리를 경험해본 개발자라면 한 줄 한 줄이 현실 고증인 걸 느낄 수 있을 것임. 특히 "패치 없음"인 마요네즈 CVE와 17분짜리 아보카도 숙성 시간은 소프트웨어 세계의 "won't fix"와 정확히 같은 무력감을 줌. 풍자이지만, EU CRA(Cyber Resilience Act)와 SBOM 의무화가 실제로 진행 중인 지금 읽으면 웃음과 한숨이 동시에 나오는 글임.

## 핵심 포인트

- 라이선스 체계를 샌드위치 재료로 완벽 패러디 — MIT(Mustard Is Transferable), GPL(General Pickle License), SSPL은 주방 전체 오픈소스 의무
- BLT 의존성 트리: bacon → pork → pig → feed corn, water, antibiotics, farmer로 이어지는 공급망 복잡성 풍자
- 2025 달걀 대란을 'left-pad 사건'에 비유 — 피해 샌드위치 94%가 lockfile 없이 latest를 resolve하고 있었음
- CVE-2024-MAYO(마요네즈 상온 방치)는 패치 불가, CVE-2025-AVO(아보카도 숙성)는 버전 고정 무효
- 재현 가능한 빌드에 칼 날카로움, 중력 상수까지 문서화 필요 — 실질적으로 불가능하므로 'close enough' 허용
- EU Sandwich Resilience Act로 2027 Q3까지 SBOM 의무화, 미국은 Sandwich인지 Software인지 명시 안 해서 양쪽 다 제출하는 기관 등장

## 인사이트

EU CRA와 SBOM 의무화가 현실에서 진행 중인 시점에, 소프트웨어 공급망 보안의 복잡성과 비현실적 요구사항을 샌드위치로 치환해 보여주는 탁월한 풍자. 의존성 관리의 고통을 겪어본 개발자라면 모든 줄이 현실 고증임을 체감할 수 있음.
