• 診断項目 No.42/127
  • HTML・JavaScript・外部資産
  • 重大度 重要(high)

廃止されたクライアント技術を使用していないか?Flash・ActiveX等の残存リスクと置き換え方法

廃止されたクライアント技術を使用していないかは、Flash・Silverlight・ActiveX・Javaアプレットの記述がHTMLに残っていないかで確認します。サポート終了日、残存のリスク、棚卸しと置き換え方法、診断基準を解説します。

結論(廃止されたクライアント技術を使用していない)

廃止されたクライアント技術を使用していないとは、提供元のサポートが終了したAdobe Flash、Microsoft Silverlight、ActiveX、JavaアプレットなどをWebページで使っていない状態のことです。サポート終了後は脆弱性が修正されず、主要ブラウザでも実行できません。OWASP ASVS 5.0.0 V3.7.1はこれらを不適合例として名指ししており、HTML5の動画やフォームなど現行のWeb標準へ置き換えることが求められます。

この記事のポイント

  • Adobe Flash Playerは2020年12月31日、Microsoft Silverlightは2021年10月12日にサポートが終了しています。
  • ASVS 5.0.0 V3.7.1は、Flash・Shockwave・ActiveX・Silverlight・NaCl・Javaアプレット等を不適合例として明示しています。
  • 残っているだけでも、情報が利用者に届かない・非公式な配布物へ誘導するなどの問題があります。
  • セキュリティAIチェッカーは、applet要素・classid付きobject要素・.swf・.xapの参照があれば×、ActiveXObject呼び出しのみなら△とします。
  • 動画はvideo要素、XHRフォールバックはfetch()へ置き換え、CSPのobject-src 'none'でプラグインを禁止できます。
診断項目名廃止されたクライアント技術を使用していない
項目IDhtml.legacy-active-content
分類HTML・JavaScript・外部資産
重大度・配点の重み重要(high) 重み 3
関連する標準・ガイドラインOWASP ASVS 5.0.0 V3.7.1(L2: サポートが継続し安全とみなされるクライアント技術のみを使用。不適合例としてNSAPIプラグイン、Flash、Shockwave、ActiveX、Silverlight、NaCl、クライアント側Javaアプレットを明示)/CWE-1104(保守されていないサードパーティ部品の使用)

廃止されたクライアント技術を使用していないとは

廃止されたクライアント技術を使用していないとは、提供元のサポートが終了したAdobe Flash、Microsoft Silverlight、ActiveX、JavaアプレットなどをWebページで使っていない状態のことです。

かつてWebページで動画、アニメーション、地図、申請フォームなどを実現するために使われたこれらの技術は、いずれも提供元のサポートが終了しています。サポート終了後は脆弱性が見つかっても修正されず、主要ブラウザでも実行できません。セキュリティAIチェッカーのこの項目は、トップページのHTMLにこれらの技術を使う記述が残っていないかを確認します。

自治体サイトでは、2010年前後に制作された観光案内のFlashアニメーション、施設予約・電子申請で使われたJavaアプレットやActiveX、議会中継のSilverlightプレーヤーなどの名残が、更新されないまま残っていることがあります。

Flash・Silverlight・ActiveX・Javaアプレットのサポート状況

一次情報で確認できた各技術の状況は次のとおりです。

技術状況
Adobe Flash PlayerAdobeは2020年12月31日でサポートを終了し、2021年1月12日以降はFlash Player上でのFlashコンテンツの実行をブロック。Adobeはアンインストールを強く推奨
Microsoft Silverlight2021年10月12日にサポート終了(Microsoft Lifecycleの告知「Silverlight End of Support」)
ActiveXInternet Explorer専用の技術。ASVS 5.0.0 V3.7.1が不適合例として明示
JavaアプレットASVS 5.0.0 V3.7.1が「client-side Java applets」を不適合例として明示

OWASP ASVS 5.0.0 V3.7.1の要件

ASVS 5.0.0 V3.7.1(L2)は、「アプリケーションがサポートが継続し安全と考えられるクライアント側技術のみを使用していること」を検証するよう求めています。不適合例として、NSAPIプラグイン、Flash、Shockwave、ActiveX、Silverlight、NaCl、クライアント側Javaアプレットを名指しで挙げています。保守されていない部品の使用は、CWE-1104(保守されていないサードパーティ部品の使用)にも当たります。

廃止された技術が「残っているだけ」でも問題になるのはなぜか

  • 情報が届かない:現在の主要ブラウザでは実行できないため、該当部分は表示されず、情報や手続きが利用者に届きません。
  • 修正されない脆弱性を使わせる:古い端末や業務用の古いブラウザで実行できてしまう場合、修正されない脆弱性を抱えたプラグインを利用者に使わせることになります。
  • 非公式な配布物への誘導:「プラグインをインストールしてください」という案内が残っていると、利用者が非公式な配布物を探して入手する誘因になります。Adobe自身がFlash Playerのアンインストールを推奨しています。

