본문으로 건너뛰기
피드

SBOM 1.0 (Sandwich Bill of Materials): 샌드위치로 풍자한 소프트웨어 공급망 보안 스펙 문서

open-source 약 10분
vote
0
댓글
북마크

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

  • 1

    라이선스 체계를 샌드위치 재료로 완벽 패러디 — MIT(Mustard Is Transferable), GPL(General Pickle License), SSPL은 주방 전체 오픈소스 의무

  • 2

    BLT 의존성 트리: bacon → pork → pig → feed corn, water, antibiotics, farmer로 이어지는 공급망 복잡성 풍자

  • 3

    2025 달걀 대란을 'left-pad 사건'에 비유 — 피해 샌드위치 94%가 lockfile 없이 latest를 resolve하고 있었음

  • 4

    CVE-2024-MAYO(마요네즈 상온 방치)는 패치 불가, CVE-2025-AVO(아보카도 숙성)는 버전 고정 무효

  • 5

    재현 가능한 빌드에 칼 날카로움, 중력 상수까지 문서화 필요 — 실질적으로 불가능하므로 'close enough' 허용

  • 6

    EU Sandwich Resilience Act로 2027 Q3까지 SBOM 의무화, 미국은 Sandwich인지 Software인지 명시 안 해서 양쪽 다 제출하는 기관 등장

개발자라면 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 의무화가 실제로 진행 중인 지금 읽으면 웃음과 한숨이 동시에 나오는 글임.

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

댓글

댓글

댓글을 불러오는 중...

open-source

위키피디아에도 빅테크식 반노조 플레이북이 들어왔다

위키미디어 재단이 5월 열흘 사이 MediaWiki 장기 핵심 개발자를 해고하고, 자원봉사 편집자 요청을 처리하던 Community Tech 팀을 해산했다는 비판 글이다. 해고된 인력 상당수가 노조 조직 활동과 연결돼 있었고, 위키피디아 편집자들은 연대 파업까지 거론하고 있다. 재단은 2억9660만 달러의 준비금과 빠르게 성장하는 AI 대상 API 매출을 갖고 있어, 이 사안이 단순 비용 절감으로 보기 어렵다는 게 글의 핵심이다.

open-source

캘리포니아, 연령 확인법에서 리눅스 빼려는 수정안 추진

캘리포니아가 운영체제에 사용자 나이 확인을 요구하는 법안에서 대부분의 오픈소스 운영체제를 제외하는 수정안을 추진 중이다. 데비안, 페도라, 우분투, 아치, 리눅스 민트 같은 배포판은 빠질 가능성이 커졌지만, 스팀OS처럼 독점 앱 생태계와 연결된 플랫폼은 여전히 애매한 상태다.

open-source

마이크로소프트, 45년 전 86-DOS 소스코드를 오픈소스로 공개

마이크로소프트가 86-DOS 1.00 출시 45주년에 맞춰 지금까지 발견된 것 중 가장 오래된 DOS 소스코드를 공개했어. 팀 패터슨의 차고에 있던 도트 매트릭스 출력물을 스캔하고 옮겨 적어, 원본 바이너리와 바이트 단위로 동일하게 다시 컴파일되는 수준까지 복원한 게 포인트야.

open-source

밤부 랩, AGPLv3 위반 논란으로 오픈소스 커뮤니티와 충돌

3D 프린터 제조사 밤부 랩이 AGPLv3 라이선스 위반 논란에 휘말렸고, Software Freedom Conservancy가 두 건의 위반 사례를 확인했다는 내용이야. Louis Rossmann과 Gamers Nexus는 관련 개발자의 법적 방어를 위해 2만달러를 기부했고, 갈등의 핵심은 오픈소스 기반 생태계를 클라우드와 DRM으로 점점 닫아가려는 움직임이야.

open-source

플리퍼, 리눅스 기반 확장형 기기 '플리퍼 원' 공개

플리퍼가 기존 플리퍼 제로를 대체하는 후속작이 아니라, 리눅스 기반 네트워킹·확장형 기기인 플리퍼 원을 공개했어. RK3576 8코어 ARM 칩, 와이파이 6E, 듀얼 이더넷, NVMe, HDMI 4K 120Hz까지 넣으면서 장난감 같은 해킹 도구에서 훨씬 범용적인 리눅스 장비 쪽으로 방향을 넓히는 그림이야.