Vitess
v24.0.5Storage & DataSQL 구문 분석, 권한 검증, 연결 처리를 보완한 보안 중심 유지 보수 릴리스입니다. 사용하는 기능과 설정에 따라 허용되지 않는 값이 생기거나 권한 구성을 조정해야 하는 변경이 포함됩니다.
조치 필요 (5)
security전역
SET변수 이름 처리 보완전역
SET변수 이름을 통한 SQL 주입 문제를 수정했습니다. 관련 내용은 GHSA-m282-7w35-g77m에 해당합니다.security날짜 및 시간 리터럴 처리 보완
DATE,TIME,TIMESTAMP리터럴을 통한 SQL 주입 문제를 수정했습니다. 관련 내용은 GHSA-9248-hccp-qf8f에 해당합니다.security
SET_VAR세션 변수 값 처리 보완SET_VAR힌트에 담긴 세션 변수 값을 통한 SQL 주입 문제를 수정했습니다. 관련 내용은 GHSA-9rx3-8pwm-c228에 해당합니다.security숫자 바인드 변수 처리 보완
잘못된 숫자 바인드 변수를 통한 SQL 주입 문제를 수정했습니다. 관련 내용은 GHSA-xf67-9r78-xv82에 해당합니다.
breaking빈 이름이 지정된 테이블 속성 거부
빈 문자 집합, 정렬 규칙, 엔진 또는 파티션 테이블스페이스 이름이 거부됩니다. 대상 구문은
CHARACTER SET,COLLATE,ENGINE,TABLESPACE입니다.
영향 확인 (10)
securityMySQL 연결 문자 집합 제한
--db-charset를 설정하는 경우에 적용됩니다.--db-charset와 MySQL 연결 문자 집합을 설정하는 다른 위치에서sjis,cp932,gb18030,gbk,big5,ucs2,utf16,utf16le,utf32를 더 이상 사용할 수 없습니다. 관련 내용은 GHSA-c28j-qmfx-4gxp에 해당합니다.security
VExplain실행 권한 요구VExplain을 사용하면서execute를 설정하지 않은 경우에 적용됩니다.해당 모드에서는
VExplain리소스에 새execute동작이 필요합니다. 관련 내용은 GHSA-c2r8-grjp-w8c8에 해당합니다.security
VStreamLastPK처리 보완VStream을 실행하는 경우에 적용됩니다.VStream의LastPK값을 통한 SQL 주입 문제를 수정했습니다. 관련 내용은 GHSA-73pp-99vw-h5g8에 해당합니다.security
VStream필터 인자 처리 보완VStream을 실행하는 경우에 적용됩니다.VStream필터의convert_tz()인자를 통한 SQL 주입 문제를 수정했습니다. 관련 내용은 GHSA-92cc-q2h6-m2vr에 해당합니다.securityOnline DDL 테이블 이름 처리 보완
Online DDL을 실행하는 경우에 적용됩니다.Online DDL 문에서 테이블 이름을 통한 SQL 주입 문제를 수정했습니다. 관련 내용은 GHSA-8w3p-4xg5-rm9w에 해당합니다.
security쿼리 주석 호출자 ID 처리 보완
--queryserver-config-annotate-queries를 활성화하는 경우에 적용됩니다.쿼리 주석의 호출자 ID를 통한 SQL 주입 문제를 수정했습니다. 대상 설정은
--queryserver-config-annotate-queries이며, 관련 내용은 GHSA-x56j-8c72-5xgg에 해당합니다.security후행 주석의 SQL 검사 우회 차단
table ACL검사를 사용하는 경우에 적용됩니다.후행 주석에 숨겨져 파싱과 테이블 접근 제어 검사를 피하던 SQL 문제를 수정했습니다. 관련 내용은 GHSA-pfg5-ppc7-ff45에 해당합니다.
security
VTAdmin상태 변경 API 요청 제한VTAdmin을 실행하는 경우에 적용됩니다.클러스터 상태를 바꾸는
VTAdminAPI 경로가 사이트 간GET요청을 허용하던 문제를 수정했습니다. 관련 내용은 GHSA-3fr2-mqr5-r5x5에 해당합니다.security
ReloadSchemaShardRBAC 검사 보완VTAdmin을 실행하는 경우에 적용됩니다.VTAdmin의ReloadSchemaShard가 RBAC를 검사하지 않던 문제를 수정했습니다. 관련 내용은 GHSA-78h7-x6qm-xpr8에 해당합니다.breaking지원하지 않는
sql_mode설정 거부sql_mode를 설정하는 경우에 적용됩니다.지원하지 않는 모드를 설정하면, MySQL이 이미 같은 모드로 실행 중이고
SET이 값을 바꾸지 않더라도 거부됩니다.
그 외 기록된 변경 15건 전체security fixes 2 · value changes 7 · constraints 2 · defaults 2 · fixes 2
security fixes (2)
- A caller that is a reader, a writer and an admin in a table group covering every table (
"table_names_or_prefixes": ["%"]) holds every role on any table such a statement could touch, soDO,REPAIR,OPTIMIZEand a partially parsedCREATE TABLEnow run for it. - For those modes VTAdmin also accepts only a
SELECTwithoutINTO, sequence next-values or advisory lock functions
value changes (7)
- Unknown mode names and invalid numeric values fail with MySQL's own errors:
ER_WRONG_VALUE_FOR_VAR(1231), andER_UNSUPPORTED_SQL_MODE(3899) for the bits of modes removed in MySQL 8.0. - Constant values are validated at planning time, with no shard round trip.
- These checks are counted under the
undetermined-table-setTableNamelabel, inTableACLDenied, or inTableACLAllowedfor a caller with every role on every table. - A charset, collation, engine, tablespace or full-text parser name is now decoded when parsed, and written back as a single token when Vitess regenerates the statement
- Only known names stay bare.
COLLATE binaryin an expression is quoted.COLLATE 'utf8_bin'regenerates asCOLLATE utf8_bin
constraints (2)
- Numeric values decode against MySQL's
sql_modebitmask. ENCRYPTIONrequires a quoted value.
defaults (2)
- Every MySQL connection Vitess creates now strips the modes that change how SQL text is interpreted from the session
sql_modeit inherits from the server's global value. - The VExplain page in the web UI now defaults to
PLAN.
fixes (2)
- VTGate now implements MySQL 8.x's
sql_modeassignment semantics and validates every assignment against them: - VTTablet applies the same validation at its own entry points and returns the same errors
조치가 필요한 릴리스가 나왔을 때 주간 메일로 알려드립니다. 이번 릴리스의 보안 패치와 브레이킹 체인지 같은 것들입니다.