2026년 6월
SBOM 업로드 — 비정상 파일/거대 SBOM/심층 중첩 방어 5단 강화
/v1/sbom/scan 업로드 경로에 동심원 방어선 추가. (1) 읽기 전에 Content-Length 사전 차단(20MB), (2) 실제 read도 동일 캡으로 제한해 거짓말한 본문 차단, (3) 파일명 sanitize — basename만 추출, ../, NUL, 제어바이트 제거, 255자 cap, (4) 파서 단계에서 RecursionError / MemoryError 까지 400/413으로 회수 (deeply-nested / billion-laughs 같은 적대적 입력 차단), (5) purl/version 1024자 초과·제어바이트 포함 항목 드롭 + 호출당 컴포넌트 cap (익명 5,000개, 인증 20,000개). 응답에 components_truncated 필드 추가 — 드롭되거나 cap에 걸린 항목 수를 알려줘서 클라이언트가 "SBOM 쪼개서 다시 보내야 하나" 판단 가능. 추가로 _safe_filename + _filter_safe_purls 단위 테스트 14개.
SBOM 스캔 — IP당 3회 무료 시도 + 소진 시 친절한 401 (signup 안내 포함)
/v1/sbom/scan을 호출하려면 회원가입이 필수였는데, 첫 호출에서 "missing bearer token" 401만 봐서 왜 거절됐는지 파악이 어려웠습니다. 이제 익명 호출도 IP당 평생 3회까지 실제 응답을 받아볼 수 있고(체크패키지는 50회), 응답에 trial { used, limit, remaining } 블록이 함께 옵니다. 3회 소진 후엔 401 + { error: "free_trial_exhausted", message, signup_url, docs_url }로 정확히 무엇이 필요한지 알려줍니다. SBOM이 체크패키지보다 빡빡한 이유는 임의 파일 파싱 + 대량 vuln JOIN 비용 때문. /api 문서에도 동일 안내 + 응답 예시 갱신.
소개 페이지 — 데이터 출처 표에 CISA KEV / FIRST EPSS 추가
/about 페이지 하단 "data sources" 표에 두 신호의 업스트림(CISA Known Exploited Vulnerabilities, FIRST EPSS)을 명시했습니다. 매일 1회 갱신 cadence와 출처 링크가 함께 노출되어, 응답에 붙은 kev / epss 필드가 어디서 오는지 사용자가 직접 확인할 수 있습니다. 응답 예시 JSON도 두 필드를 포함하도록 업데이트.
CISA KEV + FIRST EPSS 신호 — check-packages / SBOM 응답에 노출
매일 새벽 CISA Known Exploited Vulnerabilities(현재 ~1.1k건) 및 FIRST EPSS 점수(~250k CVE)를 수집해 ai_signals에 업서트합니다. /v1/ai/check-packages와 /v1/ai/sbom-scan은 각 취약점마다 kev (boolean) + epss (0..1) 필드를 함께 반환합니다. KEV=true이거나 EPSS≥0.5면 베이스 CVSS와 무관하게 risk=high로 승격 — Standard 티어 사용자도 "낮은 CVSS지만 실제 익스플로잇 진행 중" 케이스를 자동으로 잡아냅니다. 응답 정렬도 KEV → EPSS → CVSS 순으로 바뀌어서, 상위 3개만 보는 클라이언트도 올바른 1순위를 받습니다.
데이터 마일스톤 — AI 데이터셋 500k건 돌파
누적 수집된 AI 데이터셋 건수가 500,000건을 처음으로 넘었습니다. 자동 기록된 항목입니다.
데이터 마일스톤 — AI 모델 500k건 돌파
누적 수집된 AI 모델 건수가 500,000건을 처음으로 넘었습니다. 자동 기록된 항목입니다.
데이터 마일스톤 — 취약점 250k건 돌파
누적 수집된 취약점 건수가 250,000건을 처음으로 넘었습니다. 자동 기록된 항목입니다.
푸터에 제휴/서비스 문의 라인 추가 (customer@opstech.kr)
카피라이트·버그 리포트 옆에 한 칸 더. 이메일은 mailto: 링크 + 고정폭 글꼴. 좁은 화면에서는 flex-wrap.
한·영 페이지 혼재 전면 수정 (account / login / signup / verify / connect / api / admin)
/en/* 미러에 한국어 텍스트가 박혀 있던 20개 페이지를 일괄 정리. i18n 사전에 90+ 키 추가. 앞으로 페이지 수정 시 ko/en 양쪽 점검을 SOP로 고정.
패키지 매칭 정확도 — crates.io / RubyGems / Go 등 사용자 입력을 purl-spec 표준 타입으로 자동 변환
사용자가 pkg:crates.io/tokio 로 보내면 내부에서 pkg:cargo/tokio 로 변환해 매칭. 이전엔 false-negative 발생.
2026년 5월
Reachability 프롬프트 분리 — 회원 전용 Standard + Reachability (§11)
CVE가 있어도 사용자 코드가 vulnerable 함수에 닿지 않으면 advisory로 다운그레이드. false-positive 감소.
MCP 서버 — scope drift 감지 + pkg:mcp/ 식별자 지원
minor 업데이트에서 권한이 조용히 추가되는 패턴을 감지해 응답에 scope_drift 필드로 노출.
AI 데이터셋 게이트 — pkg:data// 로 라이선스·PII 신호 통합 검사
Hugging Face 데이터셋 전체 카탈로그를 mirror. weights_format·license와 함께 단일 API로 평가.
SBOM 머지 게이트 — coverage_ratio 노출 + 자체 SBOM /sbom.cdx.json 공개
락파일 스캔 시 VDB가 알고 있는 컴포넌트 비율 surface. 외부 검증을 위한 자체 SBOM도 공개.