CodeIntegrity 3089 읽는 법: 3077 차단 기록과 서명 정보를 연결하세요

드라이버나 프로그램이 차단됐다는 기록을 찾았을 때, 이벤트 3077만 보고 “서명이 없어서 막혔구나”라고 결론 내리면 원인을 놓칠 수 있습니다. 파일에 서명이 있어도 적용된 App Control 정책을 통과하지 못하는 경우가 있기 때문입니다.

이때 함께 볼 기록이 CodeIntegrity 3089입니다. 3076·3077이 파일에 내려진 감사 또는 차단 결과를 보여준다면, 3089는 그 파일에서 확인된 서명 정보를 보여줍니다. 두 기록을 연결한 뒤 서명 수와 검증 결과를 읽어야 상황이 분명해집니다.

이 글에서는 실제 이벤트 뷰어에서 3076·3077 찾기 → 같은 ActivityID의 3089 찾기 → 서명 필드 해석하기 순서로 살펴보겠습니다. PC에 해당 이벤트가 없다면 차단 사례를 임의로 만들어 촬영할 필요는 없습니다

CodeIntegrity 3089와 3076·3077은 무엇이 다를까?

먼저 세 기록의 역할부터 나눠 보겠습니다. 3076은 감사 결과, 3077은 실제 차단 결과를 보여줍니다. CodeIntegrity 3089는 그 파일에서 확인된 서명 정보를 덧붙이는 기록입니다.

이벤트 ID기록하는 내용읽을 때 주의할 점
3076감사 모드에서, 정책을 적용했다면 차단됐을 파일이 기록만으로 실제 차단됐다고 말할 수 없습니다.
3077적용 모드에서 정책을 통과하지 못해 차단된 파일차단 결과는 알 수 있지만 서명 상태를 이것만으로 단정하면 안 됩니다.
3089차단 또는 감사 대상 파일의 서명 정보3089 자체가 새로운 차단 한 건을 뜻하는 것은 아닙니다.

3076과 3077의 차이, 정책 ID와 파일 경로를 찾는 방법은 앞서 작성한 드라이버 차단 이벤트 3076·3077 읽는 법에 정리했습니다. 여기서는 그 기록에 3089를 어떻게 붙여 읽는지에 집중하겠습니다.

1. CodeIntegrity Operational 로그 열기

Windows 키 + R을 누르고 eventvwr.msc를 입력하세요. 이벤트 뷰어 왼쪽에서 다음 순서로 펼칩니다.

응용 프로그램 및 서비스 로그 → Microsoft → Windows → CodeIntegrity → Operational

Windows 이벤트 뷰어에서 CodeIntegrity Operational 로그를 연 화면
3076·3077 차단 기록과 3089 서명 정보는 CodeIntegrity Operational 로그에서 확인합니다.

가운데 목록에서 문제가 발생한 시각 근처의 3076 또는 3077을 찾습니다. 같은 시각에 3089가 여러 개 있어도 가장 가까운 항목을 곧바로 짝으로 정하지 마세요. 다른 파일의 서명 기록이 섞여 있을 수 있습니다.

3076·3077의 일반 탭에서는 파일 경로와 정책 정보를 먼저 읽습니다. 대상이 .sys라면 드라이버일 수 있고, .exe나 .dll이라면 프로그램 또는 해당 구성 파일을 살펴봐야 합니다. 이 로그는 드라이버에만 쓰이는 것이 아닙니다.

2. ActivityID로 같은 파일의 이벤트 연결하기

찾은 3076 또는 3077을 더블클릭해 이벤트 속성 → 자세히 → XML 보기로 들어가세요. System 부분의 Correlation 항목에서 ActivityID를 확인합니다.

CodeIntegrity 3077 이벤트의 XML에서 Correlation ActivityID를 확인한 화면
차단 이벤트의 ActivityID를 기록해 같은 파일에 연결된 3089를 찾습니다.

아래 화면은 3089의 항목을 읽는 위치를 보여주는 설명용 예시입니다. 앞서 촬영한 3077과 연결된 실제 로그는 아닙니다.

CodeIntegrity 3089 XML에서 ActivityID와 TotalSignatureCount를 확인하는 설명용 예시 화면
ActivityID는 3076·3077과 3089가 같은 파일의 기록인지 대조할 때 사용합니다. 설명용 예시 화면입니다.
CodeIntegrity 3089의 SignatureType과 VerificationError 항목을 보여주는 설명용 예시 화면
서명 수와 검증 결과를 읽는 위치를 보여주는 설명용 예시 화면입니다.

파일 이름과 발생 시각도 참고할 수 있지만, 연결 기준은 ActivityID입니다. Microsoft는 3089의 Hash 값도 연결된 3076·3077에 기록된 해시 중 하나와 대조할 수 있다고 설명합니다.

3. 3089의 서명 정보 읽기

연결된 3089를 찾았다면 아래 항목부터 읽어보세요. 모든 값을 외울 필요는 없습니다. 파일에 서명이 발견됐는지와 그 서명이 어떤 검증 결과를 받았는지를 구분하는 게 먼저입니다.

