Vitess
v23.0.8Storage & DataSQLインジェクションと認可に関する脆弱性を修正し、SQL の解釈、文字セット、解析、テーブル ACL、`VExplain` の実行条件を厳格化した保守リリースです。`sql_mode` や接続文字セットなどの設定によっては、運用環境の構成変更が必要になります。
要対応 (7)
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 の解析と ACL チェック修正
末尾コメントに隠された SQL が解析とテーブル ACL のチェックをすり抜ける問題を修正しました。GHSA-pfg5-ppc7-ff45 に対応しています。
security数値バインド変数の処理修正
形式不正な数値バインド変数を経由した 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接続文字セットの許可範囲変更
--db-charsetを設定している場合に適用されます。--db-charsetを含む MySQL 接続の文字セット設定で、sjis、cp932、gb18030、gbk、big5、ucs2、utf16、utf16le、utf32が、文字セット名でも照合順序名でも受け付けられなくなりました。GHSA-c28j-qmfx-4gxp に対応しています。security
VExplainの実行文とトランザクション制限VExplainを使用している場合に適用されます。対象のモードで
VTAdminが受け付けるのは、INTO、シーケンスの next-value、アドバイザリロック関数を含まないSELECTだけになりました。実行は読み取り専用トランザクションで行われ、常にロールバックされます。GHSA-c2r8-grjp-w8c2 に対応しています。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
VTAdminの状態変更 API におけるクロスサイトGET対策VTAdminを実行している場合に適用されます。クラスタ状態を変更する
VTAdminAPI ルートが、サイトをまたぐ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割り当て semantics を実装し、すべての割り当てを検証するようになりました。breaking
IGNORE_SPACEとHIGH_NOT_PRECEDENCEの拒否sql_modeを設定している場合に適用されます。IGNORE_SPACEとHIGH_NOT_PRECEDENCEも拒否されるようになりました。breaking
sql_modeの不正値に対する MySQL 互換エラーsql_modeを設定している場合に適用されます。不明なモード名と無効な数値には、MySQL と同じエラーが返されます。通常の不正値には
ER_WRONG_VALUE_FOR_VAR(1231)、MySQL 8.0 で削除されたモードのビットにはER_UNSUPPORTED_SQL_MODE(3899) が使われます。breaking
VTTabletのsql_mode検証VTTabletを実行している場合に適用されます。VTTabletでも各エントリポイントで同じ検証を行い、同じエラーを返すようになりました。breaking接続時の
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.
対応が必要なリリースが出たときに、週次メールでお知らせします。 今回のセキュリティパッチと破壊的変更も、その一例です。