
脆弱性
CVE-2021-21349: XStream でのアンマーシャリング時にサーバーサイドフォージェリリクエストが有効化され、イントラネットまたはローカルホスト上のリソースを参照する任意の URL からデータストリームにアクセスできる可能性があります。
影響を受けるバージョン
バージョン 1.4.15 までを含むすべてのバージョンが、標準設定で使用されている場合に影響を受けます。最小限の型のみに制限したホワイトリストで XStream のセキュリティフレームワークを設定するという推奨事項に従ったユーザーは影響を受けません。
説明
アンマーシャリング時に処理されるストリームには、以前書き込まれたオブジェクトを再作成するための型情報が含まれています。XStream はこの型情報に基づいて新しいインスタンスを作成します。攻撃者は処理される入力ストリームを操作し、オブジェクトを置換または注入することで、サーバーサイドフォージェリリクエストを引き起こす可能性があります。

$ docker build -t cve-2021-21349 .
$ python -m http.server 8080
$ docker run -it --rm cve-2021-21349
Serving HTTP on :: port 8080 (http://[::]:8080/) ...
::ffff:127.0.0.1 - - [05/May/2021 16:35:39] "GET /internal.txt HTTP/1.1" 200 -
pom.xml を以下のように変更する
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.16</version>
</dependency>
NoTypePermission.NONE を追加する
import com.thoughtworks.xstream.security.NoTypePermission; // Add
XStream xstream = new XStream();
xstream.addPermission(NoTypePermission.NONE); // Add
xstream.fromXML(xml);