こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

-広告-

解決済みの質問

ActiveXは危険?

Internet Explorerの内部では、
いくつかのActiveXを利用しているという認識ですが合っていますでしょうか?

下記の公式ページでは、
Shdocvw.dll や、Mshtml.dll を使っているように感じます。

◆Microsoft のInternet Explorer のアーキテクチャ
https://msdn.microsoft.com/ja-jp/library/dd163924.aspx


「ActiveXには脆弱性がある」という話を聞いたことがありますが、
ActiveXのdllを使用しているInternetExplorer は脆弱性を持っているのでしょうか?

投稿日時 - 2015-02-02 09:27:39

QNo.8909436

困ってます

質問者が選んだベストアンサー

再回答します。
この手のコンポーネントの話は、SEやPGとも話をすることはありますけど、どのように捉えているかで、趣旨の見方が違いますから、それを計算していなかったようです。それから、COMの部分は解釈が気になります。(後述)

私の書き方が不味かったのだと思います。質問者様が唱えたのは、ActiveXがあるから、IEがそれの影響を受けて、脆弱性が多くなるのでは無いかという質問だと思っています。それに対する回答としてはあれ以上はないのです。もう少し詳しく書きます。

基本的に、IEの設定がデフォルトで、サードプラグインを信頼できるもののみにしているなら、ActiveXの脆弱性は、特別なものは無いと言っても良いといえます。
もちろん、年に数件は、その機能を回避する未知の脆弱性に対する修正は出てきますけど、それは保守があり修正できるレベルの話であり、致命的な影響を与える(回避不能な)ものではないと言えますから、一般的なブラウザが持つ脆弱性とあまり変わりません。

逆に言えば、設定を変更しサードパティーの信頼できないプラグインを入れるのは、危険だという意味になりますが、そうでなければ並の安全性はあると言えます。これは、SSL(最近他のブラウザでは設定画面も無くなっていますけど)などの脆弱性にも言えることで、有効/無効などの設定で影響の無い側をデフォルトと変更することで、それらを回避する場合も、脆弱性の回避になるわけで、それら脆弱性回避策として有効であるという前提にあります。

設定をすべてオープンにすると脆弱なのか?それなら脆弱では無いかと思われるでしょうけど、それを脆弱性と言う人はあまりいないはずです。特に、元々の実装を理解している人には少ないはずです。

ActiveXは古くから実装されているため、元々実装の仕組みとして、XSSの対処に関する実装は十分にありませんし、ポリシーレベルも十分に実装されていません。そのため、脆弱と言うより仕組みとして、現用のセキュリティを前提とした設計がなかったのです。そういう意味では、脆弱性と言うより考慮不足による欠陥と言われることは多いです。だから、徐々にそれを補える機能増築し危険な部分を排除してきたのです。その結果、プラグイン側で考慮して、それらの信頼性を維持しないといけない仕組みになった訳です。それを脆弱ととらえるか、仕様ととらえるかは人それぞれになりますが、私の解釈では、ブラウザ側でオプションボタンを与えたことで、それらは脆弱性ではなく、レガシー機能(古い遺産)になっていると解釈しています。

ActiveXにおけるIE側の脆弱性というのは、これらの後から実装された権限や認証を透過して、不正なActiveXをユーザーの同意なしに実行できるかどうかを意味します。それが今の時点でも常時攻撃可能な穴として存在するかということでもあります。それについては、現時点では未知のものがあるかもしれませんが、発覚すれば定期的に埋められていますので、ActiveXによってIEが明らかに脆弱で危険という判断にはならないのです。
まあ、ActiveXを無くした方が安全なのは確かですけど。

尚、そんなものをなぜ未だに実装するのかという点も答えておきます。
IEの古いサイトとの互換性の都合上、次のProjet Spartan(Windows10に搭載されるブラウザ・IEも搭載される見込み)に完全に移行するまでは、プラグインの機能を残さなければなりません。その理由は、お仕事で職場内に特別なプラグインを使っている場合などに、突然サポートされなくなると、影響が出るためです。
ビジネス互換にどうしてもIEを使うビジネスベンダーは多いですから・・・。

だから、デフォルトでは、設定画面においてActiveXの動作抑止を行ってセキュリティを確保しています。


尚、IEのシェルに使われているCOMベースのコンポーネントは、ActiveXを指すものではありません。一般に、言語を問わずに呼び出せ、Callの対象(ネットワーク経由など)を問わず利用できる実装関数の集合体がCOMであり、そういう仕組みをとっているから、システム開発(マイクロソフトの保守性も含む)での運用性の高さ(可用性)がありますと書かれているのが、質問者様が挙げられているライブラリの記事です。

