LabHub
배우기 러닝패스 코스

빌드는 초록불이었는데 그 라이브러리는 누가 넣었나 · 빨간 줄 여섯 개 중 오늘 고칠 수 있는 것 · 실습

경계값을 맞추고 오늘 고칠 것만 남긴다

LabHub 에서 이어서 보기

목표

SBOM 을 취약점 자료와 대조해 실제로 영향받는 것만 골라 내고, '고칠 판이 있는가' 와
'사용자에게 닿는가' 라는 두 축으로 갈라 정책 관문을 프로그램으로 적습니다.

왜 중요한가

스캐너를 처음 돌리면 빨간 줄이 수백 개 나옵니다. 그 목록을 그대로 개발팀에 보내면
아무 일도 일어나지 않습니다 — 다 고칠 수 없다는 것을 모두가 알기 때문입니다.
줄어드는 자리는 두 곳입니다. 첫째, 구간 판정이 정확해야 합니다. 고쳐진 버전을
쓰고 있는데도 걸리는 오탐이 섞이면 목록 전체의 신뢰가 무너집니다. 둘째,
고칠 판이 있는 것과 없는 것은 다른 일입니다. 고칠 판이 있으면 오늘 올리면 되고,
없으면 완화책과 기한을 적어 면제로 관리해야 합니다. 이 둘을 섞어 두면 회의는
"심각도가 높다 / 낮다" 로만 돌고 아무것도 바뀌지 않습니다.

단계

1. /opt/fixtures/sbom/feeds/advisories.json 를 읽어 /root/adv/01-feed.json 에 자료의 모양을 적습니다.
2. /opt/fixtures/sbom/sbom/paygate-1.4.2.cdx.json 의 components 를 평평하게 펴 /root/adv/02-components.json 에 씁니다.
3. /root/adv/semver_cmp.py 에 버전 비교기를 만듭니다.
4. 경계값까지 맞춰 영향받는 것만 /root/adv/04-findings.json 에 씁니다.
5. 고칠 판이 있는 것만 /root/adv/05-upgrade-plan.json 으로 옮깁니다.
6. 사용자에게 닿는 것과 빌드에서 끝나는 것을 /root/adv/06-shipped.json 에 가릅니다.
7. /root/adv/gate-vuln.py 로 정책을 적고 결과를 /root/adv/07-verdict.json 에 남깁니다.
8. /root/adv/waivers.json 의 면제를 적용해 /root/adv/08-verdict.json 으로 다시 판정합니다.

참고

단계 8개

  1. 자료가 무엇을 말하는지부터 읽는다
  2. 무엇을 대조할 것인지 목록으로 세운다
  3. 버전을 문자열로 비교하면 안 되는 이유를 코드로 못박는다
  4. 경계값까지 정확히 맞춘다
  5. 오늘 고칠 수 있는 것만 계획으로 옮긴다
  6. 사용자에게 닿는 것과 빌드에서 끝나는 것을 가른다
  7. 정책을 사람 말이 아니라 프로그램으로 적는다
  8. 면제는 고칠 수 없는 것에만 준다