何とはなしに、きつねとコーラ。

管理人のきつねとその相棒のべっつりコーラが、日々の出来事について思ったことや感じたことをただ淡々と述べていくだけのブログ。

更新推奨!?iPhoneその他AppleのOSに危険な脆弱性だって!

AppleOSに脆弱性

アメリカのセキュリティ企業のSemmleさんが、10月30日にAppleさんの作った端末のOSに脆弱性を見つけたと発表したらしいですね。

Appleさんは「Mac」や「iPhone」、「Apple Watch」などでおなじみの会社ですね。私もiPhone 7 を愛用しています。パソコンはWindowsですが……。

それで、今回の問題なのですが、どうやらAppleさんの全てのOSに共通してみられるようですね。

AppleさんのOSには

パソコン用の「macOS
iPhoneiPadに使われている「iOS
Apple TV向けの「tvOS」
スマートスピーカーHome Podに搭載されている「audioOS」
Apple Watch用の「watchOS」

があって、今回の不具合はこれらのOSのカーネル部分に見つかったようです。

カーネルというのはOSの中核となる部分で、車にたとえるならエンジンみたいなものです(たぶん)。
Appleさんは「XNU」という自社開発のカーネルを使っていますが、このXNU、Appleさんの全てのOSに組み込まれているため、XNUの不具合が全てのOSに反映されてしまったのですね。

なのでこの問題、13億台以上ある全てのAppleバイスに影響するかもしれないと言われているようです。

いけない……私のiPhone 7も危ないのだろうか。

具体的にどのような問題があったのでしょう。
どうやら大きく分けて二つの不具合が確認されたようです。


問題その1

こちらはXNUカーネル内のネットワーク系の処理の問題のようですね。

「ICMPパケット処理モジュールのヒープバッファオーバーフロー脆弱性(CVE-2018-440)」……だそうです。

……なるほどバッファオーバーフローか……それは危ないな。
AppleさんのOSはUNIXをベースとしているため、Windowsに比べると守りが堅いことで知られていますが、まさかこんな弱点があったとは。

……などと一人で納得していてはいけませんね。
とりあえずこういう時はバッファオーバーフローについて簡単に説明せねば。


…………どこから説明しよう……ちょっとむずかしいな………。


まず、前提として……。
パソコンやスマホなどを含める全てのコンピュータは全て大きく分けて三つの部品からできていますね。

1つは「処理装置」などと呼ばれるもので、コンピュータの中で実際に演算を行う頭脳となる部分です。「作業する人」と思えばいいでしょう。パソコンではCPUと呼ばれますね。
2つ目は「主記憶装置」と呼ばれるもので、「作業する人」が作業中のデータを置いておく場所です。整理中の書類を置いておく「机」のようなものだと思えばいいと思います。パソコンではメモリと言いますね。
3つ目は「補助記憶装置」と呼ばれるもので、作業が終わったデータや、ずっと保存しておきたいデータが置かれる場所です。「本棚」のようなもので、パソコンではハードディスクやUSBメモリなどがありますね。

これらは全てのコンピュータに共通のもので、変わることはありません。
パソコンもiPhoneガラケースマートスピーカー(たぶん)も、基本構造は同じです。


このうちバッファオーバーフローに関係するのは「机」と「作業する人」の部分ですね。

コンピュータを起動している間、「机」の上には「作業する人」が作業するための「作業手順書(マニュアルのようなもので、プログラムなどと言われますね)」と、実際に作業対象となる「書類(データ)」が置かれています。
この「書類が置かれている場所」と「作業手順書が置かれている場所」は普通は分けられており、「作業する人」は書類の内容と手順書の内容とを混同することはありません。

「手順書は左、書類は右」のように、OSが明確に分けてくれているからです。
これなら作業する人は「左の内容を見ながら右の書類を処理すればいいんだな」となります。

ところが、もし何らかの不具合で、「書類」が「手順書」と同じ場所に置かれてしまった場合はどうでしょう。
たとえば「書類が沢山ありすぎて机の上の書類置き場のスペースが足りない。仕方がないから書類を手順書置き場に置いてしまおう」というように。

