環境
対応前
- omniauth
1.9.1
- devise
4.7.1
- omniauth-google-oauth2
0.8.0
対応後
- omniauth
2.0.4
- devise
4.8.0
- omniauth-google-oauth2
1.0
整理する
タイトルだけだと、何言ってんだ別々の問題だろって感じなので、先に問題を整理する。
- OmniAuthのCVE-2015-9284という脆弱性に関する問題
- DeviseのOmniAuthのバージョンをあげてくれという問題
You are using an old OmniAuth version, please ensure you have 1.0.0.pr2 version or later installed.
なぜこの2つ問題が一緒に発生するのか。
- OmniAuthが<= 1.9.1である場合にCVE-2015-9284の問題がある
- OmniAuthのバージョンアップを試みる。Releaseバージョンはv2.x
- OmniAuthを2.xにすると、Deviseで「OmniAuthのバージョンが古いので1.0.0.pr2以上にしてくれ」と言われる。いや2.xになってるんだが?
という流れで、この状況が稀によく生まれる(気がする)。
じゃあ1.xを使おうかと思っても、脆弱性の問題を解消できないので2.x以上にする必要がある。
対応
該当のYou are using an old OmniAuth version, please ensure you have 1.0.0.pr2 version or later installed.
関することは、issueにあがっている。
該当する記述はここ。
- https://github.com/heartcombo/devise/blob/v4.7.3/lib/devise/omniauth.rb#L11
- https://github.com/heartcombo/devise/blob/v4.8.0/lib/devise/omniauth.rb
ということで、Deviseのバージョンは4.8以上にアップデートしてあげるで確定。
そして当然、OmniAuthも2.xにしても問題ない。
よく考えれば「そらそうよ」って話なのだけど、作業中は「OmniAuthをバージョンアップするとDeviseでOmniAuthが古いというエラーが出る…?」と、謎に混乱したのでまとめておく。