🔍 CVE-2026-44635

7.5
CVSS Score
HIGH
2026-05-27
2026-10-26 11:10
✅ 완료

🇰🇷 한글 설명

Kysely 0.26.0~0.28.16 버전의 DefaultQueryCompiler.visitJSONPathLeg 함수가 JSON 경로 메타문자(., [, ], *, **, ?)를 이스케이프하지 않아, 공격자가 제어 가능한 입력을 eb.ref(col, '->$').key(input) 또는 .at(input)에 흘려보낼 수 있습니다. 이를 통해 개발자가 의도하지 않은 JSON 서브필드에 대한 읽기(및 업데이트 문에서는 쓰기) 접근이 가능해집니다.

💡 쉬운 설명

Kysely 라이브러리에서 JSON 데이터를 처리할 때, 특수 문자가 제대로 처리되지 않아 공격자가 의도한 데이터 이상의 정보에 접근할 수 있습니다. 예를 들어 사용자 프로필 정보만 봐야 할 권한이 있어도 다른 사용자의 정보까지 볼 수 있게 됩니다.

🇺🇸 원문 (English)

Kysely is a type-safe TypeScript SQL query builder. From 0.26.0 to 0.28.16, DefaultQueryCompiler.visitJSONPathLeg does not escape JSON-path metacharacters (., [, ], *, **, ?). When attacker-controlled input flows into eb.ref(col, '->$').key(input) or .at(input) — including type-safe code where the JSON column is shaped like Record<string, T> so K extends string is the inferred type — every dot becomes a path-leg separator, letting an attacker traverse from the intended key into sibling and child fields the developer never meant to expose. The result is read access (and, in update statements, write access) to JSON sub-fields outside the intended scope across MySQL, PostgreSQL ->$/->>$, and SQLite. This vulnerability is fixed in 0.28.17.

📍 영향받는 시스템

Kysely 0.26.0~0.28.16 (MySQL, PostgreSQL, SQLite)

⚔️ 공격 벡터

공격자가 JSON 경로 쿼리에 특수문자(., [, ], *, **, ?)를 포함한 입력을 주입하여 의도되지 않은 JSON 필드 접근

🛡️ 대응 방법

Kysely를 0.28.17 이상으로 업그레이드

🔧 검증 코드

명령어가 버전을 출력하면 취약 버전 설치됨, 출력 없으면 안전한 버전 또는 미설치 상태

Shell / Script
npm list kysely --depth=0 2>/dev/null | grep -E 'kysely@(0\.2[6-8]\.[0-9]+|0\.28\.(1[0-6]|[0-9]))' || echo 'Safe or not installed'

📊 CVSS Vector String

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

💻 영향받는 소프트웨어

MySQL