2026년 10월 23일, KISA 보호나라가 Oracle 제품(Java SE 포함)과 Node.js에 대한 보안 업데이트 권고를 각각 게시했습니다. 서로 다른 제품의 공지인데, 공지가 안내하는 참고 문서를 따라가 보면 같은 사건에 닿습니다. 인도의 인증기관 eMudhra의 중간 인증서 8개에서 개인키가 유출된 것으로 보고되었고, OpenJDK와 Node.js가 모두 이 사건에 대응하는 업데이트를 냈습니다. 이 글은 Java나 Node.js를 운영하고 있다면 무엇을 확인해야 하는지 공식 원문 기준으로 정리한 점검 가이드입니다. 내용은 2026년 10월 29일 기준입니다.

무슨 일이 있었나

  • 사건: OpenJDK 프로젝트의 안내 페이지는 eMudhra 중간 인증서 8개의 개인키가 유출된 것으로 보고되었다고 설명합니다. 일반적으로 인증기관의 중간 인증서 개인키가 새면, 그 아래에서 발급된 것처럼 보이는 인증서를 만들 수 있고, 해당 인증기관을 신뢰하는 소프트웨어는 위조 인증서를 정상으로 받아들일 수 있습니다. 이 문장은 일반적인 설명이며 공지 문구를 옮긴 것이 아닙니다.
  • Java: OpenJDK 권고(2026/10/21)는 CVE-2026-91403, CVSS v3.1 9.1, 구성요소 security-libs/java.security로 적고 있습니다. KISA 공지는 이 CVE의 영향 대상을 다음과 같이 올렸고, 모두 "이하" 기준입니다. Oracle Java SE는 8u511, 8u511-perf, 11.0.33, 17.0.21, 21.0.13, 25.0.5, 27.0.1, Oracle GraalVM for JDK는 17.0.21과 21.0.13, Oracle GraalVM Enterprise Edition은 21.3.20, OpenJDK는 8u504, 11.0.32.1, 17.0.21, 21.0.13, 25.0.5, 27.0.1입니다. 해결 방안은 Oracle 제품은 "Oracle 보안 패치 적용", OpenJDK는 "벤더 보안 업데이트 적용"으로 적혀 있습니다.
  • Node.js: 10월 21일 보안 릴리스의 의존성 업데이트 목록에 "ca-cert (eMudhra Intermediate CA Compromise)"가 22.x, 24.x, 26.x 모두에 들어 있습니다. 수정 버전은 22.23.4, 24.22.1, 26.12.1이고, KISA 공지의 기준도 같습니다. 같은 릴리스에는 이 건과 별개인 취약점 10건이 함께 공지되었으며, 그쪽은 Node.js 10월 보안 릴리스 글에 정리해 두었습니다.

KISA의 Node.js 공지 본문에는 CVE 3건(CVE-2026-105482, CVE-2026-105483, CVE-2026-106069)만 적혀 있고 eMudhra는 나오지 않습니다. eMudhra 항목은 Node.js 공식 공지에서 확인할 수 있으니, 표의 버전만 보고 끝내지 말고 원문까지 열어 보시길 권합니다.

Java: 최근에 업데이트했더라도 다시 확인할 것