3089 필드뜻
TotalSignatureCount해당 파일에서 발견된 전체 서명 수입니다.
Signature현재 3089가 몇 번째 서명에 관한 기록인지 보여주는 인덱스입니다. 0부터 시작합니다.
PublisherName / IssuerName서명 인증서의 발행 대상과 인증서 체인 정보를 확인할 때 참고합니다.
ValidatedSigningLevel해당 서명이 도달할 수 있는 서명 수준을 읽는 데 사용합니다.
VerificationError그 서명의 검증 결과나 정책을 통과하지 못한 이유를 나타내는 값입니다.

TotalSignatureCount가 0이면 App Control이 이 파일에서 서명을 발견하지 못했다는 뜻입니다. 이 경우에도 3089 기록 하나가 만들어질 수 있습니다. 반대로 Signature가 0이라고 해서 서명이 없다는 뜻은 아닙니다. 이것은 첫 번째 서명을 가리키는 번호입니다.

서명이 여러 개라면 같은 ActivityID의 3089도 여러 개 나올 수 있습니다. 하나만 보고 판단하지 말고 해당 ActivityID에 연결된 기록을 함께 확인하세요. 각 서명의 ValidatedSigningLevel과 VerificationError가 다를 수 있습니다.

VerificationError는 숫자만 외우지 마세요

Microsoft의 필드 설명에서 자주 눈에 띄는 값은 아래와 같습니다. 실제 의미는 연결된 3076·3077의 결과와 적용 정책을 함께 놓고 읽어야 합니다.

값Microsoft 문서의 의미
0해당 서명의 검증이 성공했습니다. 파일 전체가 정책상 허용됐다는 뜻으로 바꿔 읽으면 안 됩니다.
3파일에 서명이 없습니다.
21App Control 정책을 통과하지 못했습니다.
26App Control 정책에 의해 명시적으로 거부됐습니다.

다른 숫자가 표시됐다면 임의로 원인을 붙이지 말고 아래의 Microsoft VerificationError 값 설명에서 확인하세요.

서명이 있는데도 차단될 수 있을까?

가능합니다. ‘서명이 있다’와 ‘현재 적용된 정책에서 허용된다’는 다른 판단입니다. Microsoft의 공식 분석 예시에서도 차단 이벤트 3077과 연결된 3089에 서명 정보가 존재하지만, 해당 서명은 App Control 정책을 통과하지 못한 것으로 해석합니다.

여기서 특히 주의할 부분은 ValidatedSigningLevel입니다. Microsoft는 3077의 값은 Windows가 파일을 실제로 어떻게 취급했는지, 3089의 값은 개별 서명이 도달할 수 있는 수준을 읽는 데 사용한다고 구분합니다. 같은 이름의 필드라고 두 숫자를 그대로 비교해 “로그가 서로 틀렸다”고 판단하면 안 됩니다.

따라서 확인 순서는 3077에서 차단 파일·정책 확인 → ActivityID가 같은 3089 찾기 → 모든 서명의 VerificationError 확인입니다. 게시자 이름만 보고 안전한 파일이라고 단정하거나, 차단됐다는 이유로 보안 기능부터 끄지 마세요.

이벤트가 보이지 않을 때

본인 PC의 CodeIntegrity Operational 로그에 3076·3077·3089가 없다면, 이 글과 연결할 실제 기록이 없는 상태입니다. 정상적으로 사용하는 PC에서 특정 차단 이벤트가 반드시 나와야 하는 것은 아닙니다. 글에 넣기 위해 일부러 드라이버 오류를 만들거나 예시 이벤트를 실제 캡처처럼 꾸밀 필요도 없습니다.

특히 Windows 보안에서 ‘호환되지 않는 드라이버’를 표시하는 상황은 확인 출발점이 다를 수 있습니다. 그 화면이 문제라면 메모리 무결성이 켜지지 않을 때 드라이버를 확인하는 방법을 먼저 보세요.

자주 묻는 질문

CodeIntegrity 3089가 보이면 파일이 차단된 건가요?

3089 자체는 서명 정보 이벤트입니다. 같은 ActivityID의 3077이면 실제 차단 기록, 3076이면 감사 모드에서 차단됐을 파일에 관한 기록으로 읽으세요.

TotalSignatureCount가 0이면 악성 파일인가요?

그 숫자만으로 악성 여부를 판단할 수 없습니다. 해당 파일에서 발견된 서명이 0개라는 뜻입니다. 파일 경로, 연결된 이벤트, 적용 정책과 파일의 출처를 함께 확인해야 합니다.

3089가 여러 개면 차단도 여러 번 된 건가요?

그렇게 단정할 수 없습니다. Microsoft는 파일의 서명마다 3089를 하나씩 기록한다고 설명합니다. 먼저 ActivityID가 같은지와 각 기록의 Signature 번호를 확인하세요.

3077은 어떤 파일이 어느 정책에 막혔는지, CodeIntegrity 3089는 그 파일의 서명을 어떻게 읽을지 알려줍니다. 두 기록의 ActivityID를 맞춘 다음 서명 수와 검증 결과를 살펴보세요. 서명이 없는 경우와 서명은 있지만 정책을 통과하지 못한 경우를 구분하는 데 도움이 됩니다.

참고한 공식 자료

작성 안내: 이벤트의 의미와 필드 해석은 Microsoft 공식 문서와 대조했습니다. 본문에는 실제 PC에서 발생하지 않은 이벤트를 실측 결과로 제시하지 않았습니다.

댓글 남기기