2023년 봄, 보안 당국이 북한 해킹 조직이 국내 금융보안인증 소프트웨어의 취약점을 악용했다고 발표했다. 제품 이름은 처음엔 공개되지 않았지만, 곧 이니텍의 INISAFE CrossWeb EX V3 라는 것이 알려졌다. 이름을 처음 들어 본 사람이 대부분이었을 것이다. 그런데 보도에 따르면 이 제품군은 국내외 PC 1천만 대 이상에 깔려 있는 것으로 추정됐다. 이름은 몰라도 은행 사이트에서 "인증서 로그인"을 한 번이라도 눌렀다면 PC 에 들어와 있었을 수 있는 프로그램이다.

내 PC 에는 지금 이 프로그램이 없다. 같은 역할을 하는 다른 회사 제품들(4편의 Delfino, 12편의 MagicLine4NX, 13편의 AnySign4PC)이 대신 깔려 있다. 그래서 이번 편은 공개된 보안 권고와 기사를 모아 정리했다.

정체: 이니텍의 공동인증서 프로그램

INISAFE 는 이니텍의 보안 제품 이름이고, CrossWeb EX 는 그중 인터넷 뱅킹과 공공 사이트용 인증 프로그램이다. 크롬 웹 스토어에 올라온 같은 이름의 확장 프로그램 설명을 보면, 이니텍의 PKI 인증서 가입자 프로그램이며 크롬에서 CrossWeb EX 를 쓰려면 이 확장 프로그램이 필요하다고 적혀 있다. 확장 프로그램의 사용자 수는 약 400만으로 표시되어 있었다.

하는 일은 지금까지 본 다른 공동인증서 프로그램과 같다. 사이트에 로그인하거나 이체할 때 인증서 선택 창을 띄우고, 고른 인증서로 전자서명을 만들고, 서버와 주고받는 데이터를 암호화한다. 이름의 "Cross" 는 여러 브라우저를 지원한다는 뜻으로 보이고, "EX" 는 예전 ActiveX 대신 PC 에 실행 파일을 깔아 두는 방식을 가리키는 것으로 알려져 있다. 브라우저 확장 프로그램이 앞에서 페이지와 대화하고, 뒤에서는 PC 에 설치된 프로그램이 실제 인증서를 다루는 구조다. 14편에서 본 CrossEX 와 확장 프로그램의 관계와 비슷하다.

공개 자료에 나오는 프로세스 이름은 inisafecrosswebexsvc.exe 다. 안랩 ASEC 의 2022년 분석 글이 이 이름을 썼고, 2023년 업데이트 권고에는 inisafecrosswebsvc.exe 로 조금 다르게 적혀 있다. 작업 관리자에서 이니텍 서명이 있는 inisafe 로 시작하는 프로세스가 보이면 이 프로그램으로 보면 된다.

2022~2023년에 있었던 일

사건은 두 단계로 알려졌다.

먼저 2022년 4월, 안랩 ASEC 이 북한 연계 조직으로 알려진 라자루스(Lazarus)의 새 악성코드를 분석하면서 그 악성코드가 이니텍 프로세스 안에서 실행되고 있었다고 밝혔다. 악성 DLL 이 inisafecrosswebexsvc.exe 에 주입되어 동작했는데, 주입당한 실행 파일 자체는 해시가 정상 파일과 같고 이니텍 서명도 그대로였다. 보안 프로그램 입장에서는 정상 서명된 프로세스가 하는 일이라 의심하기 어렵다. 이후 해외 보도들은 공격자가 국내 웹 사이트를 먼저 장악해 두고, 취약한 버전이 깔린 방문자 PC 에 악성 DLL 을 내려보낸 이른바 워터링 홀 방식이었다고 정리했다.

그다음 2023년 3월 30일, 한국인터넷진흥원(KISA)이 금융보안인증 소프트웨어의 긴급 보안 패치를 권고했다. 국가정보원과 경찰청이 해킹 사고를 조사하다 취약점을 확인했다는 내용이었다. 며칠 뒤 안랩 ASEC 과 보안뉴스가 대상이 INISAFE CrossWeb EX V3 이고 수정 버전이 3.3.2.41 이라고 구체적으로 알렸다.

항목 내용
제품 INISAFE CrossWeb EX V3 (이니텍)
취약한 버전 3.3.2.40 이하 (보안뉴스), 3.3.2.41 이하로 적은 자료도 있음 (ASEC)
수정 버전 3.3.2.41
위험 원격에서 사용자 PC 에 악성코드를 퍼뜨리는 데 악용 가능
이용자 조치 취약한 버전을 제거한 뒤 이용하는 사이트나 개발사에서 수정 버전을 다시 설치

취약한 버전의 경계가 자료마다 한 단계 다르다. 3.3.2.41 이 수정 버전이라는 점은 두 자료가 같으니, 그보다 높은 버전이면 이 취약점과는 관계가 없다고 보면 된다.

이 사건이 보여 준 것은 구조의 문제였다. 뉴시스는 당시 기사에서 이런 프로그램이 사이트에 접속할 때 자동으로 깔리고 백그라운드에서 돌아서 이용자가 존재를 잘 모르며, 보안 패치도 이용자가 아니라 서비스를 제공하는 기관이 새 버전을 배포해야 적용되기 때문에 빨리 고치기 어렵다고 지적했다. 이 연재에서 계속 본 그대로다. 깔린 줄도 모르는 프로그램은 업데이트할 생각도 못 한다.

내 PC 의 버전 확인과 정리

확인은 간단하다. 설정 → 앱 → 설치된 앱(또는 제어판의 프로그램 및 기능)에서 "INISAFE" 로 검색한다. INISAFE CrossWeb EX V3 가 있으면 버전을 본다. PowerShell 로는 이렇게 볼 수 있다.

Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*,
                 HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*,
                 HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* -ErrorAction SilentlyContinue |
    Where-Object DisplayName -match 'INISAFE' |
    Select-Object DisplayName, DisplayVersion, UninstallString

현재 사용자 영역(HKCU)까지 같이 보는 이유는 14편의 CrossEX 처럼 제거 정보를 사용자 쪽에만 남기는 프로그램이 있기 때문이다.

버전이 3.3.2.41 보다 낮다면 일단 제거한다. 이 프로그램을 요구하는 사이트를 계속 쓴다면 그 사이트에 다시 접속해 안내에 따라 새 버전을 받는다. 당시 권고들도 같은 순서, 즉 먼저 지우고 이용하는 사이트나 이니텍 공식 경로에서 다시 까는 방법을 안내했다. 검색으로 찾은 파일 공유 사이트의 설치 파일은 쓰지 않는다.

당분간 쓸 일이 없다면 다시 깔지 않아도 된다. 공동인증서 파일은 이 프로그램이 아니라 다음 편에서 볼 NPKI 폴더에 따로 들어 있으므로, 프로그램을 지워도 인증서는 그대로 남는다. 제거한 뒤에는 브라우저의 확장 프로그램 관리 화면에서 INISAFE CrossWeb EX 확장도 지우고, certmgr.msc 와 certlm.msc 의 신뢰할 수 있는 루트 인증 기관에 이니텍 이름의 인증서가 남아 있는지 한 번 본다.

다음 편은 이 모든 프로그램이 결국 읽으러 가는 곳, 공동인증서가 들어 있는 NPKI 폴더다.