Skip to content

feat(security): protect risky incoming files - #1

Draft
HechoLP wants to merge 3 commits into
mainfrom
codex/receive-file-protection
Draft

feat(security): protect risky incoming files#1
HechoLP wants to merge 3 commits into
mainfrom
codex/receive-file-protection

Conversation

@HechoLP

@HechoLP HechoLP commented Aug 17, 2026

Copy link
Copy Markdown
Owner

작업 목적

  • 악성 파일을 완벽히 판정할 수 없다는 전제에서 Nearby와 Share Link 수신 경로의 무인 저장, 확장자 위장, 운영체제 출처 표시 누락을 줄입니다.

변경 내용

  • 모든 수신 파일을 UNSCANNED으로 표시하고 실행·스크립트·매크로·압축 형식별 위험 정책을 추가했습니다.
  • 위험 파일은 신뢰 기기의 자동 수신에서도 제외하고 명시적 동의를 요구합니다.
  • Nearby는 숨김 staging에서 PE/ELF/Mach-O/shebang 헤더를 재확인하고 위험이 상승하면 최종 저장 전 두 번째 승인을 요청합니다.
  • macOS quarantine과 Windows Mark-of-the-Web 적용이 성공해야만 Nearby 파일을 최종 위치로 이동합니다.
  • Windows 출처 메타데이터에는 DirectDrop 전송 ID를 기록하며 메타데이터 삽입 문자는 거부합니다.
  • Share Link는 위험 형식 동의 UI와 위장 실행 헤더의 첫 chunk 저장 전 중단을 추가했습니다.
  • 오탐·미탐, 암호화 archive, 레거시 Office 등 예외 정책과 한계를 문서화했습니다.

영향 범위

  • Desktop Nearby 수신 승인, 자동 수신, staging 완료 처리
  • Share Link 브라우저 수신 화면과 첫 chunk 검증
  • LAN protocol version 1 → 2
  • macOS용 xattr 의존성

테스트 결과

  • pnpm check 통과: lint, strict typecheck, 72 tests, production build
  • 로컬 Rust cargo fmt --check, cargo clippy --all-targets -- -D warnings, 27 tests 통과
  • GitHub Actions 통과: web/server, macOS native, Windows native
  • Windows CI에서 NTFS Zone.Identifier 생성·읽기 및 전송 출처 기록 테스트 통과
  • macOS arm64 tauri build --bundles app 및 ad-hoc signature 검증 통과
  • npm/Cargo vulnerability 0, 기존 전이 의존성 maintenance/unsound warning 17건 유지
  • 로컬 및 운영 브라우저에서 위험 경고, 동의 checkbox, 다운로드 gate 렌더 확인
  • 운영 share.dlfkd.dev asset/health 200 확인

위험 요소

  • LAN protocol version 2로 인해 이전 Nearby protocol version과 연결되지 않습니다.
  • 확장자·header 정책과 OS 백신 모두 오탐·미탐 가능성이 있으며, 암호화 archive 내부는 판정하지 않습니다.
  • 이 기능은 백신이 아니며 사용자의 실행 동작과 운영체제 보안 경고를 대체하지 않습니다.

롤백 방법

  • 코드: 이 PR의 세 커밋을 revert합니다.
  • 운영 웹: ~/Library/Application Support/DirectDrop/deploy-backups/web-20260817-1647 정적 파일을 복원하고 DirectDrop server LaunchAgent를 재시작합니다.

체크리스트

  • 변경 목적이 명확하다.
  • 관련 없는 변경사항이 섞이지 않았다.
  • 코드가 정상 실행된다.
  • 기존 핵심 테스트가 통과한다.
  • 디버그 코드와 민감 정보가 포함되지 않았다.
  • 영향 범위와 롤백 방법을 기록했다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant