세상에서 가장 오진이 많이 발생하는 파일

1. Overview
이번 글에서는 아마도 세상에서 가장 오진이 많이 발생하는 파일에 대해 이야기해보겠다. 구글에서 운영하는 세계 최대 멀웨어 저장소인 바이러스토탈에서 다음과 같은 해시 값으로 검색하면 진단 수가 0인 정상 파일로 진단된다.
- MD5 : d41d8cd98f00b204e9800998ecf8427e
- SHA1 : da39a3ee5e6b4b0d3255bfef95601890afd80709
- SHA256 : e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

하지만 Community 탭으로 이동하면 수많은 사용자들이 해당 파일의 악성, 정상 여부를 두고 서로 상반되는 투표를 하고 있음을 볼 수 있다.

Comments 를 보면 더 개판이다. 어째서 이 파일이 정상인지, 악성인지에 대해 아주 상세하게 설명하며 자기 주장을 펼치고 있다.

이 논쟁에 대한 진실은, 이 파일이 아무런 데이터를 가지지 않는 파일 크기 0인 파일이라는 것이다. 따라서 결코 악성이 될 수 없다.
그럼 어째서 수 많은 사람들이 이 파일이 악성이라고 투표를 했을까? 한두명이면 몰라도 이렇게 많은 사람들이 실수를 했다는 점은 무언가 시스템적인 문제가 있다고 생각할 수 있다.
Comments 를 읽다보면 대략적인 상황을 유추해볼 수 있다. 악성으로 진단하는 경우 대부분 자동 분석 시스템과 같이 사람의 손길이 닿지 않는 방식으로 평가된 경우이다.
만약 멀웨어가 드랍하는 파일이 권한 문제, 런타임 에러, 등 모종의 이유로 악성 파일을 드랍하는데 실패한 경우 파일 크기가 0인 파일이 생성될 것이다. 본래 정확한 진단을 위해서는 파일 데이터를 근거로 악성 여부를 진단해야 하나, 자동 분석 시스템은 드랍된 파일의 경로와 이름, 또는 악성 파일이 드랍했으니 이 또한 악성일 것이라 판단한 것으로 추정된다.
2. 이를 통해 배울 점
단순하게 생각하면 충분히 정교하지 않은 자동 분석 시스템의 오작동이라 치부할 수도 있지만, 위에서 언급한 해시 값들은 주목할만 하다.
만약 우리가 MD5, SHA1, SHA256 을 사용할 상황에서 위와 같은 해시 값이 발생한다면, 이는 분명 우리가 의도치 않은 상황이 발생했을 가능성이 높다. 데이터를 하나하나 확인 가능한 상황이면 상관 없으나, 대량의 데이터에 대해 해시 값을 생성한다면 생성된 데이터의 유효성을 검증하기 위해 위와 같은 해시 값의 존재 여부를 체크하는 것도 괜찮을 것이다.