OpenJDK 안내 페이지는 벤더에서 받은 독립 설치형 런타임을 쓴다면, 며칠 안에 업데이트한 경우에도 아래 조치 중 하나를 즉시 하라고 적고 있습니다. 최근에 올렸다는 사실만으로는 이 건이 해결됐다고 볼 수 없다는 뜻입니다.

  1. 실제로 쓰는 JDK 찾기: java -version으로 버전과 배포판(Oracle, Temurin, Corretto, Microsoft 등)을 확인합니다. 서버에 JDK가 여러 개 있거나, 톰캣 같은 애플리케이션 서버나 빌드 도구가 자기 JRE를 따로 들고 있다면 각각 확인해야 합니다. 컨테이너는 이미지 안의 버전을 봐야 합니다. OpenJDK 안내도 런타임이 여러 개면 각각 같은 조치를 반복하라고 합니다.
  2. 영향 여부 확인: OpenJDK가 안내 페이지에서 제공하는 CheckCerts.java 프로그램을 실행합니다. JDK 8 이상에서 동작한다고 되어 있습니다.
  3. 수정된 런타임 설치: 배포판 벤더가 업데이트를 내면 설치합니다. OpenJDK 안내는 해당 런타임의 릴리스 노트에 JDK-8395690, CVE 2026-114820 수정이 적혀 있어야 한다고 설명합니다. 다만 KISA 공지와 OpenJDK 권고에는 수정 빌드 번호가 적혀 있지 않았습니다. 또 OpenJDK는 권고 페이지에서는 CVE-2026-91403으로, 안내 페이지에서는 CVE 2026-114820으로 적고 있어 두 번호의 관계를 공식 문서에서 확인하지 못했습니다. 릴리스 노트는 JDK-8395690을 기준으로 찾아보세요.
  4. 수정본이 아직 없다면 임시 조치: OpenJDK 안내가 제시하는 방법은 런타임의 키스토어(cacerts)를 백업한 뒤 문제의 루트 인증서 4개를 지우고 실행 중인 런타임을 재시작하는 것입니다. 키스토어는 JDK 11 이상이면 $JDK_HOME/lib/security/cacerts, JDK 8이면 $JDK_HOME/jre/lib/security/cacerts입니다. 존재하지 않는다는 오류는 무시해도 된다고 합니다.
    keytool -delete -cacerts -alias "emsignrootcag1 [jdk]"
    keytool -delete -cacerts -alias "emsignrootcag2 [jdk]"
    keytool -delete -cacerts -alias "emsigneccrootcag3 [jdk]"
    keytool -delete -cacerts -alias "comodoaaaca [jdk]"
    JDK 8은 -cacerts 대신 -keystore $JDK_HOME/jre/lib/security/cacerts 를 지정합니다. 이 인증서들을 지우면 해당 인증기관이 발급한 인증서를 쓰는 접속이 실패할 수 있으니, 지우기 전에 백업을 두고 필요한 외부 연동이 있는지 먼저 확인하세요.
  5. 폐기 검사 켜기: TLS를 쓰는 애플리케이션이라면 java 명령줄에 -Dcom.sun.net.ssl.checkRevocation=true 와 -Dcom.sun.security.enableCRLDP=true 를 추가하는 방법도 안내되어 있습니다. 서명된 JAR은 JDK 17 이상에서 jarsigner -verify -revcheck -strict 로 검증할 수 있습니다.
  6. 운영체제 패키지의 JDK: Fedora, RHEL, Oracle Linux 등은 운영체제의 인증서를 쓰기 때문에 인증서 업데이트로 충분할 가능성이 크다고 합니다. 반면 Debian과 Ubuntu 계열은 패키지 업데이트만으로는 부족하고, 슈퍼유저로 /etc/ssl/certs/java/cacerts를 지운 뒤 update-ca-certificates --fresh를 실행하는 우회가 필요하다고 안내합니다.

Node.js: 최소 버전과 확인 방법

  • 최소 버전: 22.x는 22.23.4 이상, 24.x는 24.22.1 이상, 26.x는 26.12.1 이상입니다. 이 글을 쓰는 시점에 24.x에는 24.22.2, 26.x에는 26.13.0(LTS 전환)도 나와 있습니다.
  • 실행 중인 버전 확인: 서버에서는 node -v로 충분하지만, 컨테이너는 docker exec 컨테이너이름 node -v로 이미지 안의 버전을 봐야 합니다. 개발자 PC의 Node도 잊기 쉬운 대상입니다.
  • 이미지 재빌드: Dockerfile이 node:24-alpine처럼 메이저까지만 적었다면 다시 빌드해야 최신 패치가 들어옵니다.
  • 지원이 끝난 라인: Node.js 공지는 지원이 끝난 버전은 보안 릴리스가 나올 때마다 영향을 받는다고 적고 있습니다. 20.x 이하라면 22 이상으로 옮기는 계획이 필요합니다.

오늘 확인할 순서

  1. 운영 서버, 컨테이너 이미지, 개발자 PC에서 Java와 Node.js 버전을 목록으로 만든다.
  2. Java는 배포판별로 수정 빌드(JDK-8395690 수정 기재)가 나왔는지 릴리스 노트로 확인하고, 없으면 임시 조치(인증서 제거 또는 폐기 검사) 중 맞는 것을 고른다.
  3. Node.js는 최소 버전 이상으로 올리고, 컨테이너라면 이미지를 다시 빌드한다.
  4. 교체 전에 이전 이미지나 키스토어를 백업하고, 교체 뒤 외부 연동(결제, 메일, 외부 API)이 정상인지 확인한다.
  5. KISA 보호나라 보안공지를 정기적으로 확인하는 담당자를 정해 둔다.

서버 구성이 복잡하거나 점검할 인력이 빠듯하다면, 포르본허가 Java와 Node 버전 점검, 업그레이드 시험, 롤백 계획까지 도와드릴 수 있습니다. 아래 문의 양식에 상황을 간단히 남겨 주세요.

참고 자료