2018.03.19
OSの深層部分、知れば知るほど奥深い、macOSの仕組みを解き明かす。
ソースコードが流出
2月8日、CNETなどネット上のニュースサイトで「iPhoneのソースコードが流出」という記事が掲載されました。報道によるとソースコードの管理および共有サイト「ギットハブ(GitHub)」にて、何者かによりiOSを構成するソフトウェアの一部である「iBoot」「SecureROM」のものと思われるソースコードがアップされ、拡散しているとのこと。その後アップル自身もソースコードの流出を認めコードは削除されました。
これらは、iPhoneの電源投入からiOSを読み込み、起動をするまでを担うソフトウェアのソースコードです。とても重要なソフトウェアですが、幸い流出したのは3年前のiOS 9用でした。このため、アップルはニュースサイトのマックルーモア(MacRumors)に対し、この流出による安全性についての影響はないとの返答をしています。現実的にはこの流出が即座に何か問題を引き起こすことはないと言えます。
しかし、今回のケースで厄介なところは、OSの起動前のソフトウェアのソースコードである、という点にもあります。OSが起動したあとは多重のセキュリティがかけられ、ソフトウェアはOSに保護され安全に実行されます。一方、OSの起動前はそうした安全機能はありません。いってみればやりたい放題です。OSの起動前にコンピュータの中に潜り込みOSの陰で稼働し、裏をかくような悪意あるソフトウェアは何度とその可能性が指摘され、実際に存在もしていました。
こうした危険性があるため、iOSのソースコードのほとんどは公開されていません。公開されているのは、WebKitなど一部に限られます。 これはダーウィン(Darwin)の名のもとmachカーネルから多くのOSの基幹部分が公開されているmacOSとiOSの大きな違いです。
もちろん、ソースコードが公開されることで外部のセキュリティ専門家が問題点を指摘して、改善されていくという利点もあります。オープンソースの世界ではこれはよくあることで、またmacOSのセキュリティアップデートの修正内容をみても外部からの指摘からというケースが少なくありません。
【 ソースコードとは? 】
ソースコードとは、ソフトウェアの設計図ともいえるもので、プログラマーが実際に記述します。これをコンパイラというソフトウェアが読み込み、実際にCPUで実行できるプログラムに変換、出力します。そうやってコンパイルされたファイルをまとめ上げ、実際に実行できるソフトウェアにすることをリンクといい、こうしたソースコードから実行ファイルを作るまでの工程をまとめて「ビルド」と言います。普段私たちユーザがアイコンとして見ているアプリケーションはビルドされたあとのものになります。
ソースコードが手に入ると、うまくいけば同じソフトウェアを作ることができます。うまくいけばというのは、そのソフトウェアを構成するソースコードやそのほかのファイルが一式全部手に入らないと正しくビルドすることが難しいからです。現代のソフトウェアは、アイコンやボタンといったインターフェイスを構成するリソースファイルもたくさん必要です。
クローンが作成できたら、その次はそのソースコードをちょっと変えてビルド、改ざん版が作れてしまいます。悪いことをするのに都合の良い機能を足したり、都合の悪い機能をバイパスできるようにしてしまえば、脱獄したりやウィルスなど悪意あるソフトウェアの作成や配布の大きな助力になります。
また、ビルドができなくてもソースコードがあればいろいろなことがわかります。たとえば、 iPhoneが起動時にどういったチェックをしてハードウェアやソフトウェアが改ざんされていないかを確認しているか、などです。
脱獄用のソフトウェアを作っている人達はこうした抜け道や弱点をソースコードなしに探してますが、ソースコードがあればもっとラクに不正行為が行えます。