# Vitess v23.0.8

> Storage & Data · 2026-10-13

SQL 삽입과 권한 검사를 강화한 보안 중심 유지보수 릴리스입니다. `sql_mode`, 문자 집합, 파싱, 테이블 ACL, `VExplain` 실행 정책이 바뀌어 일부 운영 환경에서는 설정 조정이 필요할 수 있습니다.

## 조치 필요
- **[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`에는 따옴표로 감싼 값만 지정할 수 있습니다.

## 영향 확인
- **[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]** `VStream` `LastPK` 값 SQL 삽입 수정
  - 이 변경은 `VStream`이 실행 중인 경우에 적용됩니다.
  - `VStream`의 `LastPK` 값을 통한 SQL 삽입을 수정했습니다. `GHSA-73pp-99vw-h5g8`가 해결되었습니다.
- **[security]** `VStream` 필터의 `convert_tz()` SQL 삽입 수정
  - 이 변경은 `VStream`이 실행 중인 경우에 적용됩니다.
  - `VStream` 필터의 `convert_tz()` 인자를 통한 SQL 삽입을 수정했습니다. `GHSA-92cc-q2h6-m2vr`가 해결되었습니다.
- **[security]** Online 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`이 실행 중인 경우에 적용됩니다.
  - 클러스터 상태를 바꾸는 `VTAdmin` API 경로가 사이트 간 `GET` 요청을 허용하던 문제를 수정했습니다. `GHSA-3fr2-mqr5-r5x5`가 해결되었습니다.
- **[security]** `ReloadSchemaShard` RBAC 검사 보완
  - 이 변경은 `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`도 자체 진입점에서 같은 검증을 적용하고 동일한 오류를 반환합니다.
- **[breaking]** MySQL 연결의 세션 `sql_mode` 정리
  - 이 변경은 `sql_mode`를 설정하는 경우에 적용됩니다.
  - Vitess가 생성하는 모든 MySQL 연결은 서버 전역값에서 물려받은 세션 `sql_mode`에서 SQL 텍스트 해석 방식을 바꾸는 모드를 제거합니다.

## 그 밖에 기록된 변경
- 7 (value_changed 7)

[분석 자세히 보기](https://ratatosk.io/ko/releases/vitess/v23.0.8)

[원본 릴리스 노트](https://github.com/vitessio/vitess/releases/tag/v23.0.8)
