보안 릴리스입니다. 모든 Node.js 사용자는 https://nodejs.github.io/nodejs-ko/articles/2016/10/15/vulnerability-october-2016-security-releases/에 올라온 보안 릴리스 요약에서 수정된 취약점의 자세한 내용을 참고해야 합니다.
새로운 LTS 릴리스
v6.9.0부터 Node.js v6가 장기 지원(LTS)으로 전환되었고 코드 네임은 **“Boron”**입니다.
v6 릴리스는 "활성 LTS"로 바뀌었고 2018년 4월까지 유지될 것입니다. 2018년 4월 이후 에는
"유지보수 버전"으로 바뀌고 2019년 4월에 지원이 종료됩니다.
LTS 마이그레이션
Node.js v4 LTS "Argon"에서 Node.js v6 LTS "Boron"으로 바꿀 때 알아두어야 할 내용입니다.
- 보안 문제와 안전 때문에
Buffer()
생성자를 문서에서 폐기예정으로 표시하였고 새로운
Buffer.from()
,Buffer.alloc()
,Buffer.allocUnsafe()
를 사용하면 됩니다.
자세한 내용은 Buffer 문서를 참고하세요.
문서에서만 폐기 예정으로 표시한 것이므로 표준 오류에 어떠한 경고도 출력하지 않습니다.
이는 긴 폐기 주기의 첫 단계입니다. - Windows Vista와 그 이전 버전 macOS 10.7과 그 이전 버전은 지원하지 않습니다.
- 많은 경고 메시지와 오류 메시지를 정리해서 더 일관성 있게 만들었습니다.
- V8
--prof
커맨드 라인 인자를 사용해서 생성한 출력 파일을 처리할 때
--prof-process
커맨드 라인 인자를 사용할 수 있습니다. EventEmitter
에서 현재 리스닝하고 있는 모든 이벤트의 목록을 볼 때 새로운
EventEmitter#eventNames()
메서드를 사용할 수 있습니다.fs.mkdtemp()
로
운영체제의 기능을 사용해서 유일한 임시 디렉터리를 빠르고 안전하게 만들 수 있습니다.process.cpuUsage()
로
현재 프로세스가 사용하고 있는 CPU 리소스에 대한 정보를 볼 수 있습니다.- 이제 아주 큰 배열을
util.inspect()
에 인자로 전달할 때 일부를 제거합니다.
이는console.log()
계열에도 적용됩니다. - 네이티브
Promise
가 reject 상태에 빠졌는데 이를 받는 핸들러가 없을 때
표준 에러로 경고를 출력할 것입니다. --inspector
커맨드 라인 인자로 새로운 실험적인 디버깅 프로토콜을 활성화할 수 있습니다.
이는 “v8_inspector” 프로토콜을사용해서 Chrome DevTools, Visual Studio Code 등에서
직접 사용할 수 있습니다.
v5.0.0와
v6.0.0에서
API 호환성이 깨지는 변화가 있었지만 비교적 사소한 변경이고 대부분에 사용자에게는 큰 영향을 주지 않습니다.
Node.js 변경사항과 더불어 Node.js v4 LTS와 이번 v6 LTS 릴리스 사이에
여러 번의 V8 업그레이드가 있었으므로 다음과 같은 JavaScript 언어 향상도 있었습니다.
이제 Node.js v4 LTS "Argon"에서 Node.js v6 "Boron"로 마이그레이션을 계획해야 할 때입니다.
Argon은 2017년 4월까지 _활성 LTS_로 관리되고 2018년 4월까지 _유지보수_단계로 바뀐 뒤 지원이
중단될 것입니다. 자세한 내용은 https://github.com/nodejs/LTS에 올라온
Node.js LTS 계획에서 볼 수 있습니다.
- Node.js에 도움을 주고 싶다면 https://github.com/nodejs/help에 이슈를 올려주세요.
- Node.js에 버그를 보고하고 싶다면 https://github.com/nodejs/node에 이슈를 올려주세요.
Node.js v6.9.0 LTS “Boron”
주요 변경사항
- crypto:
OPENSSL_CONF
환경변수나 플랫폼의 기본 경로에서 OpenSSL 설정 파일을 자동으로
로드하려고 하지 마세요. 설정 파일을 로드하는 것은 항상 공격자가 기본 경로에 파일을 둘 수 있다면
Node.js 프로세스에 조작된 OpenSSL 설정을 로드하게 할 수 있습니다.
(Fedor Indutny, Rod Vagg) - node:
process.release.lts
프로퍼티가'Boron'
로 설정했습니다. 이 값은 v4 LTS
릴리스에서는"Argon"
이고 그 외 릴리스에서는undefined
입니다. (Rod Vagg) - V8: Backport fix for CVE-2016-5172, 임의 메모리 읽기에 대한 수정사항을 백포트했습니다.
범위를 잘못 다룬 V8 파서가 잠재적으로 공격자가 잘 만든 JavaScript 코드로 임의의 메모리 위치에서
민감한 정보를 가져갈 수도 있습니다. 이 취약점은 공격자가 Node.js 프로세스에서 임의의
JavaScript 코드를 실행할 수 있어야 합니다. (Rod Vagg) - v8_inspector: 인스펙터 실행마다 UUID를 생성합니다. 이는
--inspect
로 실행했을 때
인증되지 않은 클라이언트가v8_inspector
포트로 Node.js 프로세스에 연결하는 것을 차단해서
추가로 보안을 강화합니다. 디버깅 프로토콜에서는 실행 중인 프로세스 내부에 더 많은 접근을 허용하고
임의의 코드를 실행할 수 있으므로 인증된 도구로만 접근을 제한하는 것이 중요합니다. Node.js에서
v8_inspector
프로토콜은 아직 실험적인 기능입니다.
이 취약점은 Jann Horn가 최초로 보고했습니다. (Eugene Ostroukhov)
Commits
- [
99e4eee8ef
] - build: do not define ZLIB_CONST (Bradley T. Hughes) #9122 - [
cae9eb35f0
] - crypto: fix openssl.cnf FIPS handling & testing (Rod Vagg) nodejs/node-private#82 - [
c947d448da
] - deps: cherry-pick 0e14baf712 from V8 upstream (Rod Vagg) nodejs/node-private#80 - [
647afe9d9a
] - inspector: generate UUID for debug targets (Eugene Ostroukhov) nodejs/node-private#79 - [
1ea0358a91
] - node: --openssl-config cli argument (Fedor Indutny) nodejs/node-private#78 - [
455272ad33
] - (SEMVER-MINOR) src: add process.release.lts property (Rod Vagg) #3212 - [
9ace073949
] - win,build: try multiple timeservers when signing (Rod Vagg) #9155
Windows 32-bit Installer: https://nodejs.org/dist/v6.9.0/node-v6.9.0-x86.msi
Windows 64-bit Installer: https://nodejs.org/dist/v6.9.0/node-v6.9.0-x64.msi
Windows 32-bit Binary: https://nodejs.org/dist/v6.9.0/win-x86/node.exe
Windows 64-bit Binary: https://nodejs.org/dist/v6.9.0/win-x64/node.exe
macOS 64-bit Installer: https://nodejs.org/dist/v6.9.0/node-v6.9.0.pkg
macOS 64-bit Binary: https://nodejs.org/dist/v6.9.0/node-v6.9.0-darwin-x64.tar.gz
Linux 32-bit Binary: https://nodejs.org/dist/v6.9.0/node-v6.9.0-linux-x86.tar.xz
Linux 64-bit Binary: https://nodejs.org/dist/v6.9.0/node-v6.9.0-linux-x64.tar.xz
Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v6.9.0/node-v6.9.0-linux-ppc64le.tar.xz
SmartOS 32-bit Binary: https://nodejs.org/dist/v6.9.0/node-v6.9.0-sunos-x86.tar.xz
SmartOS 64-bit Binary: https://nodejs.org/dist/v6.9.0/node-v6.9.0-sunos-x64.tar.xz
ARMv6 32-bit Binary: https://nodejs.org/dist/v6.9.0/node-v6.9.0-linux-armv6l.tar.xz
ARMv7 32-bit Binary: https://nodejs.org/dist/v6.9.0/node-v6.9.0-linux-armv7l.tar.xz
ARMv8 64-bit Binary: https://nodejs.org/dist/v6.9.0/node-v6.9.0-linux-arm64.tar.xz
Source Code: https://nodejs.org/dist/v6.9.0/node-v6.9.0.tar.gz
Other release files: https://nodejs.org/dist/v6.9.0/
Documentation: https://nodejs.org/docs/v6.9.0/api/
SHASUMS
1 | -----BEGIN PGP SIGNED MESSAGE----- |