こんにちは。SIOS OSSエバンジェリスト/セキュリティ担当の面 和毅です。
08/09/2019にPostgreSQLの複数の脆弱性情報(Moderate: CVE-2019-10208, CVE-2019-10210, CVE-2019-10211, Low:CVE-2019-10209)とアップデート(PostgreSQL 11.5, 10.10, 9.6.15, 9.5.19, 9.4.24)が公開されました。今回はこれらの脆弱性の概要と、各ディストリビューションの対応について簡単にまとめてみます。
Priority/影響を受けるバージョン
Important
- CVE-2019-10208 (core server)
影響を受けるバージョン: 9.4, 9.5, 9.6, 10, 11
- CVSS v3 Base Score: 7.5
- Vector: AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
- CVE-2019-10209 (core server)
影響を受けるバージョン: 11
- CVSS v3 Base Score: 3.1
- Vector: AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:N/A:N
- CVE-2019-10210 (packaging)
影響を受けるバージョン: 9.4, 9.5, 9.6, 10, 11
- CVSS v3 Base Score: 6.7
- Vector: AV:L/AC:H/PR:L/UI:R/S:U/C:H/I:H/A:H
- CVE-2019-10211 (core server)
影響を受けるバージョン: 9.4, 9.5, 9.6, 10, 11
- CVSS v3 Base Score: 7.8
- Vector: AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
修正方法
各ディストリビューションの情報を確認してください。
CVE概要(詳細はCVEのサイトをご確認ください)
- http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-10208
- SECURITY DEFINER executionを実行している間にpg_tempのTYPEが任意のSQLを実行できてしまう。
- 適切なSECURITY DEFINER関数を与えた際に、攻撃者は任意のSQLを関数のオーナのIDで実行できます。攻撃者には関数に対してEXECUTE権限が必要で、”inexact”な引数のType Matchが関数呼び出しに含まれている必要があります。例えばlength(‘foo’::text) は”exact”ではありませんが、length(‘foo’::varchar)とlength(‘foo’)は”inexact”です。この脆弱性を悪用するためには、攻撃者はpg_tempスキーマでタイプを作成するCREATE DOMAINを使う必要があります。攻撃のパターンと修正はCVE-2007-2138と同様です。
SECURITy DEFINER関数を書くには引き続き下記のドキュメントに書いてある考慮事項に従って下さい。
https://www.postgresql.org/docs/current/sql-createfunction.html#SQL-CREATEFUNCTION-SECURITY
- http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-10209
- ハッシュ化されたsubplanに対するクロスタイプ比較でのメモリ情報暴露
- 仮想的で、ユーザが定義したハッシュ等価演算子を含むデータベースでは、攻撃者がサーバメモリの任意のバイトを読み取ることができる可能性が有ります。攻撃が可能になるには、superuserが通常とは異なる演算子を作成する必要があります。特別に攻撃用に作られていない演算子が攻撃を可能にする事は可能ですが、特定の例は認識していません。
- http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-10210
- EnterpriseDB WindowsインストーラがPostgreSQL superuserのパスワードを保護されていないテンポラリファイルに書き出す
- EnterpriseDB Windowsインストーラは、まずPostgreSQL superuserのパスワードをインストールディレクトリのテンポラリファイルに書き込み、データベースを初期化し、ファイルを削除しています。二番目の、ファイルが存在している状態で、ローカルの攻撃者はPostgreSQL superuserのパスワードを読み取ることが出来ます。
- http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-10211
- EnterpriseDB WindowsインストーラがバンドルしているOpenSSLが保護されていないディレクトリからコードを実行できる
- データベースサーバ又はlibpqクライアントライブラリがSSLを初期化している時に、libeay32.dllはハードコードされたディレクトリから設定を読み取ります。 通常は、そのディレクトリが存在しませんが、任意のローカルユーザがそのディレクトリを作成して設定を挿入することが出来ます。この設定は、PostgreSQLサーバーまたはクライアントを実行しているユーザーとして、任意のコードをロードし実行するようにOpenSSLに指示できます。 殆どのPostgreSQLクライアントツールとライブラリはlibpqを使用しており、いずれかを使用するとこの脆弱性に遭遇する可能性があります。この脆弱性はCVE-2019-5443によく似ていますが、独立したものになります。ワークアラウンドとして、環境変数OPENSSL_CONFを「NUL:/openssl.cnf」のような、ファイルとして存在できない名前に設定する事で、この脆弱性を回避できます。
主なディストリビューションの対応方法
詳細は、各ディストリビューションの提供元にご確認ください
- Debian
https://security-tracker.debian.org/tracker/CVE-2019-10208
https://security-tracker.debian.org/tracker/CVE-2019-10209
- Red Hat Enterprise Linux/CentOS
https://access.redhat.com/security/cve/CVE-2019-10208
https://access.redhat.com/security/cve/CVE-2019-10209
- Ubuntu
- SUSE/openSUSE
対処方法
各ディストリビューションの案内に従い、アップデートを行ってください。全てのRed Hat製品でパッチが行き渡っているかを確認するには、Red Hat SatelliteやKatello、Spacewalk等を使うと管理が便利でしょう。< /p>
Red Hat Satelliteを用いた一般的なErattaの適用は、『Red Hat Satellite 6でerrataを適用してみる』を参考にして下さい。
また、サービスの再起動が発生しますので、pacemakerなどOSSのクラスタ製品やLifeKeeperなどの商用のクラスタリング製品を使うとサービス断の時間を最小限にすることが出来ます。
[参考]
PostgreSQL 11.5, 10.10, 9.6.15, 9.5.19, 9.4.24, and 12 Beta 3 Released!
セキュリティ系連載案内
- OSSセキュリティ技術の会による日経Linuxでの連載「IoT時代の最新SELinux入門」がITPro上で読めるようになりました。技術の会代表で第一人者である中村さん等による、最新のSELinuxの情報やコマンド類等も更新されているのでお薦めです。
- OSSセキュリティ技術の会によるThinkITでの連載「開発者のためのセキュリティ実践講座」がThinkIT上で開始しました。技術の会の中の人間で、最新の代表的なOSSセキュリティ技術を紹介していきます。
- OSSセキュリティ技術の会により、ThinkITでLinuxSecuritySummit 2018のレポートが紹介されています。
- OSSセキュリティ技術の会の面により、@ITで「OSS脆弱性ウォッチ」が連載されています。
- OSSセキュリティ技術の会の面により、@ITで「OpenSCAPで脆弱性対策はどう変わる?」が連載されています。
- OSSセキュリティ技術の会のメンバーにより、@ITで「Berkeley Packet Filter(BPF)入門」が連載されています。
セミナー情報1
コンピュータセキュリティシンポジウム2019(長崎)が2019年10月21日(月) ~ 10月24日(木)で開催されます。
こちらですが、OSSセキュリティ技術の会も後援になっており、オープンソースソフトウェア(OSS)セキュリティ技術トラック(略称:OWSトラック) も用意しております。