데이터 기밀성/무결성 취약점, 2017년 12월

(업데이트 2017-12-07) 보안 릴리스를 사용할 수 있습니다.

요약

현재 모든 활성화된 Node.js 릴리스 라인에 보안 업데이트 버전이 출시되었습니다. 이번 업데이트에는 이전 발표에서 언급한 취약점을 수정했습니다.

또한 8.X와 9.X 업데이트에는 심각도가 낮은 버퍼 취약점도 수정했습니다. 이 취약점에 관해서는 아래 내용을 참고하세요.

모든 사용자가 가능한 한 빨리 업그레이드 할 것을 권장합니다.

다운로드

데이터 기밀성/무결성 취약점 - CVE-2017-15896

Node.js는 TLS 핸드셰이크 실패 때문에 SSL_read()를 사용하고 있어 OpenSSL 취약점 CVE-2017-3737에 영향을 받습니다. 그 결과 활성화된 네트워크 공격자가 TLS 인증과 암호화를 우회하는 방식으로 TLS나 HTTP2 모듈을 사용해 애플리케이션의 데이터를 Node.js로 보낼 수 있습니다.

  • 원래의 HTTP 모듈은 영향을 받지 않습니다.
  • HTTP2 모듈의 취약점은 8.X와 9.X 버전에만 존재하며 nodejs/node@f3686f2에서 수정되었습니다. HTTP2는 이전에 공격자가 악의적인 데이터를 전송하여 공격할 수 있는 취약점이 있었습니다.
  • TLS 모듈의 취약점은 OpenSSL-1.0.2n 버전을 Node.js에 적용함으로써 수정되었습니다. 현재는 아무런 취약점도 발견되지 않았지만, 이전에는 인증되지 않은 데이터를 수용하는 심각한 수준의 보안 문제가 있었습니다. OpenSSL-1.0.2n 버전의 보안 수정 사항에 관한 자세한 정보는 OpenSSL에서 발행한 권고안 secadv-20171207.txt를 확인해보세요.
  • HTTPS 모듈은 영향을 받지 않습니다.

이 취약점은 CVE-2017-15896으로 할당되었습니다.

이 문제를 보고해 준 Matt Caswell(OpenSSL)과 David Benjamin(Google)에게 감사드립니다.

초기화 되지 않은 버퍼 취약점 - CVE-2017-15897

Node.js의 8.X와 9.X 버전에는 버퍼 내용(fill 인수)의 인코딩과 주어진 인코딩이 일치하지 않으면 버퍼가 초기화되지 않은 버그가 있었습니다. 'Buffer.alloc(0x100, "올바르지 않은 인코딩", "hex");'와 같은 코드가 그 예입니다. 이러한 경우에는 0으로 초기화하도록 버퍼 구현을 업데이트했습니다.

OpenSSL 업데이트도 포함되었습니다 - CVE 2017-3738

OpenSSL-1.0.2의 CVE 2017-3738은 Node에도 영향이 있지만 secadv-20171207.txt에서 설명한 바와 같이 심각도는 낮습니다.

아래는 원본 글입니다


요약

Node.js 프로젝트는 12월 8일(UTC)이나 직후쯤, 보안 문제를 해결한 OpenSSL의 새 버전이 출시되는 대로 최대한 빨리 4.x, 6.x, 8.x, 9.x의 새 버전을 릴리스할 것입니다.

데이터 기밀성/무결성 취약점

Node.js 4.x, 6.x, 8.x, 9.x의 모든 버전에 취약점이 존재하며, 이 문제는 12월 7일 출시될 OpenSSL-1.0.2n 버전에서 수정될 것입니다. 자세한 내용은 https://mta.openssl.org/pipermail/openssl-announce/2017-December/000108.html 문서를 참고하세요. Node.js가 OpenSSL API를 사용하는 방식 때문에 이번 Node.js 취약점의 심각도는 높음(HIGH)입니다. 영향받는 버전의 사용자는 보안 릴리스가 나오는 대로 업그레이드해야 합니다.

영향

  • Node.js 4.0 이후 버전은 취약할 수 있습니다.
  • Node.js 6.0 이후 버전은 취약할 수 있습니다.
  • Node.js 8.0 이후 버전은 취약할 수 있습니다.
  • Node.js 9.0 이후 버전은 취약할 수 있습니다.

릴리스 시기

보안 업데이트는 OpenSSL 릴리스 직후 가능한 한 빨리 출시될 것이며, 사용자가 완전히 영향 평가를 할 수 있도록 취약점의 세부 내용도 함께 발표합니다.

연락처 및 향후 업데이트

Node.js의 현재 보안 정책은 https://nodejs.org/en/security/에서 찾을 수 있습니다.

Node.js의 취약점을 제보하고 싶다면 security@nodejs.org로 연락해주세요.

보안 취약점, Node.js 보안 관련 릴리스, nodejs GitHub 조직 내부에서 유지보수 되는 프로젝트의 최신 정보를 알고 싶다면 가끔 공지만 하는 nodejs-sec 메일링 리스트 https://groups.google.com/forum/#!forum/nodejs-sec를 구독해 주세요.