セキュリティ アドバイザリ: CVE-2022-42889 "Text4Shell"

それはなんですか。

CVE-2022-42889, 別名 "Text4Shell", 人気のあるJavaライブラリの脆弱性です "Apache Commons Text" 悪意のある入力を処理するときに任意のコードが実行される可能性があります. 詳細については、 GitHub アドバイザリ またはこの Apache スレッドを参照してください。

攻撃者は何ができますか?

脆弱な場合、攻撃者はキーワードを含む悪意のある入力を挿入して、以下をトリガーする可能性があります。 

  1. DNS 要求
  2. リモート URL への呼び出し
  3. 実行するインラインスクリプト

これらの3つのメカニズムはサーバー上で実行され、外部ソースからコードをプルしたり、任意のスクリプトを埋め込んだりして、任意のコードを実行することができます。

これによりこの脆弱性は非常に深刻になりますが、多くの場合、このライブラリのコンシューマーは、クラスを使用しない StringSubstitutor (以下のように)ため、および/または信頼できない入力を脆弱な関数に渡さないため、この脆弱性の影響を受けません。

セキュリティ研究者はまた、この脆弱性を悪用するための増加した重要な活動が記録されていると 報告 しています。

私は脆弱ですか?

脆弱になるには、次のことを行う必要があります。

  1. Apache Commons Text version 1.5-1.9 を使用する 賅
  2. 変数補間を持つクラスを使用する StringSubstitutor コードがある
  3. 入力を受け入れて StringSubstitutorクラスに渡すメカニズムを持つ

Snykを搭載したCLIやDocker Hub脆弱性スキャンなどの docker scan Docker脆弱性スキャンツールは、ライブラリの脆弱なバージョンの存在を検出し、イメージに脆弱なフラグを立てます(以下を参照)。

これらのバージョンを使用している場合でも、コードパスによって脆弱なメソッドを使用しないか、ユーザー入力を渡さないことで、この問題を既に軽減している可能性があるため、脆弱ではない可能性があることに注意してください (以下の「軽減策」セクションを参照してください)。 ただし、すべてのコードパスとそれらがどこから入力を取得するかを詳細に理解しないと、これを検証するのは難しい場合があります。 したがって、最も簡単な修正は、脆弱なバージョンに応じてすべてのアプリケーションをアップグレードすることです。

イメージに脆弱性があるかどうかをチェックするために使用できます docker scan 。 Text4Shell が存在する場合は、出力ログに次のようなメッセージが表示されます。

  Upgrade org.apache.commons:[email protected] to org.apache.commons:[email protected] to fix
 ✗ Arbitrary Code Execution (new) [High Severity][https://security.snyk.io/vuln/SNYK-JAVA-ORGAPACHECOMMONS-3043138] in org.apache.commons:[email protected]
 introduced by org.apache.commons:[email protected]

これをテストするには、脆弱なイメージを確認します。たとえば、この neo4j イメージには at /var/lib/neo4j/lib/commons-text-1.9.jarcommons-text脆弱なバージョンが含まれています。

docker scan neo4j:latest@sha256:17334cbc668d852ca8a3d8590f66c4fda64d9c7de7d93cc62803f534ae7dbce6

ドッカーハブスキャン

2022年10月21日12:00 UTCの時点で、Docker HubはText4Shellの脆弱性を特定し、脆弱であると判断した画像にバッジを付けます。 このバッジは、Docker 公式イメージと Docker 検証済み発行元イメージに対して公開され、脆弱性スキャンが有効になっているその他のイメージに対しては非公開で表示されます。

この日付より前のスキャンではこの脆弱性が反映されない可能性がありますが、古い Docker 公式および Docker 検証済み発行元のイメージは引き続きスキャンされ、結果が確認されるとバッジが更新されます。

画像がスキャンされ、Text4Shellの脆弱性の影響を受けていることが判明した場合は、画像の横に以下のバッジと情報が表示されます。

テキスト4シェルタグバッジ
Text4シェル画像レイヤーバッジ

緩和 策

実行する最も安全な緩和策は、 Apache Commons Text のバージョン 1.10 に更新することです。

このバージョンに更新できない場合、2 番目の軽減策は、コードベース全体の使用状況を綿密にチェックし、信頼されていないユーザー入力が脆弱な関数に渡されていないことを確認することです。

Docker 公式イメージ

多くのDocker公式イメージには、脆弱なバージョンのApache Commons Textが含まれています。 これらは、Docker Hub ユーザー インターフェイスで公開ラベル付けされます。 Docker 公式イメージの現在のステータスの詳細については 、https://docs.docker.com/security/ を参照してください。

その他の画像

Docker 検証済み発行元と協力して、影響を受けるイメージを特定して更新しています。 また、影響を受ける画像を強調表示する方法も検討しており、より多くの情報が得られ次第、この投稿を更新し続けます。

Dockerインフラストラクチャは影響を受けますか?

Docker Desktop および Docker Hub は Text4Shell の脆弱性の影響を受けません。 Dockerは主にGoコードを使用してアプリケーションを構築し、Javaは使用しません。 一部のJavaアプリケーションを使用していますが、CVE-2022-42889に対して脆弱ではないことを確認しています。

より多くの洞察に興味がありますか?

Docker を使用すると、レジストリ内のパブリック イメージとプライベート イメージの品質に関するより深い分析情報を得ることができます。 早期アクセスプログラムにサインアップ して詳細を確認し、これらのツールにアクセスし、製品の改善に役立つ貴重なフィードバックを提供してください。