「WordPressのサーバーにあるfavicon.icoを開いたら、画像ではなくPHPや意味不明な文字列が入っていた」と困っていませんか?
小さなアイコン用ファイルに見えるため、消してよいのか、触ると危険なのか判断しにくい状況です。
結論から言うと、不審なfavicon.icoは直接実行せず、削除前に保全して実体と呼び出し方を調べるのが安全です。
拡張子が.icoでも、中身まで正規のアイコン画像とは限りません。
一方で、テキストらしい断片が見えたという理由だけで、直ちにマルウェアと断定するのも危険です。
ファイル形式、配置場所、サーバー設定、参照元、アクセスログを組み合わせて判断する必要があります。
WordPressの復旧を多数手がけてきたよこやま良平です。わたしの現場経験をもとに、favicon.icoに偽装された不審ファイルを安全に確認し、隔離・復旧・再発防止へ進む手順を解説します。
- 正規のfavicon.icoと偽装ファイルを分けて考える方法
- 不審なコードを見つけても即削除しない理由
- ファイル形式・内容・配置・参照元を確認する順番
- サーバー側で.icoが実行される可能性を調べる方法
- 隔離後に正規サイトアイコンへ戻して再発を確認する手順
この記事を上から進めれば、「怪しいから消す」「アイコンだから安全」といった両極端な判断を避けられます。
まず証拠を残し、その後に危険度と影響範囲を絞り込みましょう。
WordPressのfavicon.icoに不審なコードがある時は削除前に保全する
WordPressのfavicon.icoに不審なコードを見つけた時は、削除・上書き・ブラウザでの直接アクセスを止め、最初に原本と周辺情報を保存してください。
先に消すと、そのファイルがいつ置かれ、どこから呼ばれ、別の不審ファイルと同時に変更されたかを追えなくなります。
原因が残っていれば、正規アイコンを置き直しても同じ名前で再生成されるおそれがあります。
正規のfavicon.icoが担う役割を知る
faviconは、ブラウザーのタブ、ブックマーク、モバイル端末などでサイトを見分けるための小さなアイコンです。
通常は画像データであり、サイトの本文や管理処理を実行する役割はありません。
WordPress公式は、現在の環境では管理画面の「サイトアイコン」機能を使う方法を案内しています。
WordPress 6.5以降なら「設定」→「一般」から、512ピクセル以上の正方形画像を登録でき、PNGが推奨されています。

そのため、Web公開領域の直下に手作業で置かれたfavicon.icoが、現在も本当に使われているとは限りません。
テーマの古い指定、静的HTML、キャッシュ、別CMSの残骸から参照されている場合もあります。
.icoという拡張子だけでは画像と断定できない
ファイル名の末尾は変更できるため、sample.phpをfavicon.icoへ改名しても、内容が自動で画像へ変わるわけではありません。
反対に、正規のICOはバイナリデータなので、テキストエディターでは意味不明な記号に見えることがあります。
つまり、「読めない文字があるから感染」「.icoだから画像」という判断は、どちらも根拠が不足しています。
ファイルの識別結果、先頭部分、画像としての読み込み可否、PHP構文、配置の妥当性を分けて確認します。
- ファイル名は内容を変えずに付け替えられる
- 正規画像のバイナリも文字化けのように見える
- Webサーバーの設定によって処理方法が変わる
- 同名ファイルでも置かれた場所と参照元が異なる
発見直後に停止する操作と残す情報
発見直後は、ファイルマネージャーの編集画面で保存し直したり、権限を何度も変更したりしないでください。
更新時刻やハッシュが変わると、他の痕跡との時系列を比較しにくくなります。
- サーバー上の絶対パスまたは公開領域からの相対パス
- ファイル名、サイズ、更新日時、所有者、パーミッション
- サーバー通知やスキャン結果の全文と検出日時
- ダウンロードした原本のSHA-256ハッシュ
- 同じ時刻に更新された周辺ファイルの一覧
不審ファイル一般の評価方法も先に確認しておくと、favicon.icoだけを特別扱いして判断を誤りにくくなります。

WordPressのfavicon.icoが偽装マルウェアか見分ける確認項目
WordPressのfavicon.icoが偽装マルウェアかを見分けるには、形式、内容、配置、属性の4方向を読み取り専用で照合します。
一つの兆候だけで確定せず、複数の根拠が一致するかを見てください。

