🇰🇷 한글 설명
Node.js 10.9.0 미만 버전의 모든 버전에서 Buffer.alloc() 함수가 초기화되지 않은 메모리를 반환할 수 있는 인자 처리 결함이 존재합니다. 세 번째 인자인 인코딩 값에 숫자를 전달할 경우 내부 fill 메서드가 이를 시작 위치로 오해하여 발생하며, 이를 통해 민감한 정보가 포함된 메모리 블록이 노출될 수 있습니다.
💡 쉬운 설명
메모리를 깨끗하게 비우고 사용해야 하는 기능이 실수로 이전 데이터가 남아있는 메모리를 그대로 내어주는 버그입니다. 공격자가 이 점을 이용하면 컴퓨터 메모리에 남아있던 비밀번호나 개인정보를 훔쳐볼 수 있습니다.
🇺🇸 원문 (English)
In all versions of Node.js 10 prior to 10.9.0, an argument processing flaw can cause `Buffer.alloc()` to return uninitialized memory. This method is intended to be safe and only return initialized, or cleared, memory. The third argument specifying `encoding` can be passed as a number, this is misinterpreted by `Buffer's` internal "fill" method as the `start` to a fill operation. This flaw may be abused where `Buffer.alloc()` arguments are derived from user input to return uncleared memory blocks that may contain sensitive information.
📍 영향받는 시스템
Node.js 10.x (10.9.0 미만 버전)
⚔️ 공격 벡터
사용자 입력값이 Buffer.alloc()의 세 번째 인자로 전달될 때 숫자를 입력하여 초기화 과정을 우회함
🛡️ 대응 방법
Node.js를 10.9.0 버전 이상으로 업데이트하십시오.
🔧 검증 코드
명령어 결과로 v10.0.x부터 v10.8.x 사이의 버전이 출력되면 취약한 상태입니다.
node -v | grep -E '^v10\.(0|1|2|3|4|5|6|7|8)\.'