廃止技術についてよくある誤解

  • 「.swf へのリンクだけならFlashを使っていない」:リンク先がFlashコンテンツであることに変わりはなく、利用者は内容を閲覧できません。
  • 「new ActiveXObject(...) があればActiveX依存」:古いAjaxライブラリには、XMLHttpRequest がない旧IE向けに ActiveXObject を呼ぶフォールバック分岐が含まれます。現行ブラウザでは実行されない死蔵コードであることが多く、プラグイン依存とは区別して確認が必要です。

廃止されたクライアント技術を使用していないの診断基準(セキュリティAIチェッカー)

取得対象

  • 入力URLのリダイレクト後の最終URLに対するGET応答のHTML本文(最大2MB)を対象にします。
  • 文字列としての検索のため、インラインスクリプト・属性・コメントも対象です。外部JSファイルの中身は解析しません。

判定ロジック

次の2系統で検出件数を数えます。

A. 廃止技術の埋め込み(強い兆候)

パターン意味
<appletJavaアプレット要素
<object ... classid=ActiveXコントロール等をCLSIDで指定するobject要素
.swf の直後が ?、引用符、空白、<、または文字列末尾Flashファイルの参照
.xap の直後が同上Silverlightアプリケーションの参照

いずれも大文字小文字を区別しません。

