安全でないデシリアライゼーション
信頼できないデータをデシリアライズした結果、攻撃者の意図したオブジェクトが生成・実行されてしまう脆弱性。RCEの定番ルートである。
デシリアライズ時に副作用が起こり得る言語で発生する。Java(readObjectと、Apache Commons CollectionsやSpringを使ったガジェットチェーン)、Python(pickle.loads)、Ruby(Marshal)、PHP(unserialize)、.NET(BinaryFormatter)などだ。ysoserialやPHPGGCのようなツールが、出来合いのチェーンを生成してくれる。
対策は、信頼できないデータをそもそもデシリアライズしないこと。やむを得ない場合は、コード実行を伴わない形式(JSON、MessagePack、Protobuf)を使い、許可する型をホワイトリストで絞る。