本来なら「置ききれなかった書類」はその場で捨てられてしまうはずなのですが、OSが「置ききれなかったら手順書置き場に置く」という間違った行動をとったとしたら……。
おまけにあろうことかその「書類」の内容は「手順書」にそっくりで、「作業する人」が見ても違和感が無いようなものだったとしたら……?

「これは左側に置かれているし、内容も手順書として解釈できるから手順書なのだろう。よし、これに従って作業をしよう」となってしまいますね。

このような現象を起こしてしまうのが「バッファオーバーフロー」と呼ばれる不具合です。
机が明確に分けられていて、本来なら置けないはずの場所に置けないはずの書類が置けてしまうのですね。
「書類」が沢山ありすぎる時などに、本来なら捨てられたり「本棚」に戻されたりするはずの余った「書類」がうっかり「手順書」置き場に置かれてしまうことがある、恐ろしい不具合です。

(もちろん、必ずしも「手順書」置き場に置かれてしまうわけではありません。もしかすると他の場所にある別の「書類」置き場かもしれませんが、いずれにせよ不具合が出ます。)

本物の机の上ならば、うっかり手順書の上に書類を置いてしまったとしても、書類の下にはちゃんと手順書が残っていますよね。
ですがコンピュータの中にある「机」の場合、同じ場所に複数のものを置いたりしたら、先に置かれていたものは消えてしまいます。

つまり、手順書の上から書類を置いたばあい、後で置かれた書類が残り、最初に置かれていた手順書は消えてしまうのですね。

「うっかり置いてしまった書類」が「手順書」に成り代わってしまうわけです。


ここで思い出してみると……今回の不具合はネットワーク機能の中にあるICMPパケットの処理モジュールにあったとありました。

ICMPはざっくりいうと「これからアクセスしたい相手のコンピュータがちゃんとネットワークにつながっているかを確認するために呼びかけるプロトコル」です。
携帯電話のメールで「今から電話してもいい?」と相手に確認を取るようなものですね。

プロトコル……というのは通信するときのデータのやり取りの仕方などを示す「決まり」のことで、通信するときはこの決まりに則った方法で相手に送るデータ(パケットなどと言いますね)を作り、送信します。
相手もその決まりに則った方法でデータを開封するので、送ったデータがまた意味のある形として取り出せるのですね。

今回の不具合は「ICMPという決まりに則って送られてきたデータを、ICMPという決まりに則って解釈する機能」の部分にバッファオーバーフローを生じさせてしまう欠陥があった、ということなのですね(おそらく)。

つまり、ICMPという決まりに則って外から送られてきたデータがうっかり「手順書を置く場所」に置かれてしまう危険性をはらんでいたのですね。

普通に送られてきたデータならおそらく問題は無いのでしょう。
ですがもし「わざと手順書を置く場所に置かせる目的で書かれた偽の手順書」が送られてきた場合はどうでしょう。
「書類」置き場が溢れることを見越して、わざと大量の意味の無い「書類」とその最後に「偽の手順書」を一緒にして送った場合……溢れた「偽の手順書」は「手順書」置き場に置かれてしまいますね。

そしてその手順書の中には「このコンピュータはこれ以降この手順書の送り主の命令を聞くように」というような命令が書かれていたら……?
「作業する人」は何のためらいもなく「手順書」の内容を実行してしまいます。

これでは「手順書」を送った人にコンピュータが乗っ取られてしまいますね。

また、送られてきたデータ自体に「偽の手順書」としての意味は無かったとしても、もしそれが「手順書」を置くはずだった場所に置かれてしまえばどうなるでしょう。
何だかよくわからない情報が「手順書」置き場に置かれていたら、「作業する人」は見ても何が書いてあるのかが分からず混乱してしまいますね。
最悪システムが強制終了してしまう可能性もあります。


このように、バッファオーバーフローの不具合一つだけで色々な危険が出てきてしまうのですね。


この問題、iOS 11もしくは以前のmacOS Sierra/High Sierraを積んでいる全ての端末に影響があるようですね。
iOS 12および最新パッチ適用済みのmacOS SierraとHigh Sierraは安全なのだそうです。

