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空の名前を持つSQL指定を拒否
空の文字セット名、照合順序名、エンジン名、パーティション用テーブルスペース名を拒否します。対象は
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にexecuteアクションを要求VExplainを使用し、executeを設定していない場合に適用されます。対象のモードでは、
VExplainリソースに新しいexecuteアクションが必要になりました。GHSA-c2r8-grjp-w8c8 に対応しています。security
VStreamのLastPK値に起因するSQLインジェクションを修正VStreamを実行している場合に適用されます。VStreamのLastPK値を介したSQLインジェクションを修正しました。GHSA-73pp-99vw-h5g8 に対応しています。security
VStreamフィルターのconvert_tz()引数を修正VStreamを実行している場合に適用されます。VStreamのフィルターでconvert_tz()引数を介してSQLインジェクションが発生する問題を修正しました。GHSA-92cc-q2h6-m2vr に対応しています。securityOnline DDLのテーブル名処理を修正
Online DDLを実行している場合に適用されます。Online DDL文のテーブル名を介したSQLインジェクションを修正しました。GHSA-8w3p-4xg5-rm9w に対応しています。
securityクエリー注釈の caller ID 処理を修正
--queryserver-config-annotate-queriesを有効にしている場合に適用されます。クエリー注釈の caller ID を介したSQLインジェクションを修正しました。対象は
--queryserver-config-annotate-queriesです。GHSA-x56j-8c72-5xgg に対応しています。security末尾コメントによるテーブルACLチェック回避を修正
table ACLチェックを使用している場合に適用されます。末尾コメント内に隠されたSQLが解析とテーブルACLチェックを回避する問題を修正しました。GHSA-pfg5-ppc7-ff45 に対応しています。
security
VTAdminの状態変更APIに対するクロスサイトGETを修正VTAdminを実行している場合に適用されます。クラスタ状態を変更する
VTAdminAPIルートが、クロスサイトのGETリクエストを受け付けていた問題を修正しました。GHSA-3fr2-mqr5-r5x5 に対応しています。security
ReloadSchemaShardのRBACチェックを修正VTAdminを実行している場合に適用されます。VTAdminのReloadSchemaShardでRBACチェックが行われていなかった問題を修正しました。GHSA-78h7-x6qm-xpr8 に対応しています。breaking
IGNORE_SPACEとHIGH_NOT_PRECEDENCEの拒否sql_modeを設定している場合に適用されます。sql_modeでIGNORE_SPACEとHIGH_NOT_PRECEDENCEも拒否されます。
その他の記録済み変更 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
対応が必要なリリースが出たときに、週次メールでお知らせします。 今回のセキュリティパッチと破壊的変更も、その一例です。