feat: VSCode(VSIX) 전용 정적 분석기 + 마켓 lifecycle 연동 (Tier1)#10
Merged
Conversation
VSCode 확장을 정적 룰로 위험 탐지. Chrome 경로 불변(browser=="vscode" additive 분기).
- backend/vscode_analysis/: rules(15룰)/manifest_scan/code_scan/decision/runner
- Manifest 5(M-001,002,004,005,006) / 코드 7(C-003,004,006,007,009,010,011) / 시크릿 3(X-001,002,003)
- 오탐 억제: publisher 화이트리스트(정책룰 한정), node_modules vendored 제외(C-003/011 한정),
C-007 보안-인지 예외(instance 메타데이터 면제 / identity·token은 Critical 유지)
- 판정: review 기본, Critical→거부제안. 자동 approve 없음. 파싱실패 fail-closed
- main.py: /file_scan에 browser=="vscode" early-branch + _run_vscode_scan
(Nexus review/ 업로드 + Web /api/receive 콜백 + risk_level 교정) — 전부 additive
- backend/tests/vscode_analysis/: 70 테스트 (양성 5종 Critical 0, GlassWorm 합성 탐지)
3c0aef7 to
370ab39
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
무엇을
VSCode 확장(VSIX)을 정적 룰 기반으로 위험 탐지하는 전용 분석기를 추가합니다. 기존 Chrome 분석 경로는 변경하지 않고(
browser=="vscode"additive 분기), 검색→홀딩→스케줄러→/file_scan→판정→마켓 lifecycle까지 연결됩니다.왜 (배경)
manifest.json이 아니라extension/package.json구조 → 기존 스캐너는 매니페스트를 못 찾아 정적분석이 조용히 스킵되던 문제.변경 사항
신규 모듈
backend/vscode_analysis/rules.py— 15룰 정의 + publisher 화이트리스트 + C2/메타데이터 상수 + 정규식manifest_scan.py— package.json 룰 (M-001,002,004,005,006)code_scan.py— 코드·시크릿 룰 (C-003,004,006,007,009,010,011 / X-001,002,003) + 오탐 예외decision.py— 판정 (Critical→거부제안+검토 / 그 외 검토, 자동 approve 없음, 파싱실패 fail-closed)runner.py—run_vscode_static_analysis(vsix)진입점main.py(전부 additive, Chrome 코드 불변)/file_scan에browser=="vscode"early-branch +_run_vscode_scan()review/업로드 + Web UI/api/receive콜백 + 대시보드 표시용 risk_level 교정테스트
backend/tests/vscode_analysis/— 70개정밀도(오탐 억제) 설계
node_modulesvendored 제외 — 오탐 우려 룰(C-003·C-011)만. 상수·시그니처 Critical 룰은 vendored에서도 발화.instance(VM 탐지 텔레메트리)는 면제,identity/oauth2/token·AWS·GCP 토큰 경로는 Critical 유지.검증
/file_scan→판정→대시보드 표시 확인알려진 후속 / 범위 외
web_payload.overall.risk_level표기: VSCode 분기에서 교정했으나, 근본 보정은 공유web_payload.py변경이라 팀 합의 후 별도 처리 권장.영향