🔍 CVE-2024-21512

8.2
CVSS Score
HIGH
2024-05-29
2026-04-15 00:35
✅ 완료

🇰🇷 한글 설명

mysql2 패키지의 nestTables 옵션 사용 시 사용자 입력이 제대로 검증되지 않아 프로토타입 오염 공격에 취약합니다. 공격자가 악의적인 데이터베이스 필드명(__proto__, constructor 등)을 통해 애플리케이션의 프로토타입 체인을 오염시킬 수 있습니다.

💡 쉬운 설명

mysql2 라이브러리에서 데이터베이스로부터 받은 필드명을 검증하지 않아, 특수한 필드명이 포함된 악의적 데이터가 애플리케이션의 기본 동작을 변조할 수 있습니다. 이를 통해 인증 우회나 권한 상승이 가능합니다.

🇺🇸 원문 (English)

Versions of the package mysql2 before 3.9.8 are vulnerable to Prototype Pollution due to improper user input sanitization passed to fields and tables when using nestTables.

📍 영향받는 시스템

Node.js 환경의 mysql2 패키지 3.9.7 이하 버전 (nestTables 옵션 사용 시)

⚔️ 공격 벡터

nestTables를 사용하는 쿼리에서 데이터베이스로부터 반환되는 필드명에 __proto__, constructor, prototype 등을 삽입하여 프로토타입 오염 수행

🛡️ 대응 방법

mysql2를 3.9.8 이상으로 즉시 업그레이드하고, 데이터베이스 접근 권한을 최소화하며, 입력 검증 강화

🔧 검증 코드

출력된 버전이 3.9.8 이상이면 안전, 3.9.7 이하면 업그레이드 필요

Shell / Script
npm list mysql2 2>/dev/null | grep mysql2 | grep -oE '[0-9]+\.[0-9]+\.[0-9]+'

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:L

💻 영향받는 소프트웨어

MySQL