修正されたセキュリティ脆弱性
CVE / CVSSベーススコア
CVE-2021-46668 / 5.5
CVE-2021-46665 / 5.5
CVE-2021-46664 / 5.5
CVE-2021-46663 / 5.5
CVE-2021-46661 / 5.5
CVE-2021-46659 / 5.5
注目すべき変更点
● innodb_ft_cache_sizeおよびinnodb_ft_total_cache_sizeの最大値が
80000000から1099511627776(1 TB)に変更されました。
● Galeraが25.3.35に更新されました。
修正された問題
<データ損失が発生する可能性があるもの>
● 一部のINFORMATION_SCHEMAテーブルの列は、SQL標準に準拠していないDEFAULT句で
誤って宣言されています。
・したがって、sql_mode=EMPTY_STRING_IS_NULLが設定されている場合、
CREATE TABLE .. SELECT .. FROM INFORMATION_SCHEMA...のようなクエリでは、
次のようなレプリケーションエラーが発生する可能性があります。
Error 'Invalid default value for 'TABLE_NAME'' on query. Default database: 'test'. Query: 'CREATE TABLE `t1` (`TABLE_NAME` varchar(64) CHARACTER SET utf8 NOT NULL DEFAULT ''
● ALTER TABLEステートメントがINPLACEアルゴリズムを使用して
MyISAMまたはAriaのテーブルのインデックスの順序を変更すると、
テーブルが破損する可能性があります。
● CREATE OR REPLACE SEQUENCEがバイナリログに書き込まれる時、ステートメントは
DDLとしてフラグが立てられません。これにより、並列レプリケーションが有効に
なっている場合、レプリカサーバーは安全でない方法でステートメントを実行します。
<ハングまたはクラッシュを引き起こす可能性があるもの>
● FULLTEXTインデックスがALGORITHM=INPLACEでInnoDBテーブルに追加され、
インデックス付き列がtis620文字セットを使用する場合、サーバーは
セグメンテーション違反(シグナル11)でクラッシュする可能性があります。
● 弱いメモリモデルを使用するARMアーキテクチャでMariaDBサーバーが使用されると、
内部ハッシュテーブルの実装により、サーバーがセグメンテーション違反(シグナル11)
でクラッシュする可能性があります。
● wsrep_sst_method=mariabackupおよびinnodb_force_recovery=1がGaleraを
搭載したMariaDB Enterprise Clusterで設定されている場合、ジョイナーノードは
SSTの実行に失敗します。
・SSTログには、障害に関連する次のメッセージが含まれます。
mariabackup: The option "innodb_force_recovery" should only be used with "--prepare".
mariabackup: innodb_init_param(): Error occurred.
● --stream=xbstreamが設定されている場合、MariaDB Enterprise Backupは、
デッドロックのためにロック取得でハングする可能性があります。
● ストアドプロシージャがset関数を含むクエリで定義されており、set関数の唯一の
引数がマージ可能ビューの列、派生テーブル、またはCTEへの外部参照である場合、
ストアドプロシージャを2回実行するとサーバーがクラッシュする可能性があります。
● ビューまたはCTEでサブクエリを使用する特定のクエリに対して派生テーブルが
作成されると、サーバーがセグメンテーション違反(シグナル11)でクラッシュする
可能性があります。
● ストアドプロシージャがカーソルを使用して内部の一時テーブルを必要とする
クエリ(ORDER BY句を含むクエリなど)を実行すると、セグメンテーション違反
(シグナル11)が原因でサーバーがクラッシュする可能性があります。
● CTEまたは派生テーブルがクエリで使用されていない場合、
サーバーがクラッシュする可能性があります。
● log_slow_verbosity = 'explain'が設定され、派生テーブルを参照するクエリが
実行されると、クエリの実行プランをスロークエリログに書き込んでいる時に
サーバーがクラッシュする可能性があります。
● ストアドプロシージャまたはプリペアドステートメントを使用して、
GEOMETRY列を別のデータ型と比較する結合を実行するクエリを実行する場合、
ストアドプロシージャまたはプリペアドステートメントを2回実行すると、
サーバーがクラッシュする可能性があります。
● MariaDB Enterprise Clusterでは、wsrep_cluster_addressが不明なアドレスに
設定され、wsrep_slave_threadsが0に設定されている場合、サーバーがクラッシュします。
● システムバージョン管理されたテーブルがcharacter_set_server=utf8mb4
およびcollation_server=utf8mb4_unicode_1400_ciで作成されると、
サーバーがクラッシュする可能性があります。
● システムバージョン管理されたテーブルがSYSTEM_TIMEによってパーティション化
されている場合、DELETE FROM .. PARTITION(..)を実行すると、サーバーが
クラッシュします。
● 次の条件が満たされた場合、プリペアドステートメントを2回実行すると、
サーバーがクラッシュする可能性があります。
・in_predicate_conversion_thresholdシステム変数は、ある値nに設定する
必要があります。
・クエリには、n個を超える文字列リテラルを含むIN(...)句が含まれている
必要があります。
・クエリには文字セット変換が必要です。
<予期しない動作を引き起こす可能性があるもの>
● マルチバイト文字セットが使用される場合、TINYTEXT列の最後の文字が
切り捨てられる可能性があります。これにより、それは疑問符('?)として
表示されます。
● TIME列でALLキーワードを使用するサブクエリは、間違った結果を生成します。
● DATE列でALLキーワードを使用するサブクエリは、間違った結果を生成します。
● 浮動小数点リテラルが科学的記数法を使用して定義されており、トークンに
特定の特殊文字も含まれている場合、パーサーは浮動小数点値を誤って解析し、
それをリクエストから完全に削除します。
● 二重カプセル化されたCTEクエリが、CTEクエリでエイリアス化されたテーブルを
読み取る関数を呼び出すと、サーバーはER_NO_SUCH_TABLEエラーコードのエラーを
誤って発生させます。
● DELETEステートメントのサブクエリでCTEが使用されると、サーバーは
ER_NO_DB_ERRORエラーコードのエラーを誤って発生させます。
● Galeraを搭載したMariaDB Enterprise ClusterがSSTを実行すると、
SSTスクリプトは、その目的でssl_capathを使用する代わりに、TLS CA証明書の
ディレクトリへのパスとしてssl_caを誤って読み取ろうとします。
● Galeraを搭載したMariaDB Enterprise ClusterがSSTを実行する場合、
SSTスクリプトは常にlog_bin_indexを正しく解釈するとは限りません。
● インデックスがORDER BY .. LIMITクエリに使用される場合、オプティマイザは
Range Checked for Each Record最適化を無効にしません。
● optimizer_switch='index_merge_sort_intersection=on'が設定されている
場合、クエリ条件では完全なインデックスをスキャンする必要があるため、
オプティマイザは役に立たないインデックスをマージすることを誤って選択する
可能性があります。
● versionシステム変数が設定されている場合、MariaDB Connector/Cと
mariadbクライアントは、MariaDBサーバーの拡張メタデータを適切に解釈しません。
そのため、一部のSHOW ..の結果が右揃えになる可能性があります。
● INSERT .. SELECTステートメントが同じテーブルから選択して同じテーブルに
挿入すると、行が2回カウントされます。そのため、行番号がエラーメッセージで
誤って報告される可能性があります。
● レプリカサーバーのリレーログがローテーションされると、
SHOW SLAVE STATUSのSeconds_Behind_Masterは、
非常に高い誤った値を一時的に表示する可能性があります。
● information_schema.STATISTICSテーブルのcollation列が誤ってNULLとして
読み取られます。
● 結合が大文字と小文字を区別しない照合を使用する式とバイナリ照合を
使用するENUM列の比較を実行すると、比較が誤った照合を使用するため、
結果が正しくなくなる可能性があります。
● innodb_buffer_pool_sizeがSET GLOBALで動的に変更されると、
InnoDBは起動時に強制される最小値を強制しません。その結果、
innodb_buffer_pool_chunk_sizeのいくつかの値を持つバッファプールが
非常に小さくなる可能性があります。
● 一部のクエリ(UNION ALLを使用するクエリなど)でDATABASE()関数が
使用されると、データベース名の最大文字数が64文字であっても、
データベース名が34文字に切り捨てられる可能性があります。
● --skip-symbolic-linksまたは--disable-symbolic-linksが
設定されている場合など、--symbolic-linksオプションが無効になっている場合でも、
テーブルにDATA DIRECTORYオプションがある場合、InnoDBでは
シンボリックリンクと.islファイルを作成できます。
● CREATE TABLE t1 LIKE t2が実行され、t2テーブルがMyISAMストレージエンジン
またはAriaストレージエンジンを使用するパーティションテーブルであり、
パーティションにDATA DIRECTORYオプションが定義されている場合、
その操作はファイルシステムエラーで失敗します。
● sql_mode=ONLY_FULL_GROUP_BYが設定されている場合、
一部のウィンドウ関数はER_MIX_OF_GROUP_FUNC_AND_FIELDSエラーコードで
誤ってエラーを発生させます。
● CREATE TABLE .. AS ..ステートメントでCTEがUNIONとともに使用されると、
サーバーはER_NO_DB_ERRORエラーコードのエラーを誤って発生させます。
● サブクエリからの値を使用してJSON_COMPACT関数が呼び出された場合、
その出力が常にJSONデータ型として返されるとは限りません。
● システムバージョン管理されたテーブルが``LIMIT句を使用して
SYSTEM_TIME`でパーティション化されている場合、CHECK TABLEは
誤ってエラーを返す可能性があります。
● WITH ROLLUPを使用するクエリでは、ラテラル派生最適化が無効になりません。
これにより、GROUP BYを使用するクエリが誤った結果を返します。
● optimizer_switch='split_materialized=on'が設定されている場合、
分割最適化を使用するクエリは間違った結果を返す可能性があります。
● 行がInnoDBテーブルから削除され、その後同じキーを持つ新しい行が
別のトランザクションによってテーブルに挿入されると、InnoDBのMVCCコードは、
変更を確認する必要があるトランザクションから新しい行を誤って非表示にする
可能性があります。
・その結果、クエリは同じキーの別の新しい行を挿入しようとする可能性があり、
その結果、ER_DUP_ENTRYエラーコードでエラーが発生します。
・レプリカサーバーでslave_parallel_modeが'optimistic'または
'aggressive'に設定されている場合、SHOW REPLICA STATUSで
次のエラーが発生する可能性があります。
Last_Errno: 1062
Last_Error: Error 'Duplicate entry 'VALUE' for key 'KEY_NAME'' on query. Default database: 'DATABASE_NAME'. Query: 'INSERT INTO ..'
<インストールとアップグレード>
● wsrep_sst_method=mariabackupが設定されている時に、
MariaDB Enterprise Backupが手動でアップグレードされない場合、
MariaDB Enterprise Server 10.4にアップグレードした後に
MariaDB Enterprise ClusterのSSTが失敗する可能性がありました。
● mysql.AddGeometryColumnストアドプロシージャと
mysql.DropGeometryColumnストアドプロシージャが古いデフォルトの
DEFINER = 'root@localhost'を使用する場合、mariadb-upgradeは、
新しいデフォルトのDEFINER = 'mariadb.sys@localhost'を使用するように
それらを変更しません。
インターフェースの変更
● ER_VERS_NOT_ALLOWEDエラーコードが追加されました。
● innodb_buffer_pool_sizeシステム変数の最小値が5242880から2097152に
変更されました。
● innodb_ft_cache_size動的システム変数がNoからYesに変更されました。
● innodb_ft_cache_sizeシステム変数の最大値が80000000から1099511627776に
変更されました。
● innodb_ft_total_cache_size動的システム変数がNoからYesに変更されました。
● innodb_ft_total_cache_sizeシステム変数の最大値が1600000000から
1099511627776に変更されました。
● mysql_upgrade --check-if-upgrade-is-neededコマンドラインオプションが
追加されました。
● mysqld --rocksdb-ignore-datadic-errorsコマンドラインオプションが
追加されました。
● rocksdb_ignore_datadic_errorsシステム変数が追加されました。
プラットフォーム
エンタープライズライフサイクルに合わせて、MariaDB Enterprise Server 10.3.34-15は
以下のプラットフォーム用に提供されています:
・CentOS 7 (x86_64)
・Debian 9 (x86_64 / ARM64)
・Debian 10 (x86_64 / ARM64)
・Microsoft Windows (x86_64) (MariaDB Enterprise Clusterを除く)
・Red Hat Enterprise Linux 7 (x86_64)
・Red Hat Enterprise Linux 8 (x86_64 / ARM64)
・SUSE Linux Enterprise Server 12 (x86_64)
・SUSE Linux Enterprise Server 15 (x86_64 / ARM64)
・Ubuntu 18.04 (x86_64 / ARM64)
・Ubuntu 20.04 (x86_64 / ARM64)
MariaDB Enterprise Server 10.3.34-15のリリースノート(MariaDB社ウェブサイト):
https://mariadb.com/docs/release-notes/mariadb-enterprise-server-10-3/10-3-34-15/
MariaDBプロダクト・サポート・サービス
MariaDBプロダクト・サポート・サービスは、MariaDBおよびその関連製品をご利用されているお客様へ、必要なソフトウェアや専門的なサポートなどを提供するサービスです。