피드로 돌아가기
My Open Source Security Scanner Got Flagged as a Trojan by Windows Defender
Dev.toDev.to
Security

Windows Defender 오탐 해결을 위한 Go 바이너리 배포 전략 최적화

My Open Source Security Scanner Got Flagged as a Trojan by Windows Defender

Faizan Khan2026년 5월 26일7intermediate

Context

Go 언어로 작성된 보안 스캐너 MCPSense가 Windows Defender의 ML 기반 Heuristic Detection으로 인해 Trojan으로 오인되어 자동 삭제되는 문제 발생. Go 컴파일러의 정적 링크 특성과 Mark of the Web 메타데이터가 결합되어 보안 제품의 오탐(False Positive)을 유발하는 구조적 한계 확인.

Technical Solution

  • npm 패키지 매니저를 통한 배포 채널 다각화로 사용자 환경에 최적화된 설치 경로 제공
  • Windows 환경 한정 Direct Binary 다운로드 대신 go install을 통한 로컬 소스 컴파일 방식으로 전환하여 Mark of the Web 플래그 제거
  • 설치 스크립트 내에 '다운로드 성공' 확인 후 3초의 대기 시간을 둔 '파일 존재 여부 재검증' 로직을 추가하여 Defender의 실시간 삭제 감지
  • 설치 실패 시 터미널이 즉시 종료되지 않도록 Read-Host 프롬프트를 강제하여 사용자에게 정확한 오류 원인과 수동 조치 방법 전달
  • VirusTotal의 71개 엔진 분석 결과를 근거로 Microsoft에 False Positive 리포트를 제출하는 정량적 소명 프로세스 수행

1. Windows 대상 Go 바이너리 배포 시 Code Signing 적용 여부 검토

2. 설치 스크립트 설계 시 파일 다운로드 직후가 아닌, 보안 소프트웨어의 검사 시간이 경과한 후의 파일 생존 여부 확인 로직 포함

3. 외부 배포 바이너리의 신뢰성 검증을 위해 VirusTotal 등 멀티 엔진 스캔 결과 확보 및 벤더사 소명 절차 정례화

4. 설치 실패 시 사용자 경험 단절을 막기 위해 터미널 세션 유지 및 명확한 에러 메시지 출력 구조 설계

원문 읽기