B. JavaScript内の ActiveXObject( 呼び出し(弱い兆候)

旧IE向けのフォールバックとして記述されている可能性があるため、単独では要確認扱いとします。

判定条件

判定条件得点への影響
○ 問題なし(pass)AもBも0件重み3を満点で加算
△ 要確認(warn)Aは0件で、Bが1件以上重み3×0.45
× 要改善(fail)Aが1件以上0点
  • この項目に対象外(na)はありません。HTMLを取得できなかった場合は、HTML系項目全体が実施されません。
  • 根拠欄には、×なら「Flash、Silverlight、ActiveX、Java Applet等の兆候を○件確認しました。」、△なら ActiveXObject の呼び出し件数を表示します。
  • 重大度はhigh、重みは3です。

自治体サイトでの判定例

取得HTMLの記述判定
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"><param name="movie" value="/kanko/top.swf">×(AがFlashとCLSIDの2件)
<a href="/gikai/live.xap">議会中継(Silverlight)</a>×
旧来のAjax関数に xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP"); がある△(実害は小さいが撤去推奨)
上記のいずれもなく、動画は video 要素やYouTube埋め込み○

検出の限界

  • <embed type="application/x-shockwave-flash" src="/movie"> のように拡張子のないURLでFlashを指定している場合や、外部JSファイル(swfobject等)が動的にFlashを埋め込む場合は、HTMLの文字列に該当パターンが現れず検出できません。
  • Javaアプレットを <object type="application/x-java-applet"> で指定している場合も、classid がなければ検出対象外です。
  • top.swf#intro や CSS・JavaScript内の url(/a.swf) のように、拡張子の直後が # や ) などの場合も件数に入りません。
  • 逆に、廃止技術の説明文として本文中に「〜.swf」と書かれている場合でも検出されます。根拠欄の件数を手掛かりに、該当箇所を目視で確認してください。

したがって、○は「トップページに代表的な兆候がない」ことを示すもので、サイト全体に廃止技術がないことの証明ではありません。

廃止されたクライアント技術を使い続けるとどんなリスクがあるか

  • 修正されない脆弱性:サポートが終了したプラグインは脆弱性が修正されません。Flash Playerは過去に任意コード実行の脆弱性が多数報告され、悪性サイトや広告経由で悪用されてきた経緯があります。
  • 情報が届かない(可用性):現行ブラウザでは表示されず、観光情報、手続き案内、議会中継などが利用者に届きません。
  • 不正な配布物への誘導:「プラグインが必要です」という案内が、非公式な「Flash Player」配布サイト(マルウェア配布に悪用されることがある)を探させる原因になります。
  • 組織の管理不全の指標:廃止技術が残っていることは、コンテンツの棚卸しやCMS更新が行われていないことを示し、他の古い部品(古いjQuery等)が放置されている可能性も高まります。外部ライブラリの版管理は「外部資産のバージョン固定」もあわせて確認してください。

廃止されたクライアント技術の撤去・置き換え方法(Apache・nginx・IIS・Next.js)

1. 棚卸し

# 公開ディレクトリ配下の廃止技術ファイルと参照箇所を洗い出す
find /var/www/html -type f \( -iname '*.swf' -o -iname '*.xap' -o -iname '*.jar' -o -iname '*.class' \)
grep -rIl -E '<applet|classid=|\.swf|\.xap|ActiveXObject' /var/www/html

CMSの場合は、記事本文・テンプレート・ファイル管理の各領域を同様に検索します。

2. 置き換え方針

旧技術の用途置き換え先
Flashアニメーション・動画video 要素(MP4/H.264など)、CSSアニメーション、画像+テキスト
Flashの地図・観光ガイドHTMLとJavaScriptの地図、静的な案内ページ
Silverlight議会中継HLS等のHTML5動画配信、動画配信サービスの埋め込み
Javaアプレット/ActiveXの申請・電子署名HTML5フォーム、マイナンバーカードの公的個人認証に対応した現行方式(JPKI等の現行仕様に従う)
ActiveXObject のXHRフォールバックfetch() または XMLHttpRequest のみ
<!-- 置き換え例: Flash動画 → HTML5動画 -->
<video controls preload="metadata" width="640" poster="/kanko/poster.jpg">
  <source src="/kanko/promo.mp4" type="video/mp4">
  <track kind="captions" src="/kanko/promo.ja.vtt" srclang="ja" label="日本語">
  動画を再生できない場合は<a href="/kanko/promo.html">テキスト版</a>をご覧ください。
</video>
// 置き換え例: ActiveXObjectフォールバックの削除
const res = await fetch("/api/news.json", { credentials: "same-origin" });
const news = await res.json();

3. 旧ファイルへのアクセスを止める(任意)

Apache(.htaccess)

<FilesMatch "\.(?i:swf|xap)$">
    Require all denied
</FilesMatch>

nginx

location ~* \.(swf|xap)$ { return 410; }

IIS(web.config)

<system.webServer>
  <security>
    <requestFiltering>
      <fileExtensions>
        <add fileExtension=".swf" allowed="false" />
        <add fileExtension=".xap" allowed="false" />
      </fileExtensions>
    </requestFiltering>
  </security>
</system.webServer>

Next.js / Vercel

public/ 配下から該当ファイルを削除し、必要なら next.config.js の redirects() で代替ページへ転送します。

4. CSPでプラグインを禁止

Content-Security-Policy: object-src 'none'

object-src 'none' は object・embed 要素によるプラグインコンテンツの読み込みを禁止します。既存ページに object 要素でPDFを表示している箇所があると表示されなくなるため、Content-Security-Policy-Report-Only で事前に影響を確認してください。CSPの基本は「Content Security Policy」で解説しています。

5. 設定後の確認方法

curl -s https://www.city.example.lg.jp/ | grep -n -i -E '<applet|classid=|\.swf|\.xap|ActiveXObject'
curl -sI https://www.city.example.lg.jp/kanko/top.swf   # 403・404・410のいずれかになることを確認

修正後はセキュリティAIチェッカーで再診断し、この項目が○になることを確認します。

サイトを壊さないための注意点

  • 旧ファイルを削除する前に、リンク元ページを代替コンテンツに置き換えてください。いきなり削除すると、リンク切れや空白のページが残ります。
  • 行政文書としての保存が必要なコンテンツは、公開領域から外して保存し、必要に応じて動画やPDFに変換して公開します。
  • トップページ以外にも残っていることが多いため、この項目が○でもサイト全体の棚卸しを行ってください。

よくある質問(FAQ)

Flashはいつサポートが終了しましたか?

Adobeは2020年12月31日でFlash Playerのサポートを終了し、2021年1月12日以降はFlash Player上でのFlashコンテンツの実行をブロックしています。Adobeはアンインストールを強く推奨しています。

Silverlightのサポート終了日はいつですか?

Microsoft Silverlightは2021年10月12日にサポートが終了しました(Microsoft Lifecycleの告知「Silverlight End of Support」)。議会中継などで使っていた場合は、HTML5動画配信などへの置き換えが必要です。

.swfファイルへのリンクだけなら問題ありませんか?

問題があります。リンク先がFlashコンテンツであることに変わりはなく、現行ブラウザの利用者は内容を閲覧できません。セキュリティAIチェッカーでも .swf の参照は×として数えます。

ActiveXObjectの記述があるとActiveXに依存していることになりますか?

必ずしもそうではありません。古いAjaxライブラリには、XMLHttpRequestがない旧IE向けにActiveXObjectを呼ぶフォールバック分岐が含まれます。そのため診断では△(要確認)とし、撤去を推奨しています。

廃止されたクライアント技術の診断が○なら、サイト全体に廃止技術は残っていませんか?

いいえ。判定対象はトップページのHTMLで、外部JSファイルや拡張子のないFlash指定などは検出できません。○は代表的な兆候がないことを示すだけなので、サイト全体の棚卸しを行ってください。

Flashの代わりに何を使えばよいですか?

アニメーションや動画は video 要素(MP4/H.264など)やCSSアニメーション、地図や観光ガイドはHTMLとJavaScript、申請・電子署名はHTML5フォームと公的個人認証に対応した現行方式へ置き換えます。

セキュリティAIチェッカーを利用する

この項目を含む127項目を、URLを入れるだけで無料診断します。

参考資料