ただSemmleさん曰く、10月29日時点で全iOS端末のうち安全なiOS 12を積んでいるのは60%だけだそうなので、残りの40%の端末はできるだけ早くOSを更新した方が良いとのことです。

 

問題その2

まだありました。

XNUカーネルのクライアント側の「ネットワーク・ファイル・システム(NFS)」というプロトコルの実装をしている部分に5つの脆弱性が見つかったようです。

……クライアント……というのは、サーバ(データを提供するコンピュータやソフトウェア)からデータを受け取る役割を持つ部分で……受信機のようなものだと考えて下さい。
先ほどの「プロトコルに則ってデータを開封する」部分もクライアントの一部として機能します。

こちらの不具合はICMPプロトコルではなくNFSプロトコルに則ってデータを開封する部分に生じていたのですね。
それぞれの不具合は

CVE-2018-4259
CVE-2018-4286
CVE-2018-4287
CVE-2018-4288
CVE-2018-4291

などとよばれていますが、具体的な内容は残念ながら見つけられませんでした。

NFSプロトコルは主にUNIXというOSで利用されている通信プロトコルですね。
AppleさんのOSは元々UNIXがベースとなっているため、UNIX用のプロトコルを使っているのですね。

これはパソコンなどの中にあるファイルにアクセスするのと同じように、ネットワークを経由して接続された別のコンピュータの中にあるファイルにアクセスするためのプロトコルです。

……つまり、今自分が使っているパソコンの中にあるファイルを見るのと同じ感覚で、そのパソコンとつながっている他のパソコンの中身を見ることができるのですね。

そのためNASなどでよく使われているみたいです。

NASはネットワーク・アタッチド・ストレージの略で、つまりネットワークにつながっている補助記憶装置ですね。

コンピュータネットワークに直接接続してつかうファイルサーバ(ファイルが置かれているコンピュータ。本棚が沢山設置されている部屋……書類保管庫みたいなものですね要するに)のことで、ネットワーク(LAN)を通じて複数の端末でデータを共有することができるわけです。

……つまり、一台のコンピュータ(ファイルサーバ)に、パソコンのハードディスクのようにデータを蓄えておく役割を持たせてるのですね。
ネットワークを通じて複数の端末(パソコンなど)と、ハードディスク役のコンピュータとをつなぐことにより、繋がっている全ての端末で同じデータを共有できるということです。
ネットワーク経由で複数の端末が一つの同じハードディスクに繋がってるということですね。

「共通のハードディスク」という一つの保管庫に書類をまとめておくことにより、保管庫の場所を知っている人たちはみんな書類を共有することができるようになります。

この「共通のハードディスク」に対しての読み書きに使われるプロトコルNFSなのですね。


そしてどうやら今回の脆弱性を利用すれば、この「共通のハードディスク」を使って悪さができるようです。
「共通のハードディスク」に何か仕掛けをしておくことにより、そこにアクセスしてきた端末に管理者権限でアクセスするなどの攻撃ができるのですね。

つまり、不具合の詳細が分からないので具体的なやり方はわかりませんが、おそらく喩えて言うなら書類保管庫の中に「明日からあなた達の上司は○○さん」などと偽の情報を書いた貼り紙をしておくことによって、保管庫に書類を取りに来た人たちが本当の上司のことを忘れて「〇〇さん」の指示を聞くようになってしまうのでしょう。

管理者権限で端末にアクセスできれば、何でも好きなことができてしまいます。
ファイルを勝手に削除したり、また逆にウイルスやワームなどの危険なファイルを入れたりやなんかもやり放題。

これまたパソコンを乗っ取られてしまう可能性がある恐ろしい不具合ですが、こちらも7月9日に公開されたmacOS 10.13.6では修正済みなのですね。


解決済みだが早急にアップデートが必要

いずれの問題も、SemmleさんがAppleさんに報告し、Appleさんも直ちに直してくれたようですね。
OSを最新版にすれば問題は無くなるとのことなのですが、そういえば私のiPhone 7はずっとアップデートしていないのです……これはいけない。早くしなきゃ……。iOS 12が出ているなんて知らなかった……。

みなさんも早めに更新しておきましょう。大事な端末を悪い人に乗っ取られないうちに…………。