울타리 NEO

Windows Defender 가 우리 앱을 삭제했다 — 오탐 전말

마지막 갱신 2026-09-11 · 울타리 NEO 보안 가이드

2026년 9월 10일, Windows Defender 가 울타리 NEO 를 악성코드로 분류해 사용자 PC 에서 삭제했습니다. 실행 파일뿐 아니라 시작 메뉴 바로가기와 레지스트리 항목까지 함께 지웠습니다. 이 글은 무슨 일이 있었고, 저희가 무엇을 측정했고, 무엇을 틀렸는지에 대한 기록입니다.

무슨 일이 있었나

최신 판(build 65)을 설치한 직후 Windows 보안이 다음 이름으로 탐지했습니다.

  • 사용자 PC: Trojan:Win32/Sabsik.FL.A!ml
  • 마이크로소프트 제출 후 클라우드 검사: Trojan:Win32/Wacatac.C!ml

두 이름 모두 끝에 !ml 이 붙어 있습니다. 머신러닝 모델의 판정이라는 뜻입니다. 사람이 만든 시그니처에 걸린 것이 아니라, 모델이 통계적으로 「악성 같다」고 점수를 매긴 것입니다. Sabsik 과 Wacatac 은 서명 없는 새 실행 파일에 붙는 대표적인 일반명이기도 합니다.

측정한 것

짐작으로 넘어가지 않으려고, 같은 PC·같은 정의판(1.459.133.0)·같은 시점에 세 판을 명령줄 검사(MpCmdRun -Scan -ScanType 3)로 돌렸습니다.

빌드결과
build 63found no threats
build 64found no threats
build 65found 1 threats

정의판이 바뀌어서 생긴 일이 아니었습니다. 세 판 모두 같은 정의판에서 검사했고, 앞의 두 판은 깨끗했습니다.

우리가 틀렸던 가설

처음 세운 가설은 「제품 안에 들어 있는 탐지용 문자열 때문」이었습니다. 울타리 NEO 는 보안 점검 도구라 악성코드를 식별하는 문자열을 갖고 있습니다 — 랜섬노트 문구, 해킹 도구 이름, 채굴기 이름 같은 것들입니다. 이런 것들이 한 실행 파일에 모여 있으면 백신이 오해할 수 있다고 본 것입니다.

그래서 세 판의 바이너리를 직접 열어 문자열을 대조했습니다. 결과는 가설과 반대였습니다.

문제의 문자열들은 build 63·64·65 에 개수까지 똑같이 들어 있었습니다. 그런데 63 과 64 는 깨끗했습니다.

문자열이 원인이면 앞의 두 판도 걸렸어야 합니다. 가설은 틀렸습니다. 그리고 그 사실을 확인한 것이 이 조사에서 가장 쓸모 있는 결과였습니다. 틀린 가설을 붙잡고 며칠을 쓸 뻔했기 때문입니다.

그래서 원인이 무엇인가 — 모릅니다

build 65 에서 늘어난 코드 중 정확히 무엇이 방아쇠였는지는 특정하지 못했습니다. 문자열 단위·토큰 단위로 두 번 비교했지만 의미 있는 차이를 분리해 내지 못했습니다.

그리고 이것은 더 파면 나올 성질의 문제가 아닐 수 있습니다. 머신러닝 판정은 근거를 공개하지 않습니다. 파일 전체의 바이트 분포·구조·크기 같은 특징으로 점수를 매기기 때문에, 하는 일이 똑같은 두 빌드가 결정 경계 양쪽에 떨어질 수 있습니다. 사람이 납득할 만한 「이유」가 아예 없을 수도 있습니다.

확실한 것은 네 가지

특정 원인 대신, 애초에 오탐 확률을 높이는 조건들은 분명합니다.

  1. 코드 서명 인증서가 없습니다. 가장 큰 요인입니다.
  2. 새 빌드는 사용 이력이 0입니다. 판을 낼 때마다 평판이 처음으로 리셋됩니다.
  3. 보안 도구라 행동이 악성코드와 겹칩니다. 자동 실행 목록을 읽고, 프로세스를 훑고, 방화벽 규칙을 쓰고, 파일을 격리합니다. 전부 제품의 기능이지만, 모델이 보기에는 악성코드가 하는 일과 같습니다.
  4. 설치 형태가 지속성 패턴과 같습니다. 사용자 폴더에 실행 파일을 두고 자동 시작을 등록합니다. Defender 가 지목한 것도 실행 파일 하나가 아니라 이 조합이었습니다.

하지 않기로 한 것

탐지를 피할 때까지 바이너리를 이리저리 고쳐 보는 방법이 있습니다. 하지 않기로 했습니다.

그건 악성코드 제작자가 쓰는 작업 방식이고, 보안 제품을 만드는 회사가 자기 릴리스 절차에 심을 수 있는 것이 아닙니다. 성공한다 해도 다음 기능을 넣을 때 또 걸릴 것이고, 그때마다 같은 짓을 반복하게 됩니다. 결국 제품을 백신 분류기가 설계하게 됩니다.

대신 하고 있는 것

  • 마이크로소프트에 오탐 정정 요청을 접수했습니다. 위 측정 결과를 근거로 제출했고 검토를 기다리는 중입니다.
  • 코드 서명 인증서를 발급받고 있습니다. 위 1·2번을 동시에 없애는 유일한 수단입니다. 다만 서명한다고 오탐이 즉시 사라지지는 않습니다 — 평판은 다운로드 이력이 쌓이면서 붙습니다.
  • 설치 위치를 바꾸는 것을 검토 중입니다(4번 대응).
  • 그동안 홈페이지에 오탐 안내와 검사에서 깨끗한 이전 판을 함께 올려 두었습니다.

받으신 파일을 직접 확인하는 법

「이 회사가 오탐이라고 하니 믿으라」고 말할 생각은 없습니다. 저희 제품 자체가 근거를 보고 직접 판단하라는 원칙으로 만든 것이라, 여기서도 같은 것을 드립니다.

다운로드 페이지에 모든 배포 파일의 SHA-256 을 적어 두었습니다. 받으신 파일이 저희가 올린 그 파일인지 명령 한 줄로 확인할 수 있습니다.

certutil -hashfile "받은파일경로" SHA256

값이 다르면 그건 저희 파일이 아닙니다. 그 경우에는 실행하지 마시고 알려 주세요.

이 글을 남기는 이유

보안 제품이 백신에 악성으로 잡혔다는 사실은 숨기고 싶은 종류의 일입니다. 그런데 숨기면 사용자는 검색해서 아무 설명도 못 찾고, 「이 프로그램은 바이러스였다」로 결론을 내립니다. 그게 사실보다 나쁩니다.

그리고 저희가 세운 가설이 측정 앞에서 틀렸다는 것도 그대로 적었습니다. 판정 근거를 보여 주겠다고 만든 제품이 자기 문제에서만 근거를 감추면, 그 제품이 하는 말을 믿을 이유가 없어집니다.

진행 상황이 바뀌면 이 글을 갱신합니다. 문의: [email protected]