ファイル形式と先頭バイトを読み取り専用で確認する
SSHを利用できる場合は、対象を実行せず、fileコマンドで識別結果を確認します。
さらに先頭の少量だけを16進表示し、ICOとして想定される構造か、テキストやスクリプトとして読める内容かを比較します。
file path/to/favicon.ico
xxd -l 32 path/to/favicon.ico
sha256sum path/to/favicon.icoレンタルサーバーにSSHがない場合は、原本を安全な端末へダウンロードし、ネットワークから切り離した調査環境で確認します。
ダブルクリックで開くのではなく、ウイルス対策ソフトや解析担当者が扱える場所へ保管してください。
PHP構文や難読化文字列は文脈と組み合わせて見る
favicon.icoの中にPHP開始タグ、eval、base64_decode、gzinflate、外部通信、ファイル書き込み、コマンド実行に関係する記述があれば、画像用途とは整合しません。
ただし、文字列が一つあるだけで機能や被害を断定してはいけません。
確認すべきなのは、コードが入力値を受け取り、復号し、保存・送信・実行する流れを持つかです。
難読化された断片は展開して実行せず、原本のハッシュを残したまま静的解析します。
- 画像ファイルとして読み込めず、PHP構文が確認できる
- 外部から渡された値を復号・保存・実行する処理がある
- 正規サイトアイコンとは別の場所に複数コピーがある
- 不審な管理者や別の改ざんと更新時刻が近い
- アクセスログに不自然なPOSTやクエリ付き要求がある
配置場所・更新時刻・所有者・同名ファイルを照合する
公開領域直下のfavicon.icoは珍しくありませんが、wp-includesの深い階層、uploadsの年月フォルダー、cache、tmp、使っていないテーマ内などに同名ファイルが散在していれば理由を確認します。
正規アイコンを更新した日時と一致するか、WordPressやテーマの更新で生成されたものか、管理者が設置した履歴があるかを照合してください。
所有者や権限が周辺の正規ファイルと違う場合も、侵入経路を探す手掛かりになります。
感染ファイルを周辺から探す作業は、更新時刻だけで決め打ちせず、正規配布物との差分やスキャン結果も組み合わせます。
次の記事では、候補を壊さずに絞る基本手順をまとめています。

WordPressのfavicon.icoが実行される条件と参照元を調べる
WordPressのfavicon.icoにコードがあっても、置かれているだけで必ず実行されるとは限りません。
Webサーバーがその拡張子をどう処理し、どのURLやファイルから呼ばれているかを分けて確認します。

ApacheやPHP-FPMのハンドラー設定を確認する
Apacheでは、拡張子をMIMEタイプだけでなくハンドラーへ関連付ける設定があります。
.htaccessやサーバー設定にAddHandler、SetHandler、FilesMatchなどがあり、.icoまでPHP処理へ渡す設定なら実行可能性が変わります。
NginxとPHP-FPMでも、locationや正規表現の設定次第でPHPへ渡す範囲が決まります。
ただし共有サーバーでは利用者が見られない設定もあるため、推測で書き換えず、ホスティング会社へ対象パスと応答を添えて確認してください。
- 公開領域と上位階層の.htaccess
- 対象ディレクトリ固有のハンドラー指定
- ホスティング管理画面のPHP実行・CGI設定
- NginxのlocationとPHP-FPMへの受け渡し条件
- CDNやWAFを通した時と直接配信時の応答差
HTML・テーマ・site_icon設定から参照元を追う
次に、公開ページのhead内にあるlink rel=”icon”、テーマのheader.php、追加コード、静的HTMLを確認します。
WordPressのサイトアイコンはメディア添付ファイルを参照するため、設定中のsite_iconとサーバー上のfavicon.icoが別物というケースもあります。
不審ファイルを参照するURLが見つかったら、その記述を消す前にファイル名、対象テーマ、更新時刻を記録します。
複数ページで同じ参照が出るのか、特定の端末・検索流入・ログイン状態だけで差し込まれるのかも確認してください。
トップページが普通でも、検索結果、スマートフォン、特定の参照元だけに症状が出る改ざんがあります。
公開側・管理画面・ファイル・データベースを横断する確認は、次の記事も参考になります。