もっと砕けた書き方をすれば、COM(言語がJAVAでも、C++でもVBでもIEのコンポーネントの一部を呼び出して使うこともできます。制御の開示※があるかどうかは別として。)のIEはこんなコンポーネントでできており、これらのコンポーネントには、こんな拡張が・・・と言っているのです。

これは、いわゆる流用の問題(同じ関数の中間部品を言語毎に揃える煩わしさなどを解消し、ソフト開発のコストや時間の問題)を解決するために、マイクロソフトが作ったオブジェクトモデルとなります。ActiveXは、COMの中でWebのOLEコントロールなどを中心に行うための機能となります。IEのサイトに書かれているCOMコンポーネントは、ActiveXコンポーネントでは無く、IE ShellがCOM化されていることを書いているに過ぎないのです。

尚、このIE Shellの脆弱性が=ActiveXの脆弱性ではありません。IE Shellの中のActiveXを制御するコードに脆弱性があれば、ActiveXの脆弱性となります。

※VisualStudioなどで、開発するアプリケーションの場合、ブラウザオブジェクトを内包すると、たいていこのCOMコンポーネントを流用できます。


この回答でも納得は頂けない可能性もありますが、できる限り詳しく書いているつもりです。
これで納得いただけなければ、参考にはなっていないと思われます。どちらの回答も忘れてください。そのときは、持っていると思うなら、それで良いでしょうし、持っていないと思うなら、それで良いかと思います。生活には関係ないでしょうし・・・。

投稿日時 - 2015-02-06 14:00:35

お礼

詳しい回答、ありがとうございます。

投稿日時 - 2015-02-08 08:41:24

ANo.3

このQ&Aは役に立ちましたか?

6人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(3)

ANo.2

Q/いくつかのActiveXを利用しているという認識ですが合っていますでしょうか?

A/厳密には、ActiveXを利用するプラグイン(サード機能)に対応するということです。ActiveXをブラウザ起動時に最初から最後まで使っているのではなく、ブラウザに追加機能として実装する手法(API)にActiveXという技術が使われるのです。まあ、ActiveXを使っていくつかの追加機能を搭載、利用できるということです。

Q/ActiveXのdllを使用しているInternetExplorer は脆弱性を持っているのでしょうか?

A/ActiveXは昔から実装されているAPI群です。そのため、脆弱性はそこそこ存在し、見つかれば修正されています。まあ、権限の掌握がしやすいですから、それを脆弱ととらえるか、それとも仕様と考えるかの問題もあります。だから最近はActiveXの利用はマイクロソフト自信も積極的には推奨していません。

そのため、次のWindows10では、ActiveXを実装したIEから、別のブラウザ(非ActiveXになる予定?)にシステムを移管する予定です。

基本的に、脆弱性はどのブラウザでも存在するものです。だから、ActiveXだから特別という考え方を持つべきではないでしょう。ただ、実際にActiveXが保守が難しくなっているのは、事実であり、他より脆弱になりやすい(昔はそう思われていなかったが、今はそう考えられる)古い技術を集めているというのは、実態として存在します。
そのため、推奨されるプラグインの実装形態から外れつつあります。

投稿日時 - 2015-02-02 10:28:45

補足

補足です。

Internet Exploler が、ActiveXコントロールプラグイン対応するのはもちろん知っています。

質問の仕方が悪かったのですが、
サードパーティのActiveXの話をお聞きしたいのではないのです。

まず、
IExplore.exeは、
Browsui.dll
Shdocvw.dll
Mshtml.dll
Urlmon.dll
WinInet.dll
によって動いているじゃないですか?

しかしです。
こいつらは、COM ベースのアーキテクチャですよね?
(ActiveXとの違いは、レジストリにCOMの情報を登録する機能があるかどうかなのでActiveXとして話を進めます)

そして、
上のDLLは、IExplore.exe自体を動かすために必要なものであるため、
むしろ、OSのインストール時に、レジストリに情報が書き込まれていますよね?

例えばInternet Explolerのインターネットオプションで、
未署名のActiveXコントロールを無効にするだけでなく、
信頼済みのActiveXコントロールまで無効にしてしまってください。

それでも、IExplore.exeは動きますよね?

投稿日時 - 2015-02-06 10:22:04

別にActiveXを使っていなくても脆弱性が指摘されることあるし、
ActiveXを使っているからと言って危険というわけではない

投稿日時 - 2015-02-02 10:03:28

お礼

ありがとうございます。
確かに、
ぜいじゃくなActiveXもあれば、脆弱ではないActiveXもあるでしょうし、
ActiveX以外のAPIでも脆弱ではないものだけとも限りませんよね。

投稿日時 - 2015-02-06 09:52:45

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-