VNCを使ったリモートアクセスの脆弱性

当社のICS CERTチームは、4つのVNC実装に37の脆弱性を発見しました。ほとんどの脆弱性は修正されましたが、すべてではありません。

リモートアクセスは便利であり、どうしても必要な場合もあります。マイナス面は、企業インフラへの侵入口となってしまう可能性があることで、リモートアクセスツールに脆弱性がある場合はなおさらです。

VNCの脆弱性

KasperskyのICS CERTでは、Virtual Network Computing(VNC)の実装をいくつか調査しました。 VNCは、技術サポート、機器の監視、通信教育その他の目的で広く採用されている、一般的なリモートアクセスシステムです。これらの実装には合計で37の脆弱性が発見され、そのうちのいくつかは1999年以降検知されずにいました。

VNCシステムを使用するデバイスの数を正確に示すのは困難ですが、Shodanのデータから判断すると、オンラインでアクセス可能なVNCサーバーの数は、調査時点で60万を超えていました(英語)。実際の数は、それよりも多い可能性があります。

脆弱性はどこで見つかったか

当社エキスパートが調査したのは、一般的なオープンソースのVNC実装4種です。

  • LibVNC:アプリ開発に利用可能な、既製コードスニペットのまとまり(いわゆるライブラリ)。 LibVNCは、たとえば仮想マシンへのリモート接続を許可するシステムで使用され、iOSやAndroidを搭載したモバイルデバイスでも使用されています。
  • TightVNC 1.X:ヒューマンマシンインターフェイス(HMI)への接続用に、産業用自動化システムのベンダーが推奨するアプリケーション。
  • TurboVNC :グラフィック、3D、動画を扱うリモート作業向けのVNC実装。
  • UltraVNC:Windows専用に構築されたVNC実装。工業生産でもHMI接続用に広く使用されています。

バグは4つのシステムすべてで発見されました。TurboVNCに1、TightVNCに4、LibVNCに10、UltraVNCには22のバグが見つかっています。

どのような脆弱性か、どう悪用される可能性があるか

VNCは2つの部分で構成されています。リモート接続先であるコンピューターにインストールされたサーバーと、接続元のデバイスで稼働するクライアントです。脆弱性がサーバー側で見つかることはあまりありません。サーバーの方がシンプルであるため、バグが少ないのが普通です。今回の調査では、サーバーとクライアントの双方にバグが見つかりました。ただ、サーバーに対する攻撃は多くの場合、認証を突破しないとできません。

見つかったバグはすべて、メモリの不正使用関連です。悪用された場合、比較的ましなケースでは、誤作動とサービス拒否の発生にとどまります。より深刻なケースでは、デバイス上の情報に対する不正アクセス、またはシステム上でのマルウェア実行が可能です。

一部の脆弱性は修正済みだが…

当社のCERTチームは、これらライブラリおよびアプリケーションの開発者にバグを報告しました。ほとんどのバグはすでに修正されていますが、例外があります。TightVNCの初期バージョンはサポートが終了しており、開発側は同バージョンについて脆弱性対応しない意図を示しています。別のVNCプラットフォームへの移行を検討するべきかもしれません。

多くのオープンソースプロジェクトがそうであるように、脆弱なコードは多数のソフトウェア開発で使用されています。自分たちが作成するソフトウェアに使われているオープンソースのコードの更新に、すべての開発者が目を光らせているわけではありません。このようなプログラムは、コードが更新されるまで脆弱なままであり、残念なことではありますが、いつまでも更新されない場合もあります。

企業が取るべき行動とは

発見された脆弱性の詳細は、Kaspersky ICS CERT のWebサイトでレポートとして公開されています(英語)。今回の調査は産業関連企業におけるVNCの使用に焦点を当てたものですが、この脅威はVNCを導入しているその他分野の企業にも関連します。

これらの脆弱性がサイバー犯罪者に悪用されることを防ぐため、インフラ内にあるリモートアクセス用プログラムの監視をお勧めします。

  • リモート接続が可能となっているデバイスを確認し、必要でない場合はリモート接続できないようにする。
  • VNCだけでなく、すべてのリモートアクセス用アプリケーションをリスト化し、バージョンが最新であることを確認する。信頼性に疑問がある場合は、使用を中止してください。使用を継続する場合は、必ず最新のバージョンにアップグレードしてください。
  • VNCサーバーを強力なパスワードで保護する。サーバーに対する攻撃を成功しにくくするためです。
  • 信頼性の低いVNCサーバー、またはテストしていないVNCサーバーには接続しない。
  • 産業関連の企業環境では、産業用自動化システムに特化したセキュリティソリューション(Kaspersky Industrial CyberSecurityなど)を使用する。
  • 信頼できるセキュリティソリューションを使用して企業を保護する。
ヒント

ホームセキュリティのセキュリティ

最近では様々な企業が、主にカメラなどのスマートなテクノロジーを活用したホームセキュリティサービスを提供しています。しかし、セキュリティシステムは侵入者からの攻撃に対してどの程度セキュアなのでしょうか?