Netop Vision Pro–遠隔教育ソフトウェアの脆弱性を確認

McAfee Advanced Threat Research(ATR)チームは、ソフトウェアとハ​​ードウェアの両方のセキュリティ問題を明らかにし、開発者が企業と消費者により安全な製品を提供できるよう支援することに取り組んでいます。最近、幼稚園から高校までの教育現場で使用されている、コンピューターにインストールされているソフトウェアを調査しました。Netop社によって作成されたNetop Vision Proについてです。このソフトウェアに関する調査の結果、CVE-2021-27192CVE-2021-27193CVE-2021-27194およびCVE-2021-2719で特定された、これまでに報告されていない4つの重大な問題が発見されました。その問題とは、特権の昇格が可能になり、最終的にはリモートコード実行が可能になるというもので、悪意のある攻撃者が同じネットワーク内で使用し、学生のコンピュータを完全に制御することなどに使用される可能性があるものでした。この調査については、2020年12月11日にNetopに報告を行い、Netopがそれに対応し2021年2月には更新バージョンを提供、重大な脆弱性の多くに効果的にパッチを適用できたことは幸いです。

別の記事で、この調査の結果、発見された脆弱性の概要と、オンライン授業を安全に行う方法についてご紹介していますので、そちらも併せてご参照ください。

Netop Vision Proは、学校のコンピュータを使用しながら生徒の学習を促進するための教師向けの生徒監視システムです。Netop Vision Proを使用すると、教師は、コンピュータのロック、Webアクセスのブロック、デスクトップのリモート制御、アプリケーションの実行、ドキュメントの共有など、生徒のコンピュータでリモートでタスクを実行できます。Netop Vision Proは、主にK-12(幼稚園年長から高校卒業までの13年間)の環境で教室またはコンピューターラボを管理するために使用され、本来はeラーニングや個人用デバイスを対象としていません。言い換えると、Netop Vision Proソフトウェアは、標準構成ではインターネットからアクセスできないようにする必要があります。しかし、この普段とは異なる状況の結果として、遠隔教育を継続するためにコンピューターが学生に貸し出されており、教育用ソフトウェアがさまざまなネットワークに接続されるなど、攻撃対象領域が増加しています。


初期偵察

Netopは、すべてのソフトウェアをWebサイトで無料トライアルとして提供しているため、誰でも簡単にダウンロードして分析が可能です。ソフトウェアをダウンロードしてから数分以内に、問題なく構成して実行することができました。

まずNetopソフトウェアを通常の構成と環境でセットアップすることから始めました。ローカルネットワーク上に4台の仮想マシンを配置しました。3人は学生として、1人は教師として設定されました。3台の学生用マシンは、通常のインストールをエミュレートするために、管理者以外のアカウントで構成されました。教師は最初に「教室」を作成し、次にどの生徒のPCを接続するかを選択できます。教師は完全に制御でき、生徒の入力なしで生徒が接続する「教室」を選択できます。教室が設定されると、教師は各生徒にpingを送信して教室に接続することで、セッションを開始するクラスを開始できます。生徒は、教師によって強制されているため、接続するかどうかを入力できません。生徒が教室に接続すると、教師はクラス全体または個々の生徒に対していくつかのアクションを実行できます。

このセットアップ中に、各コンポーネントのアクセス許可レベルにも注意しました。学生のインストールは、学生がサービスを無効にできないように、改ざん防止と永続性を備えている必要があります。これは、起動時に自動的に開始されるシステムサービスとしてNetopエージェントをインストールすることで実現されます。教師のインストールは通常のユーザーとして実行され、起動時に開始されません。実行コンテキストと起動動作のこの違いにより、攻撃者は侵害された場合に昇格されたシステム権限を取得する可能性が高くなるため、学生のインストールをターゲットにすることになりました。さらに、通常の学校環境での生徒と教師の比率により、生徒のマシンで見つかった脆弱性がより広範囲に広がることが保証されます。

