
CVE-2017-11499 문서: Node.js에서 일정한 HashTable 시드로 인한 해시 플러딩 원격 DoS 취약점, 공격 벡터 분석 및 V8 스냅샷 비활성화를 통한 완화.
Node.js는 주어진 릴리스 버전에서 HashTable 시드가 일정했기 때문에 해시 플러딩 원격 DoS 공격에 취약했습니다. 이는 기본적으로 활성화된 V8 스냅샷으로 빌드되어 시작 시 초기에 무작위로 생성된 시드가 덮어쓰여졌기 때문입니다. 이 취약점을 보고해준 Google Project Zero의 Jann Horn에게 감사드립니다.
해시 플러딩 취약점의 일반적인 범주에 대해 여기에서 읽을 수 있습니다.
이 업데이트에서는 스냅샷이 기본적으로 비활성화되었습니다. vm.runInNewContext에 크게 의존하는 코드는 더 나은 해결책이 구현될 때까지 성능 저하가 발생할 가능성이 높습니다.
이는 높은 심각도의 취약점이며, 모든 활성 릴리스 라인(4.x, 6.x, 8.x)과 7.x 라인에 적용됩니다.
http.get()과 함께 사용되는 옵션 객체의 auth 필드를 숫자로 설정할 수 있는 애플리케이션 코드는 초기화되지 않은 버퍼가 인증 문자열로 생성/사용될 수 있습니다. 예를 들어:
const opts = require('url').parse('http://127.0.0.1:8180');
opts.auth = 1e3; // A number here triggers the bug
require('http').get(opts, res => res.pipe(process.stdout));
4.x 릴리스에서 auth 필드 구문 분석이 업데이트되어, http.get() 호출 시 auth 필드가 숫자이면 TypeError가 발생합니다.
이는 낮은 심각도의 결함이며 4.x 릴리스 라인에만 적용됩니다.