Vitess
v23.0.8Storage & DataA security-focused maintenance release fixes SQL injection and authorization vulnerabilities while tightening SQL parsing, table ACL, character-set, and `VExplain` enforcement. Changes to `sql_mode` and connection settings may require operator configuration updates.
Action needed (7)
securityGlobal
SETvariable-name SQL injection fix, GHSA-m282-7w35-g77mFixes GHSA-m282-7w35-g77m, which allowed SQL injection through a global
SETvariable name.securityDate and time literal SQL injection fix, GHSA-9248-hccp-qf8f
Fixes GHSA-9248-hccp-qf8f, which allowed SQL injection through
DATE,TIME, andTIMESTAMPliterals.security
SET_VARsession variable SQL injection fix, GHSA-9rx3-8pwm-c228Fixes GHSA-9rx3-8pwm-c228, which allowed SQL injection through a session variable value carried in a
SET_VARhint.securityTrailing-comment parsing and table ACL fix, GHSA-pfg5-ppc7-ff45
Fixes GHSA-pfg5-ppc7-ff45, which allowed SQL to be hidden from parsing and table ACL checks in a trailing comment.
securityMalformed numeric bind-variable SQL injection fix, GHSA-xf67-9r78-xv82
Fixes GHSA-xf67-9r78-xv82, which allowed SQL injection through malformed numeric bind variables.
breakingRejection of empty table option names
Empty charset, collation, engine, and partition tablespace names are now rejected.
breakingQuoted
ENCRYPTIONvaluesENCRYPTIONnow requires a quoted value.
Check if affected (14)
securityTable ACL enforcement for privileged callers, GHSA-w6mx-2f8x-pqf4
Applicability is not stated in the release notes.
A caller with reader, writer, and admin roles across every table can now run
DO,REPAIR,OPTIMIZE, and partially parsedCREATE TABLEstatements under the table ACL checks. This fixes GHSA-w6mx-2f8x-pqf4.securityRestricted MySQL connection character sets, GHSA-c28j-qmfx-4gxp
Applies if you configure
--db-charset.--db-charsetand other MySQL connection character-set configuration points no longer acceptsjis,cp932,gb18030,gbk,big5,ucs2,utf16,utf16le, orutf32, whether specified as character sets or collations. This fixes GHSA-c28j-qmfx-4gxp.securityRead-only
VExplainstatement enforcement, GHSA-c2r8-grjp-w8c2Applies if you use
VExplain.For the affected modes, VTAdmin accepts only a
SELECTwithoutINTO, sequence next-values, or advisory lock functions, and runs it in a read-only transaction that is always rolled back. This fixes GHSA-c2r8-grjp-w8c2.security
VStreamLastPKSQL injection fix, GHSA-73pp-99vw-h5g8Applies if
VStreamruns.Fixes GHSA-73pp-99vw-h5g8, which allowed SQL injection through
VStreamLastPKvalues.security
VStreamfilter SQL injection fix, GHSA-92cc-q2h6-m2vrApplies if
VStreamruns.Fixes GHSA-92cc-q2h6-m2vr, which allowed SQL injection through
convert_tz()arguments in aVStreamfilter.securityOnline DDL table-name SQL injection fix, GHSA-8w3p-4xg5-rm9w
Applies if Online DDL runs.
Fixes GHSA-8w3p-4xg5-rm9w, which allowed SQL injection through table names in Online DDL statements.
securityQuery annotation caller-ID SQL injection fix, GHSA-x56j-8c72-5xgg
Applies if you configure
--queryserver-config-annotate-queries.Fixes GHSA-x56j-8c72-5xgg, which allowed SQL injection through the caller ID in query annotations configured by
--queryserver-config-annotate-queries.security
VTAdmincross-site state-change request fix, GHSA-3fr2-mqr5-r5x5Applies if
VTAdminruns.Fixes GHSA-3fr2-mqr5-r5x5.
VTAdminAPI routes that change cluster state no longer accept cross-siteGETrequests.securityVTAdmin
ReloadSchemaShardRBAC enforcement, GHSA-78h7-x6qm-xpr8Applies if you use
ReloadSchemaShard.Fixes GHSA-78h7-x6qm-xpr8. VTAdmin's
ReloadSchemaShardnow checks RBAC.breaking
VTGatesql_modeassignment semanticsApplies if
VTGateruns.VTGatenow implements MySQL 8.xsql_modeassignment semantics and validates every assignment against them.breakingUnsupported
sql_modeassignment rejectionApplies if you configure
sql_mode.Unsupported modes are rejected even when the underlying MySQL server already uses the mode and the
SETwould not change its value.breakingMySQL errors for invalid
sql_modevaluesApplies if you configure
sql_mode.Unknown mode names and invalid numeric values now return MySQL errors
ER_WRONG_VALUE_FOR_VAR(1231) andER_UNSUPPORTED_SQL_MODE(3899) for mode bits removed in MySQL 8.0.breaking
VTTabletsql_modevalidationApplies if
VTTabletruns.VTTabletapplies the samesql_modevalidation at its entry points and returns the same errors.breakingInherited session
sql_modefilteringApplies if you configure
sql_mode.Every MySQL connection created by Vitess strips modes that change SQL text interpretation from the session
sql_modeinherited from the server's global value.
All 7 other recorded changesvalue 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.
A weekly email arrives when a release needs action. Like the security patches and breaking changes in this release.