アクセスログで呼び出し方と時系列を確かめる
アクセスログでは、favicon.icoへのGETだけでなく、POST、長いクエリ文字列、不自然なUser-Agent、短時間の反復、同じ送信元から別の不審ファイルへ続く要求を確認します。
ブラウザーは通常のページ閲覧でもfaviconを自動取得するため、GETが多いだけでは攻撃と断定できません。
重要なのは、設置・更新された時刻、最初の不自然なアクセス、その後の別ファイル生成や管理者追加がつながるかです。
WordPressのfavicon.icoを安全に隔離して正規アイコンへ戻す
WordPressのfavicon.icoが不審と判断できたら、原本を保全したうえで公開経路から隔離し、正規のサイトアイコンへ置き換えます。
削除だけではなく、表示と実行の両方が止まったことを確認してください。

原本・属性・ハッシュを保存してから隔離する
隔離前に、対象ファイルを改変せずコピーし、サイズ、時刻、所有者、権限、SHA-256を記録します。
保管先はWebからアクセスできない領域にし、ファイル名には取得日時と元パスが分かる情報を添えます。
業務サイトで影響が読めない場合は、いきなりサイト全体を削除せず、WAF、メンテナンス表示、接続元制限などで被害拡大を抑えます。
ただし、どの制限が必要かは症状と契約環境で異なります。
- 対象パスとファイル属性を記録する
- 原本を非公開領域へコピーしてハッシュを取る
- 必要な範囲で公開・実行・管理操作を制限する
- 参照元と実行設定を修正して対象を隔離する
- 正規アイコンを設定し、ログと再生成を監視する
WordPress標準のサイトアイコンで置き換える
正規アイコンへ戻す時は、信頼できる元画像を新しく用意し、WordPress標準のサイトアイコン機能から登録する方法が分かりやすいです。
感染時のfavicon.icoを画像変換して再利用すると、不審な内容を引き継ぐおそれがあるため避けます。
WordPress 6.5以降では「設定」→「一般」のサイトアイコンを確認し、正方形512ピクセル以上の画像を登録します。
古いテーマがfavicon.icoを直指定している場合は、その記述が必要か確認し、不要なら標準設定へ統一してください。
キャッシュを消して表示とHTTP応答を再確認する
faviconはブラウザー、WordPress、サーバー、CDNに長く残ることがあります。
正規アイコンへ戻した後は各層のキャッシュを順番に消し、別ブラウザーやシークレット表示でも確認します。
確認項目は見た目だけではありません。対象URLのHTTPステータス、Content-Type、Content-Length、リダイレクト先を確認し、意図しないスクリプト応答や外部転送がないことを確かめます。
- トップページと主要下層ページで正規アイコンが出る
- PC・スマートフォン・ログアウト状態で差がない
- 対象URLが画像として妥当なContent-Typeを返す
- 外部リダイレクトや不自然なレスポンスがない
- 隔離した不審ファイルが同じ場所へ再生成されない
WordPressのfavicon.ico発見後に被害範囲と侵入口を確認する
WordPressのfavicon.icoを隔離して表示が戻っても、同じ権限で置かれた別ファイルと侵入口が残っていないか確認するまで復旧は終わりません。
攻撃者が偽装ファイルを設置できたなら、管理者アカウント、脆弱なプラグイン、盗まれた認証情報、別CMS、サーバー内の別サイトなど、書き込み経路が存在した可能性があります。
同時刻のファイル・管理者・Cron・データベースを調べる
favicon.icoの更新時刻を基準に、前後の時間帯で追加・変更されたPHP、JavaScript、.htaccess、テーマ、プラグインを確認します。
WordPress側では、見覚えのない管理者、Application Passwords、WP-Cron、予約投稿、optionsの不審なURLも調べます。
同じサーバーに複数のWordPressや古いCMSがある場合は、対象サイトだけを見ても侵入口を見落とします。
公開領域、サブドメイン、停止中サイト、バックアップ展開先まで棚卸ししてください。
乗っ取りの疑いがある時に、被害を広げず情報を残す初動は次の記事で詳しく整理しています。

認証情報変更と更新は安全な順番で行う
パスワード変更は感染が疑われる端末を避け、WordPress管理者、ホスティング、SFTP・SSH、データベース、メール、DNS・ドメイン、CDNの順に関連範囲を整理します。
WordPress本体、テーマ、プラグインは、バックアップと互換性を確認したうえで信頼できる配布元の最新版へ更新します。
改ざん済み環境の上で更新ボタンを押すだけでは、不正な追加ファイルやデータベース改変が残ることがあります。

