🇰🇷 한글 설명
MariaDB Connector/R2DBC 1.4.1 미만 버전에서 발생하는 취약점으로, 서버가 세션 중간에 문자 집합(character set)을 UTF-8이 아닌 다른 것으로 변경할 경우 데이터 인코딩 불일치가 발생합니다. 이로 인해 데이터가 조용히 손상되거나 이스케이프 처리가 무력화되어 보안 위협이 발생할 수 있습니다.
💡 쉬운 설명
데이터를 주고받는 규칙(문자 인코딩)이 중간에 바뀌면서 컴퓨터가 글자를 잘못 해석하게 되는 문제입니다. 이 과정에서 데이터가 깨지거나 보안 장치를 우회하는 공격이 가능해질 수 있습니다.
🇺🇸 원문 (English)
MariaDB Connector/R2DBC is a non-blocking MariaDB and MySQL client implemented in Java. Prior to 1.4.1, org.mariadb:r2dbc-mariadb encodes and decodes all character data under the assumption that the connection character set is UTF-8. A server can announce a mid-session change to character_set_client through the OK-packet session-state-tracking mechanism, including through SET NAMES executed by a stored routine or trigger, server configuration, or a hostile or man-in-the-middle server. If the new character set is not UTF-8, the driver continues to exchange UTF-8 while the server interprets the same bytes under a different encoding, causing silent data corruption and a client/server charset-confusion mismatch that can defeat byte-wise quoting or escaping. The fix accepts only utf8, utf8mb3, or utf8mb4 after initialization; any other value raises R2dbcNonTransientResourceException with SQLState 08000 and closes the connection. This issue is fixed in version 1.4.1.
📍 영향받는 시스템
MariaDB Connector/R2DBC (org.mariadb:r2dbc-mariadb) 1.4.1 미만 버전
⚔️ 공격 벡터
악의적인 서버 또는 중간자(MITM) 공격자가 세션 도중 character_set_client를 UTF-8이 아닌 다른 값으로 변경하여 데이터 혼란 유도
🛡️ 대응 방법
MariaDB Connector/R2DBC를 1.4.1 이상의 최신 버전으로 업데이트
🔧 검증 코드
출력된 결과에서 r2dbc-mariadb의 버전이 1.4.1 미만인지 확인
mvn dependency:list | grep r2dbc-mariadb