Adobe Flash 誕生から死まで

オンラインコンテンツで一世を風靡したAdobe Flash。長い間数々の脆弱性に悩まされながら廃止に至った経緯を振り返ります。

オンラインコンテンツで一世を風靡したAdobe Flash。長い間数々の脆弱性に悩まされながら廃止に至った経緯を振り返ります。

2008年を振り返ってみましょう。例えば皆さんが、Windows XPの新しいパソコンを購入して、インターネットに接続し、ブラウザーを開いて、お気に入りのウェブサイトにアクセスしたとします。なぜか、ウェブサイトの半分が表示されない、ということがありませんでしたか?そして、パソコンに詳しい友人に電話で聞くとその友人は、「Adobe Flashをインストールしてみて」とのアドバイス・・

Adobe Flashの起源は、1990年代初めまでさかのぼります。当時Flashは、モデムをつかって遅い速度でインターネット接続をしていたとしても、十分ダウンロードができるくらいコンパクトでシンプルな、ベクターグラフィックスを作成するためのツールでした。

2000年代後半、Adobe Flash Playerは、根本的にアニメーションツールであることは変わらないものの、ネットユーザーにとっては不可欠なものでした。Adobe Flash Playerがなければ、半分以上のウェブサイトは正常に表示されませんでした。一方でその頃、サイバー犯罪者は、プレイヤーで見つかった数多くの脆弱性を次々に発見し、悪用し始めていました。このことが理由で、Flashは、2010年以降、辛辣な批判を受けています。また、Adobeでさえ、そういった問題を認識しており、インターネットはより多様に発展する必要性があることを認めていました。それにも関わらず、Flashはその後約10年ほど使われ続けました。しかも、公式サポートが終了された2020年末以降も、一部ではFlashが使われ続けていたり、削除されずに残っています。なぜFlashは、深刻な脆弱性に悩まされ続けたのでしょうか。

パソコンのタブレット化

Flashの歴史の始まりは1992年頃です。当時、複数の企業が、タブレット端末を一斉にリリースしました。そのタブレットとは、いわゆるiPadの原型のようなものですが、初代iPadが発売される13年も前のことです。下の画像は、IBM ThinkPad 700Tという種類のものです。

ThinkPad 700Tタブレットコンピューター

ThinkPad 700Tタブレットコンピューター 出典

このようなタブレットは、 GO Corporation が開発したPenpoint OS を使用していましたが、1994年、Go Corporationは、米国の通信大手AT&Tに売却され、会社は即座にタブレット製造を中止。携帯可能なタブレットを開発するという初めての試みは、大失敗に終わりました。

当時、複数の独立したアプリケーションは、Penpoint OS用に書かれていました。その1つが、Futurewave Software社によって開発されたSmartSketchという画像編集ソフトでした。

SmartSketchは、Penpoint OS の廃止と同じ時期にリリースされました。Futurewaveはまず、この編集ソフトをMicrosoft WindowsおよびMac OSに適用し、それからアニメーション付きの画像を作成する機能を追加して、製品名をFutureSplash Animatorに変更しました。1996年には、Futurewave SoftwareはMacromedia(マクロメディア)買収され、製品名はMacromedia Flashに再び変わりました。この製品は、アニメーションを作成するプログラムと、それをユーザーのコンピューターで再生するコンパクトなMacromedia Flash Playerユティリティで構成されていました。これが重要なことですが、SmartSketchおよび初期のMacromedia Flashの両方は、ベクターグラフィックスとして知られるものを使用していました。

私たちが慣れ親しんだJPEG形式の写真や画像は、ラスターグラフィックス(ビットマップ画像)を使用しています。そのため、各ピクセルはカラー値を持ち、その数は数千、さらには数百万にも及びます。ベクターグラフィックスは、ピクセル情報を保存しません。線、四角、円といった基本または幾何学的な形から画像を再生成するレシピのようなものです。また、ベクターグラフィックスはコンパクトである傾向があり、白い背景に書かれた円の画像内の各ピクセルは記述されず、「白い背景に、半径がXピクセルの円を描く」という指示が保存されます。

めざましい発展を遂げた1990年代、人々は一般的にモデムを介してインターネットに接続していました。当時、1秒に5~6バイトのデータを転送するのがやっとで、うんざりするほど時間が掛っていました。クオリティがあまりよくないラスターグラフィックスの画像読み込みにも、数秒、時には数分かかっていました。そのため、多くのユーザーはブラウザーで画像をオフにしていたのです。しかし、Macromedia Flashは、ベクターグラフィックスを使って、色鮮やかなアニメーション付きの画像を素早く送ることができました。