WordPress公式のHardeningも、セキュリティを「完全に安全にする一発の設定」ではなく、適切な制御でリスクを下げ続ける考え方として説明しています。
バックアップ、ログ、監視、更新を組み合わせることが重要です。
駆除後は再感染監視とバックアップ更新を行う
Wordfenceなどのスキャンは確認の補助になりますが、検出結果だけで駆除完了とは判断できません。
クイックレスキュー365はログイン防御やuploads内のPHP実行防止などに使えますが、マルウェアスキャン機能はないため役割を混同しないでください。
駆除後の認証、更新、監視、バックアップの見直しは、次の記事のチェック項目も利用できます。

WordPressのfavicon.ico対応でやってはいけないこと
WordPressのfavicon.ico対応では、動作確認のつもりで実行することと、1ファイルだけで結論を出すことを避けるべきです。
調査前の操作が、被害拡大や証拠消失につながる場合があります。
ブラウザーで何度も開いて動作確認しない
対象URLへアクセスすると、サーバー設定によってはコードが処理される可能性があります。
また、攻撃者側へアクセスを知らせたり、アクセスログに確認操作が混ざったりするため、闇雲な再現テストは避けます。
必要なHTTP確認は、対象を隔離した後、または専門家が影響を限定できる環境で行います。
本番サイトで試す場合も、目的、時刻、送信元、期待する応答を記録してください。
1ファイル削除だけで解決と判断しない
偽装favicon.icoは症状の一つであり、設置した仕組みが別にあるかもしれません。
不審な管理者、Cron、mu-plugins、テーマ内ローダー、.htaccess、別サイトの脆弱性が残れば再生成されます。
反対に、十分な確認なしで同名ファイルを一括削除すると、古い静的ページや別システムの正規アイコンまで失うことがあります。
パスとハッシュを個別に管理し、同名だから同一と決めつけないでください。
証拠なしでサーバー設定を一括変更しない
.htaccessを初期化したり、PHPハンドラーを一括削除したりすると、正規サイトが停止する場合があります。
変更前の設定、適用範囲、復元方法を保存し、一つずつ差分を確認してください。
- 不審ファイルを本番サーバー上で実行して確かめる
- 原本を保存せず削除または上書きする
- 拡張子だけで安全・感染を断定する
- 検出された1ファイルだけ処理して調査を終える
- バックアップなしで設定や権限を一括変更する
WordPressのfavicon.icoに関するよくある質問
WordPressのfavicon.icoを確認する時によくある疑問を整理します。
環境によって答えが変わる部分は、ファイル単体ではなく設定とログを優先してください。
WordPressのfavicon.ico偽装は実体・実行条件・侵入口まで確認する
WordPressのfavicon.icoに不審なコードを見つけた時は、拡張子や見た目だけで結論を出さないでください。
原本と属性を保全し、形式、内容、配置、参照元、サーバーの実行設定、アクセスログを順番に確認するのが安全です。
偽装マルウェアと判断できた場合も、1ファイルの削除だけでは不十分です。
公開経路から隔離し、正規サイトアイコンへ置き換えたうえで、同時刻の変更、管理者、Cron、データベース、別CMSまで被害範囲を調べます。
- 削除・上書き・直接実行を止める
- 原本、属性、時刻、ハッシュを保存する
- ファイル形式、コード、配置、参照を照合する
- Webサーバー設定とアクセスログを確認する
- 隔離、正規アイコン置換、侵入口調査、再発監視を行う
駆除後は、クリーンなバックアップを作り直し、同じパスへの再生成がないか継続して確認しましょう。
WordPressのfavicon.icoを自分で安全に判断できない時は

favicon.icoの中にPHPや難読化コードがあり、実行条件や被害範囲を判断できないなら、
クイックレスキューが証拠保全から感染調査、隔離、復旧、再発防止まで対応します。
- favicon.icoが画像なのかマルウェアなのか判断できない
- 不審コードを消す前に何を保存すべきか分からない
- 同名ファイルが何度も再生成される
- サーバー設定やアクセスログまで確認できない
- 別のバックドアや不審な管理者が残っていないか不安
- 万一復旧できない場合やマルウェア駆除できない場合は全額返金保証で安心
- 90日間再感染保証・動作保証で安心
- 初期費用・調査費用0円で安心
