diff --git a/deploy/CI.md b/deploy/CI.md index aeb3160..637192e 100644 --- a/deploy/CI.md +++ b/deploy/CI.md @@ -83,6 +83,23 @@ CI가 통과해야 하는 관문이 아래처럼 늘었다. **로컬에서 먼 > 커버리지 바닥(30%/40%)은 "지금보다 나빠지지 마라"는 **래칫(ratchet)**이다. > 테스트를 늘리면 이 숫자도 함께 올려 바닥을 끌어올리는 게 건강한 흐름. +## 의존성 취약점 스캔 (라이브러리 CVE) + +우리가 직접 쓴 코드뿐 아니라 "가져다 쓰는 라이브러리"에도 취약점이 생긴다. CI가 이를 훑는다. + +| 대상 | 도구 | 방식 | +|---|---|---| +| 프론트(npm) | `npm audit --omit=dev --audit-level=high` | 온디맨드(대용량 DB 없음) | +| 백엔드(Maven) | OSV-Scanner v2.4.0, `scan source -r backend` | osv.dev 온디맨드 질의 | + +**둘 다 비차단(`continue-on-error`)으로 "보고 전용" 시작한다.** 이유: 이 스캔은 "코드"가 +아니라 "외부 권고 DB 상태"에 결합돼, 우리가 한 줄도 안 고쳐도 새 CVE가 공개되면 차단형이면 +무관한 PR까지 전부 CI가 붉어진다. 팀이 수용목록(allow-list) 운영에 익숙해지면 차단으로 승격한다. + +> ⚠️ **첫 스캔이 이미 값어치를 증명했다**: 백엔드 OSV 스캔이 Spring Boot 3.4.2의 +> 누적 CVE(tomcat-embed-core·spring-security-* 등, 일부 CVSS 9점대)를 다수 찾아냈다. +> 대부분 **Spring Boot 패치 버전 업그레이드로 한 번에 해결**된다 — 별도 후속 티켓 권장. + ## main 브랜치 보호 (PR 워크플로) `main`은 보호 규칙이 걸려 있다(Gitea → 저장소 설정 → 브랜치): diff --git a/frontend/public/docs/ticket-pool.html b/frontend/public/docs/ticket-pool.html index 81d7f05..58c954c 100644 --- a/frontend/public/docs/ticket-pool.html +++ b/frontend/public/docs/ticket-pool.html @@ -438,7 +438,7 @@
log.info로 남긴다. 세션 Authentication에서 행위자를 얻는다.POST /api/auth/signup과 PUT /api/profile/me에 분당 상한을 건다./api/mentor/students(전체 인적사항)와 /export.csv에 접근 한 줄(사용자·행위·시각) 로그를 남긴다. SEC-02와 짝.