web-dev-qa-db-ja.com

脆弱なライブラリをインポートするが、実際にはライブラリのクラスを使用しないアプリケーションを利用できますか?

脆弱なライブラリvuln-lib.jarがあるとします。このライブラリをソースコードにインポートしますが、実際には使用しません。

#My imports
import com.vuln.lib.*


#My code ..

次に、このアプリケーションをサーバーにデプロイします。ライブラリがソースコードの一部として提供するクラスをコードが使用していない場合でも、このライブラリの既知の脆弱性を悪用することはできますか?もしそうなら、それはどのように起こりますか?

2
thr0w9

はい、これは逆シリアル化によって適切な状況で実行できます。

  1. Jarファイルには、ガジェットチェーンで使用できるシリアル化可能なクラスが必要です
  2. Jarファイルはクラスパス上にある必要があります
  3. 攻撃者は、アプリケーションが逆シリアル化するデータを提供できる必要があります

攻撃者はそのデータを提供し、シリアル化されたデータストリーム内のjarファイルのクラスを参照します。

逆シリアル化に関して利用可能な記事やビデオがたくさんあり、なぜそれが問題なのか。 https://github.com/trendmicro/SecureCodingDojo/ も役立つかもしれません。

5
Swashbuckler