情報流出の防止に重要な心理的安全性

他社のシステムに侵入する『ペネトレーションテスト』を業務とする筆者が、
攻撃者の目線でセキュリティ対策について考えます。

上野 宣 氏

株式会社トライコーダ 代表取締役 上野 宣 氏

奈良先端科学技術大学院大学で情報セキュリティを専攻。2006年に株式会社トライコーダを設立。ハッキング技術を駆使して企業などに侵入を行うペネトレーションテストや各種サイバーセキュリティ実践トレーニングなどを提供。

第7回古いコンピューターを使い続けると何が起きるのか

古いコンピューターの危険性

ここで「古いコンピューター」と言っているのは、企業内で何年も使い続けられている従業員のPCや何らかのサーバー、WebカメラなどのIoT機器のことを指しています。古いコンピューターには旧世代のOSや更新されていないソフトウェアが稼働しているため、それを使い続けると脆弱性やセキュリティの問題が残り続けます。皆さんは、攻撃される可能性を漠然とわかっているとは思いますが、実際にはどういったことが起きるのかご存じでしょうか。

ハードウェア自体の寿命などはさておき、筆者がペネトレーションテストで侵入する際に「古いコンピューター」をどのように利用するのかを見ていきましょう。

脆弱性を利用して「シェルコード」が実行される

EOL(End Of Life)を迎えた旧世代のOSやソフトウェアは、製品のライフサイクルが終了しているため、致命的な脆弱性が発見されても、その多くは修正されません。攻撃者が利用する致命的な脆弱性の1つは「任意のコード実行」と呼ばれるもので、名前のとおり、攻撃者がOSやソフトウェアの脆弱性を利用して任意のプログラムを実行する攻撃のことです。「任意のコード実行」がネットワーク越しに利用できる場合には、「リモートコード実行(Remote Code Execution: RCE)」と呼ばれることもあります。

ところで、ここでいう「任意のプログラム」とは何でしょうか。「任意」ということは、あらゆるプログラムを指します。その環境で実行できるプログラムのすべてが対象です。OSに備わっているメモ帳のようなプログラムやOS標準のコマンドはもちろん、インストールされているプログラムであれば何でも実行できてしまいます。

さらにその脆弱性には、外部からネットワーク経由で送り込まれてきたプログラムの実行が可能な場合があります。このような状況で攻撃者が使うのは「シェルコード(shellcode)」と呼ばれる種類のプログラムで、攻撃に特化したコマンド実行環境のソフトウェアの総称です。「シェル(shell)」はLinuxだと「bash」、Windowsならば「コマンドプロンプト」など、コンピューターに対してコマンドを実行するソフトウェアのことを指します。

「任意のコード実行」の脆弱性が存在すれば、攻撃者はそれを利用して相手の環境に合わせたシェルコードを作成し送り込んできます。シェルコードの多くは、攻撃者側の環境と双方向で通信ができる機能を備えているので、攻撃の実行後に通信が確立すると「SSH」や「Telnet」のようにリモートから自由にコマンドを実行できる環境が手に入ります。

シェルコードの中には侵入の際に便利なツールが入っているものもあり、そのコンピューターの管理者権限を奪ったり、ほかのコンピューターを探索して侵入するための攻撃コードなどが含まれているものもあります。こういったシェルコードは特殊なものではなく、オープンソースなどで誰でも手に入るものがほとんどです。

「任意のコード実行」のように、致命的な脆弱性が修正されない古いコンピューターは、攻撃者にとっては真っ先に狙うべき対象で、発見すればすぐに攻略し、最終的な目的を達成するための足掛かりとして活用したいのです。EOLを迎えているOSやソフトウェアには「任意のコード実行」の脆弱性が修正されないまま残っているものもあるため、早急に処分して新しいものへの乗り換えを実施すべきです。

古いプロトコルにも弱点がある

脆弱性はソフトウェアだけの問題ではありません。通信に利用するプロトコルの実装などでも発見されることがあります。前回83号の本連載、無線LANの回では「WEP」と呼ばれるプロトコルには脆弱性が発見されており、それを利用することで盗聴やなりすましが容易にできてしまうことを説明しました。

古いプロトコルの中でも特に侵入で利用されるのは「SMB(Server Message Block)」という、主にWindowsネットワークでのファイル共有やプリンター共有などに使われるプロトコルです。最新版は、Windows 10から搭載された「SMB 3.1.1」ですが、Windows 2000やXPから利用され始めた「SMB 1.0」には脆弱性が多く報告されています。

この「SMB 1.0」には「EternalBlue」と呼ばれる悪名高い脆弱性があり、これを利用するとネットワーク越しに任意のコード実行が可能になります。SMBはファイル共有などに使われるプロトコルなので、ほとんどのネットワークで利用可能な状態です。そのため、この脆弱性が発見された2017年ごろにはかなり悪用されています。2017年ごろに流行したランサムウェア「WannaCry」も、この脆弱性を利用してほかのコンピューターへの感染拡大を行っていました。筆者も、古いコンピューターを稼働させている企業には、何度もこれを利用して侵入を繰り返しています。

「SMB 1.0」はWindows 10(Ver.1709)では初期状態で無効化されていますし、古いOSでも設定によって無効化することはできます。しかし、ネットワーク内に「SMB 1.0」しか使うことができない古いコンピューターなどがあると、無効化することにちゅうちょしてしまうかもしれません。それでも、こういった問題が起きる可能性を考慮して、古いプロトコルも切り捨てるべきでしょう。

新しくするだけで圧倒的なセキュリティ対策になる

最新のWindowsはWindows 11ですが、かなり堅牢なOSとなっています。致命的な脆弱性がないだけではなく、容易に任意のコード実行をさせないための仕組みや、さまざまなセキュリティ対策が実装されているため、侵入することは困難を極めます。企業によってはコストの面からOSやソフトウェアを最新のものにリプレースすることをためらうこともあるでしょう。しかし、セキュリティ対策コストとして考えると、リプレースした方が総合的に見て安くなることもありますので、ぜひ古いコンピューターを捨てて新しいものに切り替えることも検討してみましょう。

(「SKYSEA Client View NEWS vol.84」 2022年6月掲載)

情報誌『SKYSEA Client View NEWS』のご紹介
ページのトップへ
ささいなご質問にも専門スタッフがお答えします!導入相談Cafe 詳しくはこちら