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 폴더다.