セキュリティ会社Lightspinの研究者は最近、PostgreSQL拡張機能を使って、どのように内部AWSサービスへの認証を取得し、RDS上のローカルファイル読み取りの脆弱性を悪用できるかを説明した。AWSはこの問題を確認し、Amazon AuroraとRDS for PostgreSQLの数十のマイナーバージョンを非推奨にした。
Amazonによると、十分な権限を持つデータベースユーザは、このクレデンシャルを使って、その取得元のデータベースクラスタに関連付けられたリソースに対して昇格された権限でアクセスできる。ただし、内部RDSサービスにアクセスしたり、データベースやAWSアカウントの間を移動したりすることはできなかった。
LightspinのセキュリティリサーチディレクタのGafnit Amiga氏は、どのようにして、log_fdw拡張機能の検証をバイパスして、PostgreSQL拡張機能を使って内部サービスのGroverへのクレデンシャルを取得したかを書いている。
log_fdw拡張機能を使うと、ユーザはSQLインターフェイスを使ってデータベースエンジンログにアクセスできます(...)システムファイルを調べてみたところ、PostgreSQLの設定ファイルで、psqlを使っても表示されない興味深い引数が見つかりました(...)grover_volume.confという名前の別の設定ファイルを指すapg_storage_conf_fileです。(...)ファイルの内容は別のファイルcsd-grover-credentials.jsonを指しています。
このファイルにより、Amiga氏は、一時IDとアクセス管理(IAM)クレデンシャルを取得できる。そこには、publicKeyおよびprivateKeyが含まれており、csd-grover-roleと呼ばれる内部ロールに接続されていることをテスト・確認できる。Amiga氏は次のように結論付けている。
3つの異なるファイルを辿る中で、内部AWSサービスを発見し、それにアクセスすることができました。これで私の分析と研究は終わりました。IAM権限を列挙したり、AWSの内部環境にさらに辿って移動したりする試みはしませんでした。
出典: https://blog.lightspin.io/aws-rds-critical-security-vulnerability
このセキュリティ会社によると、この脆弱性は、RDSチームが調査と修復に取り組み始めた4か月以上前の12月9日にAWSに報告されていた。AWSは、12月14日に、古いバージョンを除く最新のAuroraおよびRDSバージョンに初期パッチをデプロイした。そして、影響を受ける顧客に連絡を取り始めた。4月13日にリリースされたセキュリティ速報で、当クラウドプロバイダーは次のように述べている。
AWSは、報告されたときにこの問題に対処するためにすぐに動き出しました。軽減策の1つとして、この問題を防ぐために、Amazon Aurora PostgreSQLとAmazon RDS for PostgreSQLを更新しました。また、Amazon Aurora PostgreSQLとAmazon RDS for PostgreSQLのマイナーバージョンを非推奨にしました(...)
AWSアドバイザリは、最初はLightspinについて言及していなかった。この問題の要因が欠けていたため、コミュニティでさらに疑問が生じた。この発表では、内部サービスのGroverとは何か、そして、それがどのように機能するかは明確にされていなかった。Amiga氏は次の通り確認がとれている。
Groverについて、AWSは内部サービスに関する詳細を開示することはできません。
クラウドセキュリティコンサルタントのScott Piper氏は、クラウドサービスプロバイダーのセキュリティミスのリポジトリを管理しているが、Lightspinによる最新の発見について次のようにツイートしている。
Lightspinの直近のRDS問題を「クラウドサービスプロバイダーのセキュリティミス」に追加していたところ、Amiga氏がSagemaker問題を発見してから1週間後にRDS問題を見つけたことに気づきました。あと何件ラインアップするのでしょうか。
次の非推奨のマイナーバージョンのいずれかを使って、Aurora PostgreSQLまたはRDS for PostgreSQLのインスタンスを作成することはできなくなっている。
Aurora PostgreSQL
- 10.11, 10.12, 10.13
- 11.6, 11.7, 11.8
RDS for PostgreSQL
- 13.2, 13.1
- 12.6, 12.5, 12.4, 12.3, 12.2
- 11.11, 11.10, 11.9, 11.8, 11.7, 11.6, 11.5, 11.5, 11.4, 11.3, 11.2, 11.1
- 10.16, 10.15, 10.14, 10.13, 10.12, 10.11, 10.10, 10.9, 10.7, 10.6, 10.5, 10.4, 10.3, 10.1
- 9.6.21, 9.6.20, 9.6.19, 9.6.18, 9.6.17, 9.6.16, 9.6.15, 9.6.14, 9.6.12, 9.6.11, 9.6.10, 9.6.9, 9.6.8, 9.6.6, 9.6.5, 9.6.3, 9.6.2, 9.6.1
- 9.5, 9.4 and 9.3