Flashコンテンツを含むサイトをユーザーが開くと、毎回コードがダウンロードされます。これは通常の実行可能ファイルではなく、PC上のMacromedia Flash Playerによって実行される一連の指示のことです。原理は同じで、コンテンツとプレイヤーの両方を含む実行可能ファイルの作成を妨げるものはありませんでした。

Flashにはグラフィックだけでなく、音や特別効果といったその他の機能も加わりました。また、さらに動画を転送することもできるようになりました。

オンラインに加わったもの

筆者がMacromedia Flashを初めて目にしたのは、2001年、ロシアのウェブアニメ、Masyanya(マシャニャ)を見ていた時のことでした。毎週月曜日の朝になると、私は1~2分の長さの新しいエピソードをダウンロードして視聴していました。マシャニャの製作者、オレグ・クワエフ氏は、Macromedia Flashを使用してアニメを制作し、Flash Playerとアニメーションそのものを内部に埋め込んだ実行可能ファイルとして、それを自身のウェブサイトにアップードしていました。今でいうと、YouTubeに動画をアップロードするのと似た方法です。マシャニャのシリーズ、エピソード6のサイズは、たった600バイトでした。それには再生用のソフトウェアも含まれています。同じエピソードを標準品質のビデオ形式で見るとなると、3倍も重いものになります。しかもそれにはプレイヤーが含まれていません。

Macromedia Flashの技術は、当時のインターネットブラウザーの機能を大きく拡張しました。テキストや画像といった、ブラウザーが表示するコンテンツには違いはみられませんでした。そのため、Flashコンテンツをブラウザーで直接再生できるようにするプラグインが制作されたのは、当然の成り行きと言えます。プラグインは、ダウンロードとファイルの実行を別々に行わなくて済むようにできるからです。つまり、Flashオブジェクトがパソコン上で実行されるコードであることに変わりありません。プラグインがインストールされれば、ウェブコンテンツの読み込み後、ユーザーによるアクションがなくても、これらのプログラムが実行されるようになったのです。

開発者用ツールも多様になりました。1990年代終わり頃、Flashは単なるアニメーション制作ツールではなく、ユーザーが操作できる項目も加えられるようになりました。また、スクリプト言語をサポートするようになり、ユーザーは、Flashオブジェクト内でより複雑な構造を作成できるようになりました。このことを視覚化して、ウェブサイトの機能がどのように発展したか解説しましょう。

こちらが1990年、まさに初めて作成されたWebページです。

初めて作られたウェブサイト。テキストとハイパーリンクだけで構成されています。

初めて作られたウェブサイト。テキストとハイパーリンクだけで構成されています。出典

下は、1996年当時の典型的なウェブサイトです。

1996年秋時点でのYahoo!ポータル。やはりテキストとリンクで構成されていますが、画像の要素が新たに加わっています。出典

そして、こちらが2000年、Flashが利用されたウェブサイトです。

PlayStationのウェブサイト。様々な色が使われるようになりましたが、ほとんどの要素は単純なHTMLによって処理されています。中心となるアニメーション付きの要素には、写真、アニメーション、動画が含まれます。

2000年のSony PlayStationのウェブサイト。様々な色が使われるようになりましたが、ほとんどの要素は単純なHTMLによって処理されています。中心となるアニメーション付きの要素には、写真、アニメーション、動画が含まれます。 出典

当時のウェブデザイナーは、最大限の互換性を優先する人もいれば、それよりもグラフィックを大事にする人もいました。互換性に重きを置くデザイナーが制作したウェブサイトの場合、1996年、サイトにFlashの要素があったとしても、そのサイトをFlashなしでブラウズすることができました。グラフィックスを優先するデザイナーの場合、ウェブサイトにはFlashが不可欠で、下のようなNike Airのミニサイトのように、Flashがなければ機能しませんでした。

一見すると問題のないように見えます。しかし、2006年当時のNike Airのウェブサイトのインターフェース全体は、Flashを使用して構築されています。そのため、適切なプラグインがなければ開くことができませんでした。

一見すると問題のないように見えます。しかし、2006年当時のNike Airのウェブサイトのインターフェース全体は、Flashを使用して構築されています。そのため、適切なプラグインがなければ開くことができませんでした。出典

Macromedia Flashは、ウェブサイトの設計において、できることの幅を広げてきました。Macromedia Flashのおかげで、アニメーション付きの要素の配置、音楽や動画の使用、ページを移動する際のエフェクトなどについて、デベロッパーの仕事を制限しなくなりました。

