보안 취약점은 공개 issue 로 보고하지 마세요. 대신:
- 레포 owner 에게 직접 연락 (GitHub private security advisory)
- 또는 GitHub Issues 에서 "Private vulnerability reporting" 활성화 시 그 채널
응답 SLA: 보고 후 48시간 내 acknowledge, 영향 평가 후 수정 일정 공유.
HARNESS 는 LLM 에이전트 도구입니다. 다음 위협 영역을 인지합니다.
- LLM 에 전달되는 외부 입력 (파일 / 웹 / 사용자 메시지) 은 모두 잠재적 명령으로 간주.
gateguard-fact-forcehook 이 Edit / Write 직전 사실 조사를 강제하여 self-evaluation 우회를 차단.config-protectionhook 이.env,*.pem,credentials*등 시크릿 경로 직접 편집 차단.
pre-bash-dispatcher가 위험 패턴 차단 (force push, rm -rf, --no-verify, curl|bash 등).quality-gate가 변경 파일 타입 체크 후 차단.- Codex / Gemini provider 는 read-only sandbox + outbound network 차단으로 호출.
- MCP 서버 SemVer 핀 강제 (
@latest금지,RULES.md명시). package.json의존성 최소화, audit 정기 실행.
.gitignore에 시크릿 패턴 명시 (.env*,*.pem,*.key,credentials*).- audit log 에 secret 자동 감지 / 플레이스홀더 치환 (Day 8 이후).
- 핸드오프 마크다운 5필드는 산문 금지 — 토큰 / 시크릿 노출 표면 축소.
.harness/state/sessions/<id>/는 세션 격리.~/.harness/instincts/는 사용자 명시 prune 또는 자동 prune (olderDays).- 영속 메모리는 좁고 처분 가능 — 12-item Minimum Bar 룰 (AGENTS.md).
모노레포 분리 이후 루트에는
scripts/디렉터리가 없다. 아래 명령은 모두packages/nekowork-cli/에서 실행하거나 그 경로를 명시해서 호출한다.
# packages/nekowork-cli/ 에서 실행
node packages/nekowork-cli/scripts/ci/check-markers.js # 마커 일관성
node packages/nekowork-cli/scripts/repair.js --check # sha256 변조 검출
npm --prefix packages/nekowork-cli run lint # catalog + validator
npm audit # 의존성 취약점 (외부 도구)
npm --prefix packages/nekowork test # 회귀 테스트 (severity 등)docs/ARCHITECTURE.md §10 의 12-item Bar 와 1:1 매핑. 현재 상태:
| # | 항목 | 상태 | 비고 |
|---|---|---|---|
| 1 | 시크릿 redaction | ✓ | agent.yaml secret_redaction: true. audit jsonl 작성 직전 마스킹. |
| 2 | 시크릿 파일 보호 | ✓ | config-protection hook 이 .env/*.pem/credentials* Edit 차단. |
| 3 | MCP allowlist + SemVer 핀 | ✓ | mcp_pin_required: true, @latest 금지. |
| 4 | 외향 네트워크 기본 차단 | ✓ | outbound_network_default: deny. opt-in 만. |
| 5 | sandbox 프로파일 | ✓ | agent frontmatter sandbox: read-only/workspace-write/danger. |
| 6 | 사실 조사 강제 | ✓ | fact_forcing_default: true, gateguard-fact-force hook. |
| 7 | audit log | ✓ | .harness/audit/<date>.jsonl 모든 도구 호출. |
| 8 | severity matrix + human gate | ✓ | round 3 / critical / blast 20 파일 트리거. |
| 9 | 승인 필요 작업 | ✓ | unsandboxed_shell, egress, deploy, off_repo_write. |
| 10 | OIDC / 키리스 인증 | 미구현 — §"채택 절차" 참조 | GitHub Actions 시크릿 → OIDC token 전환. |
| 11 | dead-man switch | 미구현 — §"채택 절차" 참조 | 일정 시간 응답 없으면 토큰 자동 만료. |
| 12 | 의존성 / supply chain 스캔 | 부분 | npm audit 가이드만. CI 자동화 미통합. |
의도: GitHub Actions 가 ANTHROPIC_API_KEY 같은 장기 시크릿 대신 OIDC token 으로 임시 인증을 받도록 한다. 시크릿 누출 시 영향 시간 단축.
채택 단계:
- Anthropic / OpenAI 가 OIDC federated identity 를 지원하는지 확인 (현재는 미지원 — 보류).
- 사내 LLM endpoint 가 OIDC 지원 시
runners/internal.js의 인증 헤더를 OIDC token 으로 전환. agent.yaml.security에auth_mode: oidc | static_token항목 추가.- GitHub Actions 의
permissions.id-token: write설정 +audclaim 검증.
수용 가능 임시 대안: Actions 시크릿을 organization-level + environment-protected 로 두고 90일 rotation 정책.
의도: ralph 모드 등 영속 데몬이 비정상 정지하거나 외부 통신 두절 시 자동으로 작업 토큰을 무효화. "장기 미응답 = 위협 가능성" 가정.
채택 단계:
~/.harness/heartbeat파일에 매 사이클 timestamp 갱신 (ralph / wait 가).scripts/daemon/wait.js에--dead-man-timeout-min옵션 추가 (기본: 30분).- 타임아웃 초과 시:
- 진행 중인 모든 wakeup.json 파일 삭제.
ANTHROPIC_API_KEY같은 환경 변수를 자식 프로세스에서 제거 (덮어쓰기 방어).- HUMAN_GATE 자동 생성 + audit jsonl 에 기록.
- 사용자가
nekowork wait --resume으로 명시 재시작.
수용 가능 임시 대안: HARNESS_RALPH_MAX_ITER 강제 + HARNESS_DAILY_COST_CAP_USD 비용 차단.
의도: npm / pip / cargo 의존성의 알려진 CVE 와 typosquatting 을 PR 단계에서 자동 차단.
채택 단계 (npm):
.github/workflows/harness-validate.yml에 step 추가:- run: npm audit --audit-level=high --omit=dev - run: npx --yes audit-ci --high
package-lock.json이 PR 에서 변경되면 reviewer 알림 (labeldep-update).- 새 의존성 추가 시 PR 본문에 weekly downloads / last publish / 메인테이너 명시 강제 (PR 템플릿).
dependabot.yml또는renovate.json으로 자동 PR 생성 + minor 자동 머지.
채택 단계 (Rust):
cargo-deny또는cargo-auditCI 통합.runtime/Cargo.lock커밋 강제.
수용 가능 임시 대안: 분기 1회 npm audit + 새 의존성 추가 시 수동 검토.
docs/AUDIT.md 의 §3.3 참조. 외부 의존이 큰 항목들 (API 키 / Codex CLI / Gemini CLI / Rust 컴파일 / GitHub push) 은 사용자 동의 시점에 즉시 검증 가능.
보안 정책 위반을 발견했다면 (예: 시크릿 하드코딩 PR, 의심스러운 의존성 추가):
- Issue 또는 PR 코멘트로 즉시 알림
- 머지된 코드면
git revert후 root cause 분석 - 룰 자체를 강화 (RULES.md / SECURITY.md 갱신)
- severity ≥ HIGH 면
security-reviewer에이전트로 영향 범위 분석