はじめに 先日、Struts 2に新たな脆弱性S2-052(CVE-2017-9805)が発見され、修正されました。 これはリモートからの任意のコードの実行(RCE)が可能な脆弱性であり、「またか」と思われた方も多かったのではないかと思います...。 しかし実はこの脆弱性によるRCEは、過去繰り返しStruts2に報告されてきたOGNLインジェクションとは異なるメカニズムで発生するものでした。 ここでは、この脆弱性の原因と、RCEに至るメカニズムを解説してみようと思います。 多少プログラミングの知識のある方向けになってしまいますが、ご容赦ください。 シリアライズ/デシリアライズ プログラム内で扱うオブジェクトのインスタンスを特定のフォーマットに従ってバイト列に変換する、またその逆操作を行う仕組みをシリアライズ/デシリアライズと呼びます。 これは単なるデータの保存・復元ではなく、オブジェクト
![Struts2 S2-052を例とした脆弱性攻撃手法の調査及びそれらを考慮した防御機能の開発](https://cdn-ak-scissors.b.st-hatena.com/image/square/9b89f008600b307cd3b2f30b477662d804a664f2/height=288;version=1;width=512/https%3A%2F%2Fwww.scutum.jp%2Finformation%2Fwaf_tech_blog%2Fimages%2Famp_thumbnail.jpg)