Skip to main content

Snyk Social Trendsで重要なセキュリティ脆弱性を修正する方法

blog feature social trends

2021年8月18日

0 分で読めます

最近、SnykはSocial Trendsを脆弱性データに追加しました。この新しい指標では、注目を集めている脆弱性がわかるため、修正の優先順位をより適切に判断できます。Snykの調査チームは、ソーシャルメディアで話題になっている脆弱性と、実際にアプリケーションに被害をもたらすエクスプロイトの存在には強い相関関係があることを発見しました。

セキュリティ脆弱性のソーシャルトレンドを追うのは、実践的な意味があります。特定の脆弱性がソーシャルメディア(たとえばTwitter)で大きな注目を集めているということは、多くの人がその問題を認識しているということです。統計的に見ても、あなたに危害を加えようとする人が増えることを意味します。そのため、ソーシャルメディアで話題になっているシステム内の脆弱性には、特に注意を払うことが重要です。

Snyk Social Trends(脆弱性のセンチメント分析)がどのように機能するか、見てみましょう。

Javaでのトレンド事例

古いバージョンのSpring Boot、2.2.0-RELEASEを使って、小さなJavaアプリケーションを作成しました。GitHubリポジトリをSnykアカウントに接続したところ、現在ソーシャルメディアで話題になっているため、リストの上位に次の脆弱性が表示されました。

Apache Tomcat embedded-coreのリモートコード実行脆弱性を示すセキュリティダッシュボード。深刻度は高く、実証済みのエクスプロイトがあり、SNS上で話題になっています。

これは、使用している特定のSpring Bootスターターパッケージに含まれるApache Tomcatの組み込みバージョンに存在する、リモートコード実行(RCE)の脆弱性です。トレンドボタンをクリックすると、この脆弱性に言及したツイートが多数見つかり、実際に機能するエクスプロイトも公開されていました。この点については後ほど触れますが、まずは脆弱性について説明します。

リモートコード実行の脆弱性CVE-2020-9484を解説

TomcatにおけるこのRCE脆弱性の仕組みを簡単に説明します。この脆弱性は、Spring Bootに付属する組み込みバージョンを含む、すべてのTomcatバージョンに存在します。また、この問題を修正するアップデートが、すべてのバージョン向けにすでに提供されていることも知っておくとよいでしょう。

TomcatでPersistentManagerとFileStoreを使っているとします。PersistentManagerはセッションを管理します。セッションは、クライアントからサーバーへのリクエスト間で状態を保持するために使われます。デフォルトでは、Tomcatはセッションをメモリに保持するStandardManagerを使います。一方、PersistenManagerは、セッションが数秒間アイドル状態になると、ストレージに移します。ストレージにはFileStoreを使ったディスクや、JDBCStoreを使ったデータベースを利用できます。

FileStoreを使うと、Tomcatはあらかじめ定められた場所に<JSESSIONID>.sessionという名前でセッションを保存します。セッションIDを使った新しいリクエストのセッションがメモリにない場合、PersistentManagerはディスク上に保存されたセッションを探し、見つかると保存済みのセッションオブジェクトをデシリアライズしてメモリに読み込みます。

では、セッションがJSESSIONID=../../../../../../../foo/mysessionだったらどうなるでしょうか。パストラバーサルによって、Tomcatはfooディレクトリにあるmysession.sessionを探します。何らかの方法でこのシステムにファイルをアップロードできれば、シリアライズ済みのセッションファイルをアップロードできます。次に、JSESSIONIDを対応する場所に設定すれば、デシリアライズを実行できます。デシリアライズによって、シリアライズされたオブジェクトに応じて有害なリモートコード実行が引き起こされます。

デシリアライズの脆弱性がなぜ危険なのか詳しく知りたい方は、ブログ記事Javaのシリアライズとデシリアライズ:Javaのデシリアライズ脆弱性を解説をご覧ください。

Tomcatのこの脆弱性について詳しく知りたい方は、redtimmy.comの記事で詳しく解説されています。GitHubリポジトリでは、エクスプロイトの概念実証を確認できます。  https://github.com/masahiro331/CVE-2020-9484

この脆弱性を実際に悪用するには、いくつもの前提条件が必要だと思うかもしれません。

  1. PersistentManagerはFileStoreを使用して有効にする必要があります。

  2. 攻撃者が任意のファイルをアップロードできる必要がある

  3. デシリアライズ攻撃に利用できるガジェットがクラスパス上に存在する必要がある

こうした前提条件があるため、実際に悪用可能なケースは多くないとして、この脆弱性を軽視する人もいるかもしれません。しかし、Twitterで大きな注目を集めていたので詳しく調べたところ、セッションマネージャーをPersistentMangerとFileStoreに変更するのは、それほど難しくありませんでした。また、アプリケーションで使っている依存関係の多さを考えると、ガジェットが含まれている可能性も十分あります。

つまり、何らかの理由でチームの誰かがPersistentMangerとFileStoreを使うと決めた場合、残る条件は任意のファイルをアップロードできることだけです。セキュリティ侵害は、単独の出来事や脆弱性ではなく、ほとんどの場合、連鎖する出来事が大きな被害につながって発生します。だからこそ、このような脆弱性を軽視すべきではありません。特に、修正プログラムが提供されている場合はなおさらです。

さらに重要なのは、脆弱性が話題になっていると、多くの人がその存在を知り、話題にしているということです。その中には悪意を持つ人もいます。私にとってトレンドは、すでに行っている調査以上に詳しく調べ、今の自分が影響を受けるのか、将来影響を受ける可能性があるのかを確認するための目印です。

SnykのUIにトレンドマーカーを表示することで、脆弱性に注目を促すだけでなく、その理由に基づいて優先度スコアも引き上げられます。特定の脆弱性がどれほど注目されているかを判断するため、ソーシャルメディアを調査することは、明白でよく知られたセキュリティ上のミスを見逃さないための有効な手段だと考えています。トレンドタグを見かけたら、以前は見過ごしていたかもしれない脆弱性をもう一度確認することをおすすめします。

開発者に愛され、セキュリティチームから信頼される。

Snykの開発者ファーストのツールは、ガバナンスやコンプライアンスのニーズに応える、統合された自動化セキュリティを提供します。

続きを読む

illustration hero ai
Blog

PHPが重大な未認証RCEの脆弱性2件を修正(CVE-2026-109618、CVE-2026-109619):今すぐアップデート

PHPのリクエスト処理に重大な脆弱性が2件あり、未認証のリモートコード実行につながるおそれがあります。修正版にアップグレードするか、旧バージョンにはベンダー提供のバックポートを適用してください。

blog feature ai lilac
Blog

エージェント型修正で脆弱性バックログをプルリクエストに変える

Evo Remediation Agentがオープンプレビューで利用可能になり、Evo Agentic AppSecに依存関係の自動解決機能が加わりました。AppSecチームは継続的な修正キャンペーンを実施できるようになりました

AI Background min crop
Blog

AIが、あなたが受け入れてきたあらゆるリスクを一気に顕在化させる:AI Security Panel: Unfilteredから得た7つの洞察

AIによって攻撃はより安価かつ高速になり、組織がすでに抱えているリスクが露呈しています。4人のセキュリティリーダーが、機械の速度に対応する防御と迅速な修復が今不可欠である理由を語ります。