2006年、Macromediaは、Adobe Corporationによって買収され、その後すぐ、Flashはブラウザーで実行されるゲームの作成に使用されるようになりました。これは、前例のないことでした。また、モバイルデバイスが急速に開発されていたため、モバイルデバイス用にFlash Playerの代わりとなるものも開発され、コンテンツは複数のプラットフォームで利用可能になりました。 YouTubeは、2005年にローンチされた当時、動画配信にFlash Playerが使用されていました。

広告主は、Macromedia/Adobe Flashをベースにした派手なバナー広告の作成に集中しすぎていました。これらの広告も、ユーザーのパソコンで実行されるプログラムであることに変わりなかったため、派手な広告は時にシステムに大量の負荷をかけることはあり、その他のプログラム実行の速度を遅くしました。ブラウザーやプラグインの中には、Flashをデフォルトで無効にするオプションが表示されたものもありました。しかし、バナーの問題は、のちにFlashが直面する問題と比べると些細なものでした。

巨大なセキュリティホール

Adobe Flash Playerの脆弱性に関するタイムラインは、ウェブが初めてできたころにさかのぼります。2000年代初め、脆弱性のニュースをユーザーや顧客に対して知らせることは、まだ一般的ではありませんでした。Adobeによる情報と勧告の アーカイブ (英語ページ)には、Macromedia時代のデータも含まれていますが、Flash Playerの脆弱性に関して、2002年に初めて記述されています。MITREのCVEデータベースでは、Adobe Flash Playerの脆弱性が 1100個以上挙げられています。 (英語ページ)

このデータベースにおける最初の任意コード実行(ACE)の脆弱性についても、 2002年 (英語ページ)まで遡ります。攻撃者は、Adobe Flashファイルを被害者に送信し、被害者が再生した時に、悪意のあるコードが実行される仕組みでした。こういった脆弱性の中には、CVSSスコアで最大値10.0に達したものも発見されました。Flash Playerの全てのバージョンに、800以上のACE脆弱性があったと一部では伝えられています。ユーザーが何もしなくても、これらの脆弱性は簡単に悪用されてしまうリスクが高く、極めて深刻な問題でした。被害者を悪意のあるAdobe Flashオブジェクトが埋め込まれたウェブサイトに誘導するだけで十分だったといわれています。広告配信システムが不正にアクセスされ、悪意のあるコンテンツが、数百万人ものユーザーが訪れるウェブサイトに表示されてしまったケースもありました。

Flashの機能が増えれば増えるほど、攻撃者が不正にパソコンにアクセスできてしまうセキュリティホールが数多く発見されました。2005年まで、Flashはウェブアプリケーションを実行するのに最も多く使用されたテクノロジーでした。

Flashの問題は過去のもので、もう私たちの生活には関係がないと思う方もいるでしょう。最近では、すべてのユーザーに対して定期的に更新の案内が送信されます。しかし、Flash Playerの自動更新が行われるようになったのは、使われなくなる少し前のことで、2000年代、Flash Playerの自動更新は存在しませんでした。当時は、Adobeのウェブサイトにユーザーがアクセスし、新しいバージョンをそこからダウンロードして、手動でインストールしなければなりませんでした。ユーザーの中には、更新が必要なFlash Playerのバージョンを持っていることさえ気付いていない人もいました。2006年当時の脆弱性は、Microsoftの ブレトン でも警告されています。Adobeコードは、Windows XPを使用して配信することができたためです。Microsoftがそれに対する更新に取り組みましたが、パッチの配信およびインストールのプロセスは、Adobeの場合と同様に、芳しくありませんでした。

当時の更新プログラムの配信状況について、2012年のカスペルスキーの レポート (英語ページ)を参照ください。同年、パソコンで検知された脆弱性の数で、Adobe Flash Playerは、最多でした。その頃までには、Flash Playerのユーザーに利用可能な更新を通知したり、その更新がインストールされる過程を追跡したりするシステムは機能していました。脆弱性が見つかるたびに、ハイリスクのユーザーの割合は増える一方で、2012年のピーク時には全体の60%に達しました。脆弱性が見つかってからユーザーに更新の知らせが届くまで、3週間から2か月掛かることもありました。今日の標準から考えると、相当の時間が掛かっています。最も古いバージョンを使用しているユーザーには、更新を促すメッセージさえも届きませんでした。2012年、その数は全体の10%に及んだと言います。

