Vitess
v23.0.8Storage & DataSQL 삽입과 권한 검사를 강화한 보안 중심 유지보수 릴리스입니다. `sql_mode`, 문자 집합, 파싱, 테이블 ACL, `VExplain` 실행 정책이 바뀌어 일부 운영 환경에서는 설정 조정이 필요할 수 있습니다.
조치 필요 (7)
security전역
SET변수 이름 SQL 삽입 수정전역
SET변수 이름을 통한 SQL 삽입을 수정했습니다. GHSA-m282-7w35-g77m이 해결되었습니다.security날짜 및 시간 리터럴 SQL 삽입 수정
DATE,TIME,TIMESTAMP리터럴을 통한 SQL 삽입을 수정했습니다. GHSA-9248-hccp-qf8f가 해결되었습니다.security
SET_VAR세션 변수 값 SQL 삽입 수정SET_VAR힌트에 담긴 세션 변수 값을 통한 SQL 삽입을 수정했습니다. GHSA-9rx3-8pwm-c228이 해결되었습니다.security후행 주석 SQL의 파싱 및 ACL 검사 우회 수정
후행 주석에 숨겨져 파싱과 테이블 ACL 검사를 피하던 SQL을 수정했습니다. GHSA-pfg5-ppc7-ff45가 해결되었습니다.
security숫자 바인드 변수 SQL 삽입 수정
잘못된 형식의 숫자 바인드 변수를 통한 SQL 삽입을 수정했습니다. GHSA-xf67-9r78-xv82가 해결되었습니다.
breaking빈 이름 검증
빈 문자 집합, 정렬 규칙, 엔진 또는 파티션 테이블스페이스 이름을 거부합니다.
breaking
ENCRYPTION값 형식 검증ENCRYPTION에는 따옴표로 감싼 값만 지정할 수 있습니다.
영향 확인 (14)
security테이블 ACL 권한 판정 보완
적용 대상이 릴리스 노트에 명시되지 않았습니다.
{"table_names_or_prefixes": ["%"]}로 모든 테이블을 포함하는 테이블 그룹에서 읽기, 쓰기, 관리자 권한을 모두 가진 호출자는 해당 문장이 접근할 수 있는 모든 테이블의 역할을 보유한 것으로 처리됩니다. 따라서 이제DO,REPAIR,OPTIMIZE와 일부만 파싱된CREATE TABLE을 실행할 수 있습니다. 관련 설정은--queryserver-config-strict-table-acl과--queryserver-config-acl-exempt-acl입니다. GHSA-w6mx-2f8x-pqf4가 수정되었습니다.security허용되지 않는 MySQL 문자 집합 차단
이 변경은
--db-charset을 설정하는 경우에 적용됩니다.--db-charset을 비롯해 MySQL 연결 문자 집합을 설정하는 위치에서sjis,cp932,gb18030,gbk,big5,ucs2,utf16,utf16le,utf32를 문자 집합 이름이나 해당 정렬 규칙으로 지정할 수 없게 됩니다. GHSA-c28j-qmfx-4gxp가 수정되었습니다.security
VExplain쿼리 실행 제한이 변경은
VExplain을 사용하는 경우에 적용됩니다.해당 모드에서
VTAdmin은INTO, 시퀀스 다음 값 또는 자문 잠금 함수를 포함하지 않은SELECT만 허용합니다. 쿼리는 읽기 전용 트랜잭션에서 실행되며 항상 롤백됩니다. GHSA-c2r8-grjp-w8c2가 수정되었습니다.security
VStreamLastPK값 SQL 삽입 수정이 변경은
VStream이 실행 중인 경우에 적용됩니다.VStream의LastPK값을 통한 SQL 삽입을 수정했습니다. GHSA-73pp-99vw-h5g8가 해결되었습니다.security
VStream필터의convert_tz()SQL 삽입 수정이 변경은
VStream이 실행 중인 경우에 적용됩니다.VStream필터의convert_tz()인자를 통한 SQL 삽입을 수정했습니다. GHSA-92cc-q2h6-m2vr가 해결되었습니다.securityOnline DDL 테이블 이름 SQL 삽입 수정
이 변경은 Online DDL이 실행되는 경우에 적용됩니다.
Online DDL 문장의 테이블 이름을 통한 SQL 삽입을 수정했습니다. GHSA-8w3p-4xg5-rm9w가 해결되었습니다.
security쿼리 주석 호출자 ID SQL 삽입 수정
이 변경은
--queryserver-config-annotate-queries를 설정하는 경우에 적용됩니다.쿼리 주석의 호출자 ID를 통한 SQL 삽입을 수정했습니다.
--queryserver-config-annotate-queries를 사용할 때 발생할 수 있으며, GHSA-x56j-8c72-5xgg가 해결되었습니다.security
VTAdmin상태 변경 API의 사이트 간GET요청 차단이 변경은
VTAdmin이 실행 중인 경우에 적용됩니다.클러스터 상태를 바꾸는
VTAdminAPI 경로가 사이트 간GET요청을 허용하던 문제를 수정했습니다. GHSA-3fr2-mqr5-r5x5가 해결되었습니다.security
ReloadSchemaShardRBAC 검사 보완이 변경은
ReloadSchemaShard를 사용하는 경우에 적용됩니다.VTAdmin의ReloadSchemaShard가 RBAC를 검사하지 않던 문제를 수정했습니다. GHSA-78h7-x6qm-xpr8가 해결되었습니다.breaking
VTGate의sql_mode대입 검증이 변경은
VTGate가 실행 중인 경우에 적용됩니다.VTGate가 이제 MySQL 8.x의sql_mode대입 규칙을 구현하고, 모든 대입값을 해당 규칙에 따라 검증합니다.breaking지원하지 않는
sql_mode설정 거부이 변경은
sql_mode를 설정하는 경우에 적용됩니다.지원하지 않는 모드를 설정하면 MySQL에서 이미 같은 모드를 사용 중인 경우에도 거부됩니다. 값이 실제로 바뀌지 않는
SET도 예외가 아닙니다.breaking
sql_mode오류 처리 정합성 개선이 변경은
sql_mode를 설정하는 경우에 적용됩니다.알 수 없는 모드 이름과 잘못된 숫자값은 MySQL 자체 오류로 처리됩니다. 일반적인 잘못된 값에는
ER_WRONG_VALUE_FOR_VAR(1231), MySQL 8.0에서 제거된 모드 비트에는ER_UNSUPPORTED_SQL_MODE(3899)가 반환됩니다.breaking
VTTablet의sql_mode검증이 변경은
VTTablet이 실행 중인 경우에 적용됩니다.VTTablet도 자체 진입점에서 같은 검증을 적용하고 동일한 오류를 반환합니다.breakingMySQL 연결의 세션
sql_mode정리이 변경은
sql_mode를 설정하는 경우에 적용됩니다.Vitess가 생성하는 모든 MySQL 연결은 서버 전역값에서 물려받은 세션
sql_mode에서 SQL 텍스트 해석 방식을 바꾸는 모드를 제거합니다.
그 외 기록된 변경 7건 전체value changes 7
value changes (7)
- Numeric values decode against MySQL's
sql_modebitmask. - 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
- A quoted name is normalized.
- Only known names stay bare.
COLLATE binaryin an expression is quoted.
조치가 필요한 릴리스가 나왔을 때 주간 메일로 알려드립니다. 이번 릴리스의 보안 패치와 브레이킹 체인지 같은 것들입니다.