Simple Science

最先端の科学をわかりやすく解説

# コンピューターサイエンス# 暗号とセキュリティ# ソフトウェア工学

サプライチェーンの脅威に対するJavaアプリケーションセキュリティの強化

Javaアプリケーションへの攻撃を防ぐためのクラス許可リストを使ったシステム。

― 1 分で読む


攻撃に対するJavaセキュ攻撃に対するJavaセキュリティシステムへのサプライチェーン攻撃を防ぐ。新しいシステムがJavaアプリケーション
目次

ソフトウェア供給チェーンは、今のアプリケーション開発には欠かせないけど、リスクも伴うんだ。多くの開発者がサードパーティ製のライブラリを使ってるけど、これがセキュリティ問題を引き起こすことがある。もしこれらのライブラリに欠陥があったら、攻撃者に悪用される可能性がある。悪名高い攻撃の一つがLog4Shellで、悪意のあるソースからのコードがサーバー上で実行されることを許してしまった。この論文では、Javaアプリケーションでのこういった攻撃を防ぐための新しいシステムについて話すよ。

問題

ソフトウェア開発が進むにつれて、外部コードへの依存が増えてきた。これが脆弱性を引き起こす原因になってて、特に未検証のコードが実行されるときが危険なんだ。最近の多くの攻撃はこの弱点を狙っていて、有名なライブラリの欠陥を利用して悪意のあるコマンドをリモートで実行してる。従来のセキュリティ手法は開発時にこれらの問題をキャッチできるかもしれないけど、実行時の脅威からはしばしば守れない。

解決策

僕たちの提案するシステムは、Javaアプリケーション内で実行を許可されたクラスのホワイトリストを作成するんだ。このホワイトリストはアプリケーションのソフトウェア供給チェーンに基づいて作られる。信頼できるクラスだけが実行されるようにすることで、実行時に未認識または変更されたクラスをブロックできるよ。

システムの仕組み

ホワイトリストの作成

アプリケーションのビルドフェーズ中に、システムは全てのクラスをスキャンして、いわゆる材料表インデックス(BOMI)を作成する。このリストには、コアJavaライブラリのクラス、開発者が書いたクラス、そして動的に生成されたクラスが含まれるよ。

  1. 環境クラス:これらはビルトインのJavaクラスだ。システムはこれらのクラスのチェックサムを記録して、ユニークな識別子として使う。

  2. 供給チェーンクラス:これらのクラスはサードパーティ製のライブラリから来てる。システムは全てのライブラリとそのクラスの在庫を取って、完全なリストを作成する。

  3. 動的クラス:Javaではアプリケーションが実行中にクラスを生成することができる。システムはテスト中にアプリケーションを監視して、動的に生成されたクラスを記録するよ。

実行時の監視

BOMIが作成されたら、アプリケーションの実行中に監視が行えるようになるんだ。SBOMランタイム監視ツールっていうコンポーネントが起動する。これはロードされた各クラスをBOMIと照らし合わせてチェックする。

  • もしクラスがBOMIにあり、チェックサムが一致すれば、実行が許可される。
  • もしクラスが見つからないか、チェックサムが一致しなければ、アプリケーションはすぐに終了される。これで潜在的に危険なコードの実行を防げるんだ。

重要性

このシステムは、未知のクラスを実行できるという重要な問題に直接対処してる。厳格なホワイトリストを維持し、クラスのロードを監視することで、Javaの動的クラスロード機能がもたらすリスクを効果的に最小限に抑えられるんだ。

システムのテスト

システムの効果を検証するために、セキュリティの観点から一般的に知られている3つの主要な脆弱性に対してテストを行ったよ。

  1. Log4j:Log4Shellの脆弱性は、攻撃者がロギングライブラリを通じて悪意のあるコードを実行する方法を示したんだ。僕たちのシステムはこの悪意のあるコードの実行をBOMIと照らし合わせることで成功裏に防いだ。

  2. H2データベース:このデータベースエンジンも同様の攻撃に脆弱だった。潜在的なエクスプロイトの条件を再現して、やっぱり僕たちのシステムは悪影響を及ぼすコードの実行を阻止した。

  3. Apache Commons Configuration:Javaに同梱されていたNashorn JavaScriptエンジンを使用したこの脆弱性は、JavaScriptコードが深刻なセキュリティ問題を引き起こす可能性を示した。僕たちのシステムは、この悪意のあるコードが実行される前に効果的に遮断したんだ。

