// SECURITY AUDIT

보안 감사 보고서

신뢰하되, 검증하세요 — 모든 감사 결론을 여기에 공개합니다.

감사 개요

3차 재검증 · 2026-08-18
📅 감사일: 2026-08-16 / 17 / 18 (3차)📄 범위: lib/ 전체 279개 파일 · android/ (화면 녹화 서비스 전체 1차 검토) · docs/ · test/ (351개 전부 실행)🔬 방법: 파일 교차 검증 + 신규 영역 정독 + Semgrep SAST(634 규칙 / 510 파일) + 동적 검증
0
고위험 · 전부 수정
0
중위험 · 전부 수정
0
저위험 · 전부 수정
0
정보류 · 확인됨
0
안전 설계 확인

총평: 3차 감사로 수렴, 공격면 보고 제로. 봉투 암호화·홉 단위 통신 검증·권한 게이트 샌드박스·크래시 안전 마이그레이션이 3차 교차 검증에서 일관되게 견고. 신규 감사 영역(녹화/워크플로우/번역/패키저/음성)에서 신규 고·중위험 없음. Semgrep은 lib/에서 제로. 출시 가능 상태.

🔧
3차 감사, 전부 수정 완료: 08-16 1차(A~T 전체 20개 섹션) → 08-17 교차 감사 → 08-18 재검증. 누적 고위험 2 / 중위험 14 / 저위험 9 + 정보 4, 고·중위험 전부 종결, 잔여 저위험은 당일 수정. 상세는 업데이트 로그.

감사 과정과 수정 내역

1차 · 2026-08-16 (A~T 전체 20개 섹션)

고위험·수정됨
AI 대화 요청이 리다이렉트 추적 — 탈취된 체인으로 응답이 변조될 수 있음. 수정: followRedirects=false + 3xx 예외 (ai_task_client.dart:27-54).
고위험·수정됨
클립보드 민감 데이터에 게이트 없음 — 어떤 도구도 읽을 수 있었음. 수정: 기본 보호, 보안 센터 검증 필요.
중위험·수정됨
SSRF 변종 우회 — 8진수/축약/16진수 IP로 사설망 차단 우회. 수정: resolveIpLiteral 전 변종 해석 + 단위 테스트 6건 (http_safe.dart:72-127).
중위험·수정됨
플러그인 브리지 크기 상한 없음 — 악성 플러그인이 메모리 고갈. 수정: storage 10MB / file 50MB 상한.
중위험·수정됨
복원 중 클립보드 동시 쓰기 — 새 데이터 오염 가능. 수정: restorePaused 상호배제 (backup_service.dart).
중위험·수정됨
대용량 복사가 메인 스레드 차단 — ANR 위험. 수정: 백그라운드 스레드 + @Volatile (MainActivity.kt:1331-1343).
저위험·수정됨
저위험 6건 — 잠금 전 비밀번호 잔존, 알림 URL 노출, 중복 로그 등 전부 수정.

2차 · 2026-08-17 (교차 감사)

고위험·수정됨
번역 서비스 HTML 주입 체인(H1) — 이스케이프 없는 번역문이 WebView로 직행. 수정: 번역문 HTML 이스케이프 + CSP meta script-src 'none'.
고위험·완화됨
tool_keys 평문 저장(H2) — 플러그인 키가 Hive에 평문. 완화: 외부 백업 암호화 + 내보내기 강제 안내.
중위험·수정됨
비루프백 http AI 엔드포인트 — 평문 엔드포인트 설정 가능. 수정: isAllowedEndpoint 전역 + 프로젝트 + 요청 계층 3중 검증.
중위험·수정됨
외부 파일 가져오기가 기존 데이터 덮어씀 — 심각한 데이터 손실 위험. 수정: 기존 데이터는 병합 가져오기 + 원자적 교체.
중위험·수정됨
잔존 평문 경로(WebDAV/브리지) — HTTPS 강제 또는 루프백 전용으로 수렴.

3차 · 2026-08-18 (재검증 + 추가 감사)

통과
신규 감사 영역에 고·중위험 없음 — 녹화 서비스 전체 / 워크플로우 동작 / 번역 전체 체인 / APK 패키저 / 음성, 모두 클린.
저위험·수정됨
저위험 3건 당일 수정 — 무제한 워크플로우 delay(10분 제한), 번역 리다이렉트 추적(_postNoRedirect), 실패 알림 URL 노출(host만).
통과
Semgrep SAST 스캔 — 634 규칙 / 510 파일, lib/ 제로.
통과
실기기 검증 10항목 통과 — 부팅/비밀번호 설정/프로세스 재시작/클립보드 게이트/AppLock 재잠금/공유 확인 등.
통과
동적 검증 — flutter analyze 0 error · 테스트 351/351 통과 · release 빌드 성공.

안전 확인된 설계

다음 보안 메커니즘은 파일 간 교차 검증을 통과하여 안전하고 유효함이 확인되었습니다:

#보안 메커니즘검증 경로상태
1Hive 암호화 키 하드웨어 보호FlutterSecureStorage → Android Keystore / iOS Keychain
27/7 민감 Box 전체 암호화main.dart에서 교차 검증, 민감 Box 모두 cipher로 열림
3백업 암호화 강제비밀번호 없음 → UnencryptedBackupException
4백업 암호화 알고리즘PBKDF2(300k 라운드) + AES-256-GCM
5릴리스 로그 오버헤드 제로모든 로그 출력이 kDebugMode 내부
6WebDAV HTTPS 강제HTTP 설정 직접 거부
7샌드박스 eval / Function 비활성화Object.defineProperty 완전 커버
8샌드박스 CSP 주입meta 태그 + HTTP 헤더 이중 경로
9경로 탐색 방지플러그인 가져오기와 백업 복원 모두 보안 검증
10기타 확인 항목백업 암호 v3, 복원 프로세스 원자화, 민감 페이지 FLAG_SECURE 등
🔬
전체 보고서(코드 위치와 수정안 포함)는 프로젝트 docs/security_audit_report_2026-08-18_ZCode.md에 있습니다.보안이 우리의 기초입니다 — 문제는 피드백으로 알려주세요.
매트릭스 모드: 켜짐 — 다시 입력하거나 ESC로 종료