🇰🇷 한글 설명
flat 6.0.1 이하 버전의 unflatten() 함수에 자원 할당 제어가 되지 않는 취약점이 있습니다. 공격자는 a.4294967294와 같이 제한 없는 숫자 키를 가진 평탄화된 키를 제공하여 거대한 희소 배열을 생성할 수 있습니다. 이로 인해 forEach, 스프레드, JSON.stringify 등의 순회 과정에서 Node.js 이벤트 루프가 차단될 수 있습니다.
💡 쉬운 설명
flat이라는 자바스크립트 라이브러리의 데이터 복원 기능에 허점이 있습니다. 악의적인 입력 하나로 서버가 과도한 연산에 빠져 응답을 멈출 수 있습니다.
🇺🇸 원문 (English)
flat through 6.0.1 contains an uncontrolled resource allocation vulnerability in unflatten() that allows attackers to create huge sparse arrays via unbounded numeric keys. Attackers can supply flattened keys such as a.4294967294, causing iteration with forEach, spread or JSON.stringify to block the Node.js event loop.
📍 영향받는 시스템
flat npm 패키지 6.0.1 이하 버전을 사용하는 Node.js 애플리케이션
⚔️ 공격 벡터
flatten된 형태의 키(예: a.4294967294)를 포함한 악성 입력을 unflatten() 처리 대상에 전달하여 거대한 희소 배열을 생성시킴
🛡️ 대응 방법
flat 패키지를 6.0.2 이상 버전으로 업데이트하고, 외부 입력에 대한 키 길이 및 숫자 인덱스 범위를 검증
🔧 검증 코드
출력된 flat 버전이 6.0.1 이하이면 취약하며, 6.0.2 이상이면 패치된 상태입니다.
npm ls flat 2>/dev/null | grep -E 'flat@'