Fortinet製品で深刻な脆弱性が悪用されていることが判明
セキュリティベンダーのFortinetは、同社のFortiOS SSL VPNに存在する、5年以上前の脆弱性が現在、実際に悪用されていることを発表しました。この脆弱性(CVE-2020-12812)は、特定の条件下で、本来必須であるはずの2段階認証(2FA)を回避してログインできてしまうというものです。
脆弱性の詳細: username-case-sensitivity の落とし穴
この脆弱性が悪用されるのは、FortiGateに「ユーザーローカル」設定で2段階認証が有効になっており、かつそのユーザー認証タイプがLDAPなどのリモート認証方式に設定されている場合です。問題の根源は、FortiOSがユーザー名を大文字・小文字を区別せずに扱うのに対し、LDAPサーバー側では区別される場合があるという、この「ケースセンシティブ」な扱いの不一致にあります。
具体的には、FortiOS側でユーザー名が「jsmith」となっている場合でも、攻撃者が「Jsmith」や「jsMiTh」といった、本来とは異なる大文字・小文字の組み合わせでログインを試みると、FortiOSはローカルユーザーとして認識できず、設定されている別の認証ポリシー(例えばLDAPグループ経由の認証)をチェックします。この際、LDAPサーバー側でその組み合わせが正しければ、2段階認証を経由せずにログインが成功してしまう、というわけです。
つまり、本来は「Jsmith」と「jsmith」は別物として扱われるべきなのに、FortiOSがそれを同一視してしまい、結果として正規の認証パスを通らずに、追加の認証ステップをスキップさせてしまうのです。
過去にも悪用、政府も注意喚起
この脆弱性は、2020年7月にFortinetから注意喚起が出されていましたが、その後も複数の攻撃者によって悪用され続けていることが確認されています。アメリカ政府も、2021年にはこの脆弱性が、境界型デバイスを標的とした攻撃に悪用された弱点の一つとしてリストアップしていました。
対策は?
Fortinetは、この脆弱性に対応するため、FortiOS 6.0.10、6.2.4、6.4.1などのバージョンで修正を行っています。これらのバージョン以降、またはそれ以前のバージョンでも、以下のコマンドを実行することで、ユーザー名の大文字・小文字を区別しない設定に変更できます。
FortiOS 6.0.13、6.2.10、6.4.7、7.0.1以降の場合:
set username-sensitivity disableそれ以前のバージョン:
set username-case-sensitivity disable
これにより、FortiGateは「jsmith」「JSmith」「jsMITH」などをすべて同一のユーザーとして扱います。これにより、意図しないLDAPグループ経由での認証バイパスを防ぐことができます。
また、攻撃経路をさらに減らすために、もし二次的なLDAPグループが不要であれば、削除することも有効な対策です。これにより、ユーザー名が一致しない場合にLDAPグループ経由での認証ができなくなり、脆弱性の悪用を防ぐことができます。
Fortinetは、もし管理者権限やVPNユーザーが2段階認証なしで認証されている証拠を発見した場合は、速やかにサポートチームに連絡し、すべての認証情報をリセットするように促しています。

