Vitess
v24.0.5Storage & DataA security-focused maintenance release hardens SQL parsing, authorization, and connection handling. It also introduces operator-visible restrictions and migration actions, especially for SQL modes, character sets, and access controls.
Action needed (5)
securityGlobal
SETvariable-name injection fix, GHSA-m282-7w35-g77mVitess fixes SQL injection through a global
SETvariable name. This addresses GHSA-m282-7w35-g77m.securityDate and time literal injection fix, GHSA-9248-hccp-qf8f
Vitess fixes SQL injection through
DATE,TIME, andTIMESTAMPliterals. This addresses GHSA-9248-hccp-qf8f.security
SET_VARsession-value injection fix, GHSA-9rx3-8pwm-c228Vitess fixes SQL injection through a session variable value carried in a
SET_VARhint. This addresses GHSA-9rx3-8pwm-c228.securityMalformed numeric bind variable injection fix, GHSA-xf67-9r78-xv82
Vitess fixes SQL injection through malformed numeric bind variables. This addresses GHSA-xf67-9r78-xv82.
breakingEmpty
CHARACTER SET,COLLATE,ENGINE, andTABLESPACEnames rejectedVitess now rejects empty
CHARACTER SET,COLLATE,ENGINE, andTABLESPACEnames.
Check if affected (10)
securityRestricted MySQL connection character sets
Applies if you configure
--db-charset.Vitess no longer accepts
sjis,cp932,gb18030,gbk,big5,ucs2,utf16,utf16le, orutf32in--db-charsetor other MySQL connection character set configuration points. This addresses GHSA-c28j-qmfx-4gxp.securityThe
VExplainexecuteaction requirementApplies if you use
VExplainand do not configureexecute.The affected modes now require the new
executeaction on theVExplainresource. This addresses GHSA-c2r8-grjp-w8c8.security
VStreamLastPKinjection fix, GHSA-73pp-99vw-h5g8Applies if you run
VStream.Vitess fixes SQL injection through
VStreamLastPKvalues. This addresses GHSA-73pp-99vw-h5g8.security
VStreamconvert_tz()injection fix, GHSA-92cc-q2h6-m2vrApplies if you run
VStream.Vitess fixes SQL injection through
convert_tz()arguments in aVStreamfilter. This addresses GHSA-92cc-q2h6-m2vr.securityOnline DDL table-name injection fix, GHSA-8w3p-4xg5-rm9w
Applies if you run
Online DDL.Vitess fixes SQL injection through table names in Online DDL statements. This addresses GHSA-8w3p-4xg5-rm9w.
securityQuery annotation caller-ID injection fix, GHSA-x56j-8c72-5xgg
Applies if you enable
--queryserver-config-annotate-queries.Vitess fixes SQL injection through the caller ID in query annotations controlled by
--queryserver-config-annotate-queries. This addresses GHSA-x56j-8c72-5xgg.securityTrailing-comment parsing and table ACL fix, GHSA-pfg5-ppc7-ff45
Applies if you use
table ACLchecks.Vitess fixes SQL that was hidden from parsing and table ACL checks in a trailing comment. This addresses GHSA-pfg5-ppc7-ff45.
security
VTAdmincross-siteGETrequest restriction, GHSA-3fr2-mqr5-r5x5Applies if you run
VTAdmin.VTAdminAPI routes that change cluster state no longer accept cross-siteGETrequests. This addresses GHSA-3fr2-mqr5-r5x5.securityRBAC enforcement for
VTAdminReloadSchemaShard, GHSA-78h7-x6qm-xpr8Applies if you run
VTAdmin.VTAdmin'sReloadSchemaShardnow checks RBAC. This addresses GHSA-78h7-x6qm-xpr8.breakingStricter
sql_modeassignment validationApplies if you configure
sql_mode.Vitess now rejects an unsupported
sql_modeeven when the underlying MySQL server already uses that mode and the assignment would not change its value.
All 15 other recorded changessecurity 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
A weekly email arrives when a release needs action. Like the security patches and breaking changes in this release.