Shikata Ga Nai

Private? There is no such things.

A misconfigured Apache Airflow to AWS Account Compromiseを訳してみた

Hello there, ('ω')ノ

 

誤って設定されたApacheAirflowからAWSアカウントへの侵害を。

 

脆弱性:

 既知の脆弱性

 特権の昇格

 情報開示を伴う古いコンポーネント

 

記事:

 https://logicbomb.medium.com/a-misconfigured-apache-airflow-to-aws-account-compromise-c905dc49998d

 

今回は、古いバージョンのApache Airflowに存在するセキュリティの設定ミスを。

偵察中に発見した認証バイパスに悪用し、機密性の高いページや機能に。

アクセスするようにエスカレーションして。

機密性の高い資格情報をさらに公開する方法について。

内部ツールとクラウドプラットフォームにアクセスして。

 

Apache Airflowは、ワークフローをプログラムで作成、スケジュール、および。

監視するためのオープンソースツールで。

これは、データパイプラインの依存関係、進行状況、ログ、コード、トリガータスク。

および成功ステータスを視覚化するためのワークフローまたはパイプラインを。

調整するためにデータエンジニアが使用する最も堅牢なプラットフォームの1つで。

特に、Apache Airflowは、GitHubで最も星が付けられた。

オープンソースワークフローアプリケーションで。

 

偵察:

CVE-2020–17526として指定されている設定ミスは、すでに実際に悪用されており。

最も人気のあるオープンソースツールの1つであるため。

設定ミスがより広範囲に及んでいて。

 

https://nvd.nist.gov/vuln/detail/CVE-2020-17526

 

CVEは最新のものなので、インターネットを介して。

このようなパッチが適用されていない古いバージョンを入手する可能性は。

常に高くなるので、目標は脆弱なバージョンの1.x.xで実行されている。

ApacheAirflowインスタンスを見つけることで。

 

ドメイン/ターゲットのリストを列挙し、サブドメインを収集して。

ApacheAirflowが実行されているかどうかを確認することから始めることに。

サブファインダーが役に立って。

 

Shodanを検索して、インターネット上で公開され。

CVE-2020–17526に対して脆弱なものがいくつあるかを実際に確認したところ。

仮説はより強力になり、また、これに加えてデフォルトでは。

ApacheAirflowは、古いバージョンでは認証を提供せず。

簡単な検索で、認証なしでインターネット上に公開されている300を超える。

エアフローインスタンスがあることが明らかになって。

 

 

スクリプトを実行して、古いバージョンにあるものの数を調べると。

その数は75に達して。

インターネット全体へのアクセスを可能にする公開された誤って構成された。

インスタンスは、これらのプラットフォームを悪用する候補となって。

CVE-2020–17526がニュースでこれほど多く取り上げられているのは当然のことで。

 

 

CVE-2020–17526を悪用:

調査結果に戻ると、Airflowインスタンスの束を発見したら。

次のステップはCVE-2020–17526を実行することで。

 

説明:

Airflowのウェブインターフェースは、Flaskのステートレスの。

署名付きCookieを使用して認証データを保存して。

これはステートレスであるため、Airflowインスタンスは。

属性が変更されているかどうかを認識せず。

(この場合、ログインしているユーザを識別するのはjson内のuser_idで)

Airflowは、デフォルトの署名キーをtemporary_keyとして使用して。

セッションCookieに署名して。

このキーが変更されていない場合は、flask-unsignを使用してクラックでき。

session json値を変更して、adminとして署名し。

temporary_keyで再サインバックするための追加の属性を含めることができて。

 

そして、セッションCookieを復号化し、ログインするユーザIDを指定する。

user_id属性を偽造し、adminに対して1を試し、それを再署名して。

 

 

次のステップは、ブラウザのセッションCookieを置き換えて。

ホームページに移動することでしたので。

管理者としてツールに正常にログインして。

 

特権の昇格:

各DAGコードをチェックして、最も一般的な開発者の間違い。

つまり、ユーザの1人のslackトークンにアクセスするための。

ハードコードされたプレーンテキストの資格情報を見つけて。

 

 

slackpirateを使用して、アクセスできる機密情報を抽出することに。

 

 https://github.com/emtunc/SlackPirate

 

 

Airflowインスタンスの他のオプションを調べると。

1.AWSキーはハードコーディングされていて。

 

 

2.airflow.cfg構成が開かれ、接続文字列が公開されて。

 

 

AWSクレデンシャルを使用してログインしようとすると。

これによりAWSアカウントにアクセスできて。

(ただし、アクセスは制限されていて)

これは、ワイルドなCVEと、不適切なセキュリティ慣行と設定ミスの連鎖が。

脆弱性の複数のエクスポージャにつながる可能性があることを示す恐ろしい例で。

 

修復:

攻撃を軽減するために、Airflowインスタンスのバージョンを最新バージョンに。

更新するか、`[webserver]secret_key`構成のデフォルト値を変更すること。

 

Best regards, (^^ゞ