🔍 CVE-2024-22017

7.3
CVSS Score
HIGH
2024-03-19
2026-06-17 07:10
✅ 완료

🇰🇷 한글 설명

setuid() 호출 전에 초기화된 libuv의 io_uring 작업은 권한 드롭에 영향을 받지 않아 실제 권한 포기가 작동하지 않습니다. 프로세스가 보안 제한을 우회하여 여전히 권한 있는 작업을 수행할 수 있게 됩니다. Node.js 18.18.0, 20.4.0, 21 버전 이상이 영향을 받습니다.

💡 쉬운 설명

Node.js 애플리케이션이 권한을 포기하려고 해도 내부적으로 높은 권한이 유지되는 문제입니다. 이는 보안이 낮아진 사용자 권한으로 실행되는 프로세스가 관리자 권한 작업을 할 수 있게 합니다.

🇺🇸 원문 (English)

setuid() does not affect libuv's internal io_uring operations if initialized before the call to setuid(). This allows the process to perform privileged operations despite presumably having dropped such privileges through a call to setuid(). This vulnerability affects all users using version greater or equal than Node.js 18.18.0, Node.js 20.4.0 and Node.js 21.

📍 영향받는 시스템

Node.js v18.18.0+, v20.4.0+, v21 (모든 이후 버전)

⚔️ 공격 벡터

setuid() 호출로 권한 강등 후 libuv io_uring 인터페이스를 통한 권한 있는 작업 수행

🛡️ 대응 방법

Node.js를 패치된 버전으로 업데이트하거나 io_uring 사용 비활성화 필요

🔧 검증 코드

Node.js 버전이 18.18.0 이상, 20.4.0 이상, 또는 21 이상이면 'Vulnerable'이 출력되므로 즉시 업데이트 필요

Shell / Script
node --version | awk -F'[v.]' '{if(($2==18 && $3>=18) || ($2==20 && $3>=4) || $2>=21) print "Vulnerable"; else print "Safe"}'

📊 CVSS Vector String

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

💻 영향받는 소프트웨어

Node.js