初期インストールが完了したら、ローカルネットワークでネットワークキャプチャを取得し、教師と生徒の間のトラフィックを記録しました。以下の図1に、最初のいくつかのネットワークパケットの概要と、教師と生徒のトランザクションがどのように開始されるかを示します。

図1:教師と生徒の間でキャプチャされたネットワークトラフィック

現在CVE-2021-27194として分類されている最初の観察結果は、すべてのネットワークトラフィックが暗号化されておらず、構成中に暗号化をオンにするオプションがないことでした。Windowsの資格情報(図2)やスクリーンショット(図4)など、通常は機密と見なされる情報でさえ、すべてプレーンテキストで送信されていることに気付きました。教師が生徒に「ログオン」コマンドを発行すると、ネットワーク上でWindows資格情報が監視されました。これは、教師または管理者がソフトウェアをインストールしたり、単に生徒のログインを支援したりするために使用できます。

図2:プレーンテキストで渡されたWindows資格情報

さらに、教室に接続している生徒がすぐに画面キャプチャを教室の教師に送信し始めたという興味深いデフォルトの動作を観察しました。これにより、図3に示すように、教師はすべての生徒をリアルタイムで監視できます。

図3:スクリーンショットを介してすべての生徒のマシンを表示している教師

暗号化されていないため、これらの画像は平文で送信されました。ローカルネットワーク上の誰もがこれらの画像を盗聴し、学生の画面の内容をリモートで表示できます。新しいスクリーンショットが数秒ごとに送信され、教師と盗聴者に各生徒のコンピュータのほぼリアルタイムのストリームが提供されました。これらの画像をキャプチャして表示するには、ネットワークカードをプロミスキャスモード(https://www.computertechreviews.com/definition/promiscuous-mode/)に設定し、Driftnet(https://github.com/deiv/driftnet)などのツールを使用するだけで済みました。これらの2つの手順により、ネットワークを介して渡された画像をキャプチャし、教室に接続している間、すべての生徒の画面を表示することができました。図4の画像は、Driftnetからキャプチャしたスクリーンショットを示しています。これにより、CVE-2021-27194として開示された最初の脆弱性を提出し、この調査結果について「CWE-319:機密情報のクリアテキスト送信」を参照しました。前に指摘したように、教師と生徒のクライアントはローカルネットワークを介して直接通信します。盗聴者が暗号化されていないデータにアクセスできる唯一の方法は、学生と同じローカルネットワーク上のトラフィックをスニッフィングすることです。

図4:ネットワーク経由でDriftnetからキャプチャされた学生のデスクトップの画像

ブロードキャストメッセージのファジング

生徒のコンピュータでのリモートコード実行を目的として、教師が生徒に送信する最初のネットワークパケットを分析し、教室に接続するように指示しました。これは、教師からすべての生徒に送信されたUDPメッセージであり、図5に示されています。

図5:教師のUDPメッセージのWiresharkキャプチャ

このパケットの目的は、ネットワーク上の教師用コンピュータの場所を生徒のクライアントソフトウェアに知らせることです。このUDPメッセージはブロードキャストスタイルですべての学生に送信され、ハンドシェイクやTCPのようなセットアップを必要としないため、これは突っ込みを開始するのに適した場所でした。

図5に示すUDPメッセージからカスタムScapyレイヤー(https://scapy.readthedocs.io/en/latest/api/scapy.layers.html)(図6)を作成し、各フィールドの分析と独自の作成を開始しました。パケット。UDPパケットで数日間ファジングした後、2つのことを特定することができました。まず、文字列の長さチェックが不足していることを確認しました。次に、ファザーによって送信されたランダムな値がWindowsレジストリに直接書き込まれていました。これらのテストの効果は、図7で簡単に確認できます。

図6:教師からのUDPブロードキャストメッセージ

レジストリにこれらの不正な形式のエントリがある場合でも(図7)、アプリケーションがクラッシュしたり、予期せず応答したりすることはありませんでした。これは、アプリケーションが変更されたパケットを適切に処理していなくても、重要なものを上書きしたり、文字列バッファーの境界を超えたりすることは決してないことを意味します。

図7:レジストリに書き込まれているサニタイズされていない文字

さらに先に進むには、ネットワークキャプチャから観察した次のいくつかのパケットを送信する必要がありました(図8)。最初のUDPメッセージの後、後続のすべてのパケットはTCPでした。TCPメッセージは、生徒と教師の間の接続をネゴシエートし、教室での接続の間、ソケットを開いたままにします。このTCPネゴシエーション交換は、ハンドシェイクと呼ばれる11パケットの転送でした。

図8:クラスを開始する教師のWiresharkキャプチャ

ネットワークプロトコルを逆にする

TCP接続要求に適切に応答するには、有効な教師がハンドシェイクにどのように応答するかをエミュレートする必要がありました。そうしないと、生徒は接続を切断します。TCPネットワークトラフィックのリバースエンジニアリングを開始し、実際の「教師」トラフィックをエミュレートしようとしました。少数のパケットをキャプチャした後、ペイロードはほぼ同じ形式に準拠し始めました。それぞれがパケットのサイズと文字列「T125」で始まりました。ハンドシェイクには、各教室の接続間で変化するフィールドを含む3つのパケットがありました。合計で、4つの変化するフィールドが識別されました。

最初のフィールドはsession_idで、これはIDAで識別され、図6のUDPパケットに示されています。UDPパケットを使用したファジング演習から、同じsession_idが複数回再利用された場合でも、学生は正常に応答することがわかりました。キャプチャした実際のネットワークトラフィックには、多くの場合、一意のsession_idがあります。

これにより、残りの3つの動的フィールドが残り、教師トークン、学生トークン、および一意の不明なDWORD(8バイト)として識別されました。教師と生徒のコンピュータが異なる複数の教室を設置し、これらの値を監視することで、これらのフィールドのうち2つを特定しました。教師トークンは静的であり、各教師に固有でした。同じことが学生トークンにも当てはまることを発見しました。これにより、各ハンドシェイクで動的な一意のDWORDフィールドが残りました。この最後のフィールドは最初はランダムに見えましたが、常に同じ相対範囲内にありました。以下の図9に示すように、調査の多くでこれを「Token3」とラベル付けしました。

図9:「Token3」を識別するPythonスクリプト出力

最終的に、WinDbgを使用して動的分析を実行している間、Token3の値は見慣れたものになり始めました。ヒープに割り当てられているメモリの範囲と一致していることがわかりました。これは図10で見ることができます。

図10:学生のPCからのWinDbgアドレス空間分析

これまでのUDPブロードキャストトラフィックの理解と、動的フィールドを使用してTCPパケットに適切に応答する機能を組み合わせることで、教師のワークステーションを正常にエミュレートすることができました。この新しい情報でPythonスクリプトを変更し、生徒とつながるためのリクエストを送信することで、これを実証しました。生徒が教師に接続すると、接続が成功したことを示すメッセージが表示されます。以下は、接続している教師(図11)と接続しているPythonスクリプト(図12)を示す2つの画像です。純粋にデモンストレーションの目的で、攻撃マシンを「ハッカー」、教室を「ハッカールーム」と名付けました。

図11:成功した教師のエミュレーション
図12:Pythonスクリプトからエミュレートされた教師の接続

ネットワークトラフィックをリバースエンジニアリングするプロセスをより詳細に理解するために、マカフィーの研究者であるダグラスマッキーイスマエルバレンズエラは、Netopで使用されているような独自のプロトコルをハッキングする方法についての詳細な講演を発表しました。彼らのウェビナーはこのブログよりもはるかに詳細であり、ここで見ることができます


コマンドアクションの再生

Pythonを使用して教師の接続をエミュレートすることに成功したため、わかりやすくするために、自分自身を攻撃者と呼び、Netopを介して確立された正当な接続を教師と呼びます。

次に、教師が実行できるアクションのいくつかと、それらをどのように活用できるかについて検討し始めました。教師が実行できるアクションの1つは、リモートの生徒のPCでアプリケーションを起動することです。教師スイートでは、教師は使い慣れたWindows実行プロンプトでプロンプトが表示され、実行するように設定されたアプリケーションまたはコマンドはすべて、生徒のマシンで実行されます(図13)。

図13:教師の「アプリケーションの実行」プロンプト

ネットワークトラフィック(図14を参照)を見ると、教師クライアントを使用して可能なことから逸脱できる可能性のあるフィールドをパケット内で見つけることを望んでいました。前述したように、すべてがプレーンテキストであるため、Wireshark内を検索することで、リモートシステムでアプリケーションを実行するために送信されたパケットを非常に簡単に識別できます。

図14:「calc」パケットの実行

学生のマシンでアプリケーションを実行するパケットの変更を開始する前に、まず、このトラフィックを正常に再生できるかどうかを確認したいと思いました。以下のビデオでわかるように、Pythonスクリプトは、各学生エンドポイントでPowerShellを実行し、続いてWindowsCalculatorを実行することができました。これは、有効な教師の行動でさえ、攻撃者にとって依然として有用である可能性があることを示しています。

攻撃者が教師をエミュレートし、生​​徒のマシンで任意のコマンドを実行できるため、2番目のCVEにたどり着きます。CVE-2021-27195は、変更されたローカルネットワークトラフィックを再生できたため、「CWE-863:不正な承認」に対して提出されました。

教師が生徒にコマンドを送信すると、クライアントはログインした生徒の権限に特権をドロップし、元のシステム権限を保持しません。つまり、攻撃者がリモートシステムへの無制限のアクセスを希望する場合、通常のトラフィックを単純に再生することはできず、代わりにトラフィックの各フィールドを変更して結果を観察する必要があります。

コマンド実行中の特権の削減を回避する方法を見つけるために、「コマンドの実行」パケット内にあるすべてのフィールドをファジングし続けました。コマンドが特権を下げるのを妨げるパケット構造を見つけることができなかったため、これは失敗しました。これには、学生のエンドポイントで処理されるリモートコマンドの実行を処理する際にコードを深く掘り下げる必要がありました。IDA内の実行パスをトレースすることにより、実際には特権を削除せずにリモートコマンドを実行できるパスがあることがわかりましたが、図15に示すように、特別な場合が必要でした。

図15:コード実行の代替パスを示すIDAグラフビュー
図16:ShellExecuteコードパスの拡大画像

特権の削減をバイパスして直接「ShellExecute」に移動するコードパスは、起動時に値が設定された変数をチェックしていました。ソフトウェアの起動後にこの値を更新する他のコードパスは見つかりませんでした。私たちの理論では、この値はインストールまたはアンインストール中に使用される可能性がありますが、「ShellExecute」パスに合法的に実行を強制することはできませんでした。

「ShellExecute」へのこのコードパスは、到達できるこのような他の同様のブランチがあるかどうか疑問に思いました。IDAで逆アセンブルされたコードを検索し始め、コードでラップされていない呼び出しを探した結果、特権が低くなりました。特権が減らされなかったが、ネットワーク経由でアクセスできなかった4つのケースが見つかりました。とにかく、それらはまだ潜在的に有用である可能性があるので、それぞれを調査しました。最初のものは、事前に入力されたURLでInternet Explorer(IE)を開くときに使用されました。これは、サポートシステムに関連していることが判明しました。学生のマシンのユーザーインターフェイスを調べたところ、Netopの「バージョン情報」メニューにある「テクニカルサポート」ボタンが見つかりました。

ユーザーがサポートボタンをクリックすると、IEがサポートWebフォームに直接開きます。ただし、問題は、特権が削除されることはなく、Netop学生クライアントもシステムとして実行されるため、IEプロセスがシステムとして実行されることです。これは図11で確認できます。この問題は、「CWE-269:不正な特権の割り当て」を参照する3番目のCVE、CVE-2021-27192として提出しました。

図17:システムとして実行されているInternet Explorer

ユーザーがより高い特権で実行されているアプリケーションにアクセスできる場合に、マウスのみを使用してローカルの特権昇格(LPE)を取得するための、十分に文書化された方法がいくつかあります。「名前を付けて保存」ボタンを使用してcmd.exeが配置されているフォルダーに移動し、それを実行する古い手法を使用しました。結果のCMDプロセスは、親プロセスのシステム権限を継承し、ユーザーにシステムレベルのシェルを提供します。

このLPEはエキサイティングでしたが、リモート攻撃ベクトルを使用して何かを見つけ、Pythonスクリプトを利用して教師のトラフィックをエミュレートしたいと考えていました。私たちは、ネットワークトラフィックをさらに深く掘り下げて、何が見つかるかを確認することにしました。攻撃者をシミュレートして、以下を模倣することに成功しました。

  • リモートCMD実行
  • 生徒の画面を空白にする
  • 再起動
  • コンピューターのシャットダウン
  • 個々のWebサイトへのWebアクセスをブロック
  • Netopプロパティのロックを解除(学生のコンピューター上)

上記のすべてのアクションのエミュレーション中に、それぞれのさまざまなフィールドでいくつかの基本的なファジングを実行し、6つのクラッシュを発見しました。これにより、Netopの学生のインストールがクラッシュして再起動しました。2つの実行違反、2つの読み取り違反、1つの書き込み例外、および1つのカーネル例外を見つけることができました。調査の結果、これらのクラッシュは簡単に悪用できないため、より詳細な調査の優先度が低いと判断しましたが、他のすべての調査結果とともに、それらをNetopに報告しました。


プラグインの探索

Netop Vision Proには、デフォルトでいくつかのプラグインがインストールされています。これらのプラグインは、メインのNetop実行可能ファイルからさまざまな機能を分離するために使用されます。たとえば、教師と生徒が互いにインスタントメッセージ(IM)を実行できるようにするために、MChat.exeプラグインが使用されます。メインの実行可能ファイルと同様のパラダイムでは、学生はこれらのプラグインを停止できないはずなので、それらもシステムとして実行され、探索する価値があります。

以前のアプローチを模倣して、プラグイン内で「ShellExecute」呼び出しを探し始め、最終的にさらに3つの特権昇格を発見しました。それぞれ、マウスのみを使用し、「名前を付けて保存」ウィンドウ内の制限付きファイルフィルターをバイパスして、同等の方法で実行されました。MChat.exe、SSView.exe(スクリーンショットビューア)、および[バージョン情報]ページの[システム情報]ウィンドウにはすべて、同様の[名前を付けて保存]ボタンがあり、コードやエクスプロイトを必要としない単純なLPEになります。上記の3番目のCVE、CVE-2021-27192の影響を受けるバージョンフィールドの下に、これらの各プラグインを追加しました。

私たちはまだリモートコード実行を実現する方法を探していましたが、LPEに使用される「ShellExecute」呼び出しはいずれもネットワーク経由でアクセスできませんでした。ユーザーが提供したデータをネットワーク経由で渡すプラグインの絞り込みを開始しました。これにより、MChatプラグインに注意が向けられました。調査プロジェクトの最初の調整の一環として、変更ログを確認して、関連するセキュリティの変更を探しました。このレビュー中に、図18に示すように、MChatクライアントに関連する興味深いログに注目しました。

図18:Netop.comからの変更ログ

チャット機能は、すべてのプラグインと同様にシステムとして実行され、テキストまたはファイルをリモートの学生のコンピューターに送信できます。攻撃者は、既存のファイルを上書きするか、ドロップされた実行可能ファイルをクリックするように被害者を誘導することにより、常にこの機能を有利に使用できます。チャット機能がどのように機能するか、具体的にはファイルがどのように送信されるかを調べたところ、学生からのユーザー操作なしでファイルが学生のコンピューターにプッシュされることがわかりました。教師がプッシュしたファイルはすべて「作業ディレクトリ」に保存され、生徒はIMウィンドウから開くことができます。最新のリリースより前は、システムとして開かれていました。これは、図18で参照されているように修正されました。チャットアプリケーションの機能をさらに深く掘り下げて、教師には、生徒の「作業ディレクトリ」内のファイルを読み取って、その中のファイルを削除する機能もあることがわかりました。CVE-2021-27195で実証された調査結果により、攻撃者としてエミュレーションコードを利用して、同じローカルネットワーク上のリモート攻撃ベクトルからこの「作業ディレクトリ」内のファイルを書き込み、読み取り、削除することができます。ファイルを読み書きするこの機能は、私たちが提出した最後のCVE、「CWE-276:不正なデフォルトのアクセス許可」を参照するCVE-2021-27193を占め、全体として最高のCVSSスコアは9.5でした。

MChatプラグインがシステムレベルのアクセスを提供する可能性があるかどうかを判断するには、プラグインのファイル操作が学生の権限に制限されているかどうか、またはプラグインが実行中のコンテキストからシステム権限を継承しているかどうかを調査する必要がありました。図19に示すように、MChatプラグインの分解されたコードを調べると、学生のコンピューター上のすべてのファイルアクションがシステム特権で実行されていることがわかりました。ファイル操作が終了した後でのみ、すべてのユーザーがアクセスできるようにアクセス許可が設定されます。これは、基本的にLinuxの「chmod777」コマンドを使用してファイルを普遍的に読み取り/書き込み可能にする効果です。

図19:全員へのアクセスを変更するMChatファイル操作のIDAスクリーンショット

これを検証するために、管理者アカウントを使用していくつかのテストファイルを作成し、学生がテストファイルを変更または読み取ることを禁止する権限を制限しました。教師スイートのロードに進み、MChatセッションを通じて、これらのファイルの読み取り、書き込み、および削除が可能であることを確認しました。これはエキサイティングな発見でした。ただし、攻撃者が事前に定義された「作業ディレクトリ」に制限されている場合、リモートターゲットに与える可能性のある影響は制限されます。「作業ディレクトリ」を変更できるかどうかを調査するために、教師スイートを調べ始めました。メニューのいくつかのレイヤーに隠されており(図20)、教師は実際にリモートの生徒の「作業ディレクトリ」を設定して、これをリモートで更新できることがわかりました。教師のコマンドを簡単にエミュレートできることを知っているということは、学生システムのどこにでも「作業ディレクトリ」を変更できることを意味します。

図20:教師のクライアントからのリモート学生パスの変更

MChatネットワークトラフィックの逆転

教師がシステムの実行可能ファイルを含むシステム上の任意のファイルを上書きできることがわかったので、この攻撃を自動化してPythonスクリプトに追加したいと思いました。これを自動化することで、攻撃者がこのような問題を使用して、現実の世界に影響を与えるツールやスクリプトを作成する方法を紹介したいと思います。チャットセッションを開始するには、前に説明した11パケットのハンドシェイクを開始する必要がありました。生徒が攻撃マシンに接続したら、対象の生徒とのチャットセッションを開始するようにリクエストを送信する必要がありました。この要求により、学生はTCPを使用して応答しますが、今回は別のポートでMChat7パケットハンドシェイクを開始します。これには、前述と同様のアプローチで、この新しいハンドシェイク形式をリバースエンジニアリングする必要がありました。ニアリングする必要がありました。 最初のハンドシェイクとは異なり、MChatハンドシェイクにはセッションごとに1つの一意の識別子があり、テストの結果、IDを静的な値でハードコーディングしても悪影響はないと判断されました。

最後に、システム権限で実行されることを保証できるファイルを上書きしたいと思いました。MChatハンドシェイクが正常に完了したら、「作業ディレクトリ」を選択したディレクトリに変更するパケットを送信する必要がありました。図21は、学生のPCの作業ディレクトリを変更するために使用されるScapyレイヤーとしてのパケットを示しています。Netopプラグインディレクトリは、このディレクトリから実行されるものはすべてシステムとして実行されるため、変更するのに最適なターゲットディレクトリでした。

図21:学生のPCの作業ディレクトリの変更

システムレベルで実行するための最後のステップは、プラグインの1つを「悪意のある」バイナリで上書きして実行することでした。テストの結果、ファイルが同じディレクトリにすでに存在する場合、チャットアプリケーションはファイルを上書きせず、代わりにファイル名に番号を追加するほど賢いことがわかりました。「悪意のある」プラグインの代わりに元のプラグインが実行されるため、これは私たちが望んでいたことではありません。これは、ファイルの削除に使用されるコマンドを含むパケットもリバースエンジニアリングする必要があることを意味しました。ファイルを削除して新しいファイルを保存するために使用されるScapyレイヤーを図22に示します。

図22:ファイルを「削除」(MChatPktDeleteFile)および「書き込み」(MChatPkt6)するPythonScapyレイヤー

これらのScapyレイヤーを使用して、元のプラグインと同じ名前を維持しながら、ターゲットプラグインを選択したバイナリに置き換えることができました。学生のコンピューターにスクリーンショットを表示するために使用されるプラグインである「SSView.exe」プラグインを選択しました。このプロセス全体を視覚化するには、図23を参照してください。

図23:MChatプラグインを使用して実行可能ファイルを上書きする攻撃フロー

SSView.exeプラグインが上書きされたので、このプラグインをトリガーすると、攻撃者が提供したコードが実行されます。この実行はNetopシステムの特権を継承し、認証されていないリモート攻撃ベクトルからすべてを実行できます。


影響

これらの問題の集大成がいくつかの否定的な結果につながる可能性があるシナリオを想像するのは難しいことではありません。最大の影響は、ローカルネットワーク上の任意のデバイスからのシステム権限を持つ任意のコードのリモートコード実行です。このシナリオは、wormableになる可能性があります。つまり、実行する任意のバイナリは、他のデバイスを探して拡散を促進するように設計できます。さらに、教室の「Open Enrollment」オプションが設定されている場合、Netop Vision Proの学生クライアントは数秒ごとにネットワーク上でそのプレゼンスをブロードキャストします。これは、攻撃者にとって有利に使用され、ローカルネットワークに接続されているすべての学生のIPアドレスを特定できます。図24に示すように、Pythonスクリプトは学生のブロードキャストメッセージを5秒間スニッフィングし、同じネットワーク上の3台の学生のコンピューターすべてを検出しました。

図24:ローカルネットワーク上のすべての学生の検索

攻撃者は、学生用ソフトウェアを実行しているコンピュータのリストを使用して、各コンピュータに個別にコマンドを発行し、システム権限で任意のコードを実行する可能性があります。ハイブリッドおよびeラーニングのコンテキストでは、学生のコンピューター上のこのソフトウェアがオフにならないことを覚えておくことが重要です。このソフトウェアは常に実行されているため、使用されていないときでも、デバイスが接続するすべてのネットワークに教師がいる可能性があると想定し、その存在をブロードキャストし始めます。攻撃者は学校のネットワークを危険にさらす必要はありません。必要なのは、図書館、喫茶店、ホームネットワークなど、このソフトウェアにアクセスできるネットワークを見つけることだけです。適切に設計されたマルウェアが休止状態になり、感染したPCが接続する各ネットワークをスキャンする可能性があるため、これらの学生のPCの1つがどこで侵害されても問題ありません。

これらのマシンが侵害されると、リモートの攻撃者はシステム特権を継承するため、システムを完全に制御できます。この時点では、システムとして実行されている攻撃者がファイルにアクセスしたり、プロセスを終了したり、侵入先のマシンで大混乱を引き起こしたりするのを阻止することはできません。これらの問題の影響について詳しく説明するために、いくつかのシナリオを提案できます。攻撃者は、これらのマシンの検出可能性を利用して、ネットワーク上のすべての学校のコンピューターにランサムウェアを展開し、学校または学区全体を停止させる可能性があります。よりステルスな攻撃者は、キーロガーソフトウェアをサイレントにインストールし、学生のスクリーンショットを監視する可能性があります。これにより、ソーシャルメディアや金融アカウントが侵害される可能性があります。最後に、攻撃者は学生のWebカメラを監視する可能性があります。侵害されたソフトウェアから物理的な領域へのギャップを埋めます。概念実証として、以下のビデオは、攻撃者がCVE-2021-27195とCVE-2021-27193を組み合わせて、Netop Vision Proを実行している各コンピューターのWebカメラを検索、悪用、監視する方法を示しています。

ソフトウェアの安全な適応は、セキュリティが最初から組み込まれていると、後から考えるよりもはるかに簡単に実現できます。ソフトウェアが「安全な」環境向けに構築されているかどうかは簡単にわかります。Netop Vision Proは、インターネットに接続したり、管理された学校のネットワークから切り離したりすることを意図したものではありませんでしたが、暗号化などの基本的なセキュリティ機能を実装することは依然として重要です。ソフトウェアを設計している間、将来何が当たり前になるかを想定するべきではありません。たとえば、このソフトウェアが最初に開発されたとき、リモート学習またはハイブリッド学習の概念は遠い将来のことと考えられていたかもしれませんが、今ではそれが当然になりつつあります。セキュリティの決定が最初から統合されている場合、ソフトウェアは、ユーザーを将来の脅威からより適切に保護しながら、新しい環境に適応できます。


開示と推奨される緩和策

これらすべての調査結果を2020年12月11日にNetopに開示し、その直後に返信を受け取りました。私たちの開示には、すべてのネットワークトラフィックの暗号化の実装、認証の追加、生徒への教師の検証、およびより正確なパケット解析フィルターに関する推奨事項が含まれていました。2月下旬にリリースされたNetop Vision Pro 9.7.2では、Netopはローカル権限昇格を修正し、以前はプレーンテキストだったWindows資格情報を暗号化し、MChatクライアント内のリモートファイルシステムでの任意の読み取り/書き込みを軽減しました。ローカル権限昇格は、すべてのプラグインを学生として実行し、システムとして実行しないことで修正されました。このように、「名前を付けて保存」ボタンは学生のアカウントに制限されます。Windows資格情報は、ネットワーク経由で送信される前にRC4を使用して暗号化されるようになりました。盗聴者がアカウントの資格情報を収集するのを防ぎます。最後に、すべてのプラグインが学生として実行されているため、MChatクライアントは、影響のセクションに示されている攻撃を正常に軽減するシステム実行可能ファイルを削除および置換できなくなりました。学生のコンピューターのスクリーンショットを含め、ネットワークトラフィックはまだ暗号化されていませんが、Netopは、将来の更新のためにすべてのネットワークトラフィックに暗号化を実装する作業を行っていることを保証しています。Netopの卓越した対応と、より安全なソフトウェアバージョンの迅速な開発とリリースを認識し、業界のベンダーが業界の研究者からの責任ある開示に対応するための標準としてこれに注意することをお勧めします。MChatクライアントは、影響のセクションに示されている攻撃を正常に軽減するシステム実行可能ファイルを削除および置換できなくなりました。学生のコンピューターのスクリーンショットを含め、ネットワークトラフィックはまだ暗号化されていませんが、Netopは、将来の更新のためにすべてのネットワークトラフィックに暗号化を実装する作業を行っていることを保証しています。Netopの卓越した対応と、より安全なソフトウェアバージョンの迅速な開発とリリースを認識し、業界のベンダーが業界の研究者からの責任ある開示に対応するための標準としてこれに注意することをお勧めします。MChatクライアントは、影響のセクションに示されている攻撃を正常に軽減するシステム実行可能ファイルを削除および置換できなくなりました。学生のコンピューターのスクリーンショットを含め、ネットワークトラフィックはまだ暗号化されていませんが、Netopは、将来の更新のためにすべてのネットワークトラフィックに暗号化を実装する作業を行っていることを保証しています。Netopの卓越した対応と、より安全なソフトウェアバージョンの迅速な開発とリリースを認識し、業界のベンダーが業界の研究者からの責任ある開示に対応するための標準としてこれに注意することをお勧めします。

※本ページの内容は2021年3月21日(US時間)更新の以下のMcAfee Blogの内容です。
原文:Netop Vision Pro – Distance Learning Software is 20/20 in Hindsight
著者: and