実際の適用性

現実のアプリケーションでシステムの影響とパフォーマンスを測定するために評価も行ったよ。既存のソフトウェアとの互換性をテストして、正当な操作を妨げないように確保した。

  1. PDFBox:PDFファイルを操作するアプリケーションで、さまざまなPDF操作を含む負荷の下でテストした。僕たちのシステムは誤検知なく動作し、正当な操作を特定して許可した。

  2. Ttorrent:ピアツーピアのダウンロードアプリケーションの評価も行った。動的クラス生成を問題なく管理できたよ。

  3. GraphHopper:このルーティングアプリケーションはより難しかったけど、一部の動的に生成されたクラスがそのランダムな性質のために捕捉できないことがわかった。それでも、システムは不正なコードを効果的にブロックすることができた。

パフォーマンスの考慮

どんなセキュリティシステムにおいても、パフォーマンスへの影響は重要な要素だ。運用中にシステムがもたらすオーバーヘッドを測定したよ:

  • 初期のスタートアップとクラスの検証中には、チェックサムや検証プロセスによって目立ったオーバーヘッドがある。
  • でも、初期のウォームアップが終わると、パフォーマンスへの影響は最小限になって、長時間動作するアプリケーションに適してる。

結論

僕たちのシステムをJavaアプリケーションに統合することで、動的コード実行を悪用する供給チェーン攻撃に対してセキュリティが大幅に強化されるよ。詳細なBOMIを作成し、クラスのロードを積極的に監視することで、複雑なソフトウェア環境におけるJavaアプリケーションの整合性を効果的に確保できるんだ。

今後の方向性

今後は、現在の方法論では見落とされがちな隠れたクラスの検出に焦点を当てて、システムの能力を拡張していくつもりだ。他の技術と比較して、同様のセキュリティ問題にどのように対処しているかも探求したい。全体として、僕たちのアプローチは進化する脅威に対してソフトウェアセキュリティを改善するためのしっかりした基盤を築いているんだ。

オリジナルソース

タイトル: SBOM.EXE: Countering Dynamic Code Injection based on Software Bill of Materials in Java

概要: Software supply chain attacks have become a significant threat as software development increasingly relies on contributions from multiple, often unverified sources. The code from unverified sources does not pose a threat until it is executed. Log4Shell is a recent example of a supply chain attack that processed a malicious input at runtime, leading to remote code execution. It exploited the dynamic class loading facilities of Java to compromise the runtime integrity of the application. Traditional safeguards can mitigate supply chain attacks at build time, but they have limitations in mitigating runtime threats posed by dynamically loaded malicious classes. This calls for a system that can detect these malicious classes and prevent their execution at runtime. This paper introduces SBOM.EXE, a proactive system designed to safeguard Java applications against such threats. SBOM.EXE constructs a comprehensive allowlist of permissible classes based on the complete software supply chain of the application. This allowlist is enforced at runtime, blocking any unrecognized or tampered classes from executing. We assess SBOM.EXE's effectiveness by mitigating 3 critical CVEs based on the above threat. We run our tool with 3 open-source Java applications and report that our tool is compatible with real-world applications with minimal performance overhead. Our findings demonstrate that SBOM.EXE can effectively maintain runtime integrity with minimal performance impact, offering a novel approach to fortifying Java applications against dynamic classloading attacks.

著者: Aman Sharma, Martin Wittlinger, Benoit Baudry, Martin Monperrus

最終更新: 2024-06-28 00:00:00

言語: English

ソースURL: https://arxiv.org/abs/2407.00246

ソースPDF: https://arxiv.org/pdf/2407.00246

ライセンス: https://creativecommons.org/licenses/by/4.0/

変更点: この要約はAIの助けを借りて作成されており、不正確な場合があります。正確な情報については、ここにリンクされている元のソース文書を参照してください。

オープンアクセスの相互運用性を利用させていただいた arxiv に感謝します。

著者たちからもっと読む

類似の記事