2015年のカスペルスキーの レポート (英語ページ)によりますと、Flash Playerの脆弱性が13個リストアップされています。これは、いわゆる エクスプロイトパックと呼ばれるもので、ユーザーのパソコンを感染させるまでソフトウェア内の脆弱性を1つ1つ攻撃するエクスプロイトを含むキットです。実際のユーザーに対する攻撃のほとんどは、ブラウザー(62%)を介して行われていましたが、カスペルスキーの専門家によると、中でも最もよくあるケースは、Flashの脆弱性に起因するものでした。Flashはやがて、マルウェアの感染などの脅威にさらされる最も危険なソフトウェアとなりました。

10年に渡る長い「葬式」

2010年代半ばまでには、Adobe Flashはほとんど使われなくなりました。Flashを批判する発言で、最初に注目を集めたのは恐らく、Appleの創業者兼CEOであったスティーブ・ジョブズ氏の公開レター「Flashについての考え」でしょう。1990年代に一時的な危機を経験したAppleでしたが、2010年には安泰した企業に成長していました。2007年に最初のiPhone、2010年に最初のiPadをリリースし、1993年に発売されたタブレット端末とは異なり、大成功を収めました。当時のiPhoneには、他のスマートフォンのような機能は搭載されていませんでした。特に、Flashはサポートされておらず、Flashを使用して作成されたウェブサイトはきちんと表示することができませんでした。そのため、2000年代後半、NokiaのSymbianスマートフォンや初期のAndroidデバイスが支持されていました。これらのスマートフォンには、Flashが搭載されていたからです。

ジョブズ氏によりますと、AppleがFlashを実行しない主な理由として、セキュリティの問題を挙げました。さらにAppleは、デバイス上でFlashの動作を一切コントロールできないことに不満を持っていました。Flash(特定の要素を除く)は、HTML5やJavaScriptのようなオープンな標準とは異なり、サードパーティであるAdobeによって完全にコントロールされていたからです。 もしAppleがFlashを採用していたら、スマートフォンの動作は遅くなったり、クラッシュしたりしていたことでしょう。その場合はおそらく、Flashではなく、Appleが非難の矢面にさらされていたと想像します。

その他にもApple内で議論された問題がありました。デスクトップコンピューターとは対照的に、スマートフォン用のコードは、バッテリーを消費しないよう、できる限り一元化される必要がありました。その当時、FlashはGPU加速さえサポートされていなかったので、その一元化はほとんど不可能に近いことでした。Adobeが優れたFlash Playerを作成したとしても、Flashアプリケーションのパフォーマンス自体は、他数千人ものデベロッパーの腕にかかっていました。Appleは、このことを支持できなかったのです。

その他のテクノロジー企業も同様に、競合企業のソフトウェアに頼ることは避けていました。Flashの成功をまねて、独自のものを開発しようと試みた企業もありました。特に、Microsoftは2007年に、 Silverlight という「改良版Flash」を開発しましたが、それもあまり支持はされずにサポートは終了しました。

ウェブのニュースサイトWiredは2015年、「死すべきFlash」という意味深いタイトルの付けられた 記事 (英語記事)を公開しました。この記事には、様々な業界のプレイヤーが「大きな脆弱性」であるAdobe Flash Playerに対応しようとする試みが書かれています。同年、Firefoxブラウザーの開発者は、Flashコンテンツを再生するプラグインをデフォルトで無効にしました。また、Chromeは、ウェブサイト上の「重要ではない」Flashコンテンツを無効にすると述べました。当時、Facebookの主任セキュリティオフィサーを務めていたアレックス・ステイモス氏は、この時代遅れの技術に対するサポートを行う最終日の設定を提案しました。Facebookも、当時、動画の再生にはFlashを使用していたからです。オープン標準のHTML5は、コンテンツが重いインタラクティブなウェブサイトに使えるツールとして、Flashに取って代われる地位にありました。しかし、Flashのように広く普及したものを一夜にしてすべて取り除くことは不可能でした。広告ネットワークは、Flashに依存した上、古いパソコンを使う一般の人や、大量のライブラリをもつサイトの開発者も、Flashを頼りにしていました。

AdobeがFlashの開発を中止し、サポートを終了すると発表したのは、2017年7月のことでした。しかし、移行期間を十分に用意し、3年後に終了すると発表しました。その間は、ユーザーがリクエストしたときのみにFlashコンテンツを実行するようになりました。そして2021年1月12日、ついにFlashは、ユーザーサポートを終了しました。これは、Macromedia Flash Player 1.0がリリースされてから25年、ソフトウェア内で致命的な脆弱性が最初に見つかってから、13年後のことです。今日私たちが使っているブラウザーでは、ユーザーがFlashコンテンツの再生をリクエストし、Flash Playerをインストールしていたとしても、Flashコンテンツを再生することはできません。また、最新のバージョンでは、その実行をブロックするように設定されています。

