はじめに 先日、Struts 2に新たな脆弱性S2-052(CVE-2017-9805)が発見され、修正されました。 これはリモートからの任意のコードの実行(RCE)が可能な脆弱性であり、「またか」と思われた方も多かったのではないかと思います...。 しかし実はこの脆弱性によるRCEは、過去繰り返しStruts2に報告されてきたOGNLインジェクションとは異なるメカニズムで発生するものでした。 ここでは、この脆弱性の原因と、RCEに至るメカニズムを解説してみようと思います。 多少プログラミングの知識のある方向けになってしまいますが、ご容赦ください。 シリアライズ/デシリアライズ プログラム内で扱うオブジェクトのインスタンスを特定のフォーマットに従ってバイト列に変換する、またその逆操作を行う仕組みをシリアライズ/デシリアライズと呼びます。 これは単なるデータの保存・復元ではなく、オブジェクト