「REXMLのDoS脆弱性」が恐ろしい件

を見ていたら、
「あーそうなんだ、でもうちの Rails のサービスじゃ REXML でパースする処理なんて書いてないから別にいいや」とか思っている方、大変危険です。
おれのことですね。わかります。


ということで、いい機会なのでhttpclientをgem installして、REXMLのDoS脆弱性を参考に、POSTリクエストをごにょごにょして送信すると、RailsアプリのCPU使用率が100%に張り付いたまま… あきらかに再帰しまくっている感が漂っています。


パッチ(rexml-expansion-fix.rb)を当ててみたところ、Internar Sever Errorが返ってくるようになったのだけど、レスポンスが来るまで結構負荷が掛かっていた。パッチ当てただけの状態だとDoSられそうな気がする。


デフォルトでは、XML実体参照の展開は10000回に制限されます。この値は、REXML::Document.entity_expansion_limit=により変更可能です。
に従い、1000位にしてみたらCPU負荷が掛からず、即エラーが返ってきた。この変更は必要っぽい。