2020年末に表示された、Flashの終了を伝えるポップアップ

2020年末に表示された、Flashの終了を伝えるポップアップ出典

.

しかし、Flashの時代はまだ終わっていません。Flashが終了して40日後、当社は、当時の状況についてまとめた報告書 を公開しました。一部企業のアプリケーションは、今でもFlashがインストールされている状態で、セキュリティの更新も全くない状態であることが明らかになっています。特に中国でFlashは、いまだに使われています。一部の企業は、好んでFlashを使用していたり、Flashの代わりとなるソフトウェアを見つけられないままで、Flashをサポートするブラウザーを独自に作ろうとする動きもあります。せめて高品質のセキュリティソリューションが搭載したうえで、ブラウザーを使用してほしいと願うばかりです。

そしてFlashは、ウェブアーキビストの興味の対象でもあります。Flashがなくなったせいで、数万人もの人による創作物がアクセスできなくなりました。

誰の責任なのか

Adobeが、Flashの終了までに長い年月を要した理由は、十分に理解できます。無数のコンシューマー向けPCに搭載されているテクノロジーであるということは、コンテンツの開発ツールの売り上げも高かったことを示しています。2013年以降Adobeは、現在も使用可能なAdobe AIRを使って、Windows、Mac OS、Android、iOS向けのアプリケーションを開発することができます。これは、本質的には、Adobe Flashから生まれたソフトで、Adobeの専有テクノロジーとHTML5のようなオープンソースのテクノロジーの両方をサポートしています。

言うまでもありませんが、Adobe Flashの開発は当時称賛されました。しかしながらその人気と1990年代の開発理念のせいで、呪われた存在にもなりました。Adobe Flash Playerは、コンピューターのリソースに完全なアクセス権があり、それゆえに、重大なコーディングエラーによって深刻な問題が発生することが多々ありました。その主な例が、あらゆるサイトでユーザーのウェブカメラにアクセスできるようになってしまうというプレイヤー内の バグ (英語ページ)でした。そのような過去の黒歴史(設計が不安定な古いコード)に対応するのは容易なことではありません。修正するのも難しいものです。最適化またはセキュリティ技術によって、数千ものウェブサイト上で数百万ものFlashアプリケーションが危険に晒されてしまいます。

Adobeは、この問題を対処しようとしなかったわけではありません。2008年に最初の脆弱性10.0が発見されたあと、Adobeは2011年まで毎年、Flash Player内にある深刻な脆弱性にパッチを当て続けました。しかし、セキュリティのように流動的で変わり続ける概念を理解して、対応し続けるのは当時困難だったと見られています。今日使用されているブラウザーでコンテンツを表示する際、プラグインは全く必要とされていません。ブラウザーの開発者だけがユーザーのセーフブラウジングに責任を負い、他の人は誰も責任を負わないのです。

現在、ウェブからダウンロードされたものは基本的に全てリスクがあるとみなされます。そのため、ブラウザー製作者は、あらゆる手段を講じ、ウェブサイト同士、およびウェブサイトとデバイス(パソコン、スマホ、タブレットに関わらず)上のその他のプログラムを隔離するようにしています。は明らかに素晴らしい対応策を講じていますが、裏ではサイバー犯罪者も自身のツールを開発、改良し続けています。2022年、Google Chromeだけでも、6つのゼロデイ脆弱性が攻撃に使用されたことが明らかになりました。2015年にサイバー犯罪者によって悪用されたAdobe Flash Playerの脆弱性が15個だったことを考えると、少ないと思われるかもしれませんが、違いは大きくありません。

最後に、Adobe Flashは、ウェブサイトをテキストベースのページの寄せ集めから、より「輝く」(英単語flashの直訳)ものにしました。Flashによって、1990年代のSF小説や映画で描かれた、夢のような仮想世界が実現しました。一部では、2000年代のウェブサイトのデザインは、派手で、安っぽくて、挑発的だという声もあります。それから、10年という長い時間をかけて、ウェブサイトやアプリケーションの一般的なスタイルは大分落ち着いたものになり、それと同時に、私たちの暮らしは、インターネットとは切り離せないものとなりました。Adobe Flashはいわゆるインターネットのロマンチックな時代、役に立つツールでした。洗練されておらず、不完全なテクノロジーだったかもしれません。ユーザーによる軽率なクリックで情報を流出させてしまったかもしれません。しかし、Adobe Flashは、インターネットの歴史において、極めて重要な存在であったことは間違いありません。

ヒント