
みなさんこんにちは、ガノー(Twitter:Ganohr)です。
via_inject_blocker.css
というリソースをご存知でしょうか。
もちろん、私はこのようなリソースを知りません。
Googleで検索をかけても技術的な解説は一切なく、むしろ不審なアダルト向けのサイトやスプログがそのファイル名を元にブラックハットを行っているようです。
ではこのファイルが一体何なのかを突き止めるため調査をし、Android向けブラウザの『Via』が非常に怪しい挙動をしていることを突き止めたため、公表することとしました。
目次
- 1.via_inject_blocker.cssはAndroid向け『Via』ブラウザが独自にロードしようとする、不正なバックドアが動いていることの目印である可能性が高い
- 2.Viaはなぜvia_inject_blocker.cssを無断で、しかもリファラを偽装してアクセスする必要があるのか?
- 3.念のための追加調査
- 3.1.via_inject_blocker.cssが、ブラウザ「Via」により意図的にロードされていることは明白である
- 3.2.実際にViaから「via_inject_blocker.css」を設置しているウェブサイトにアクセスしても、何も警告等表示されない
- 3.3.via_inject_blocker.cssのロードはabuse-ipdbでハッキングであるとマークされている
- 3.4.ViaブラウザをVirusTotal Mobileで検証した結果は特に問題は見つかっていない
- 3.5.CSSの存在チェックは脆弱性スキャンの常套手段である
- 4.この記事の結論
via_inject_blocker.css
はAndroid向け『Via』ブラウザが独自にロードしようとする、不正なバックドアが動いていることの目印である可能性が高い
以下のログをみてください。
これはViaを利用して自サイト『ぺるせぽ。』へアクセスした際の、私が独自開発しているWAF(Web Application Firewall)による解析ログです。
2023-03-29 05:47:03 GNR-ACCESS-ANALIZER token=[VERIFIED], verified=[1], ref=[https://ganohr.net/], os/browser = [OS:Android, Browser:Google Chrome Mobile]
2023-03-29 05:47:18 GNR-WAF-WEBDETECTOR mes=[VERIFIED], uri=[https://ganohr.net/blog/howto-handle-lazy-loading-error-for-w3-total-cache/], ref=[https://ganohr.net/], verified = [verified]
2023-03-29 05:47:19 GNR-WAF-WEBDETECTOR ip=[*.*.*.*], mes=[Security Risks Access], uri=[https://ganohr.net/via_inject_blocker.css], ref=[https://ganohr.net/blog/howto-handle-lazy-loading-error-for-w3-total-cache/], verified = []
2023-03-29 05:47:20 GNR-WAF-WEBDETECTOR ip=[*.*.*.*], mes=[Already Security Risks Access], uri=[https://ganohr.net/page-controll.php], ref=[https://ganohr.net/blog/howto-handle-lazy-loading-error-for-w3-total-cache/], verified = [unverified]
2023-03-29 05:47:26 GNR-WAF-WEBDETECTOR ip=[*.*.*.*], mes=[Already Security Risks Access], uri=[https://ganohr.net/blog/supremes-for-the-image-hotlink-prevention/], ref=[https://ganohr.net/blog/howto-handle-lazy-loading-error-for-w3-total-cache/], verified = [unverified]
2023-03-29 05:47:33 GNR-WAF-WEBDETECTOR ip=[*.*.*.*], mes=[Already Security Risks Access], uri=[https://ganohr.net/page-controll.php], ref=[https://ganohr.net/], verified = [unverified]
2023-03-29 05:47:44 GNR-WAF-WEBDETECTOR ip=[*.*.*.*], mes=[Already Security Risks Access], uri=[https://ganohr.net/page-controll.php], ref=[https://ganohr.net/], verified = [unverified]
2023-03-29 05:47:50 GNR-WAF-WEBDETECTOR ip=[*.*.*.*], mes=[Already Security Risks Access], uri=[https://ganohr.net/page-controll.php], ref=[https://ganohr.net/blog/howto-handle-lazy-loading-error-for-w3-total-cache/], verified = [unverified]
2023-03-29 05:48:01 GNR-WAF-WEBDETECTOR ip=[*.*.*.*], mes=[Already Security Risks Access], uri=[https://ganohr.net/blog/siteinfo-notification-regarding-billing-for-countermeasure-costs-associated-with-unauthorized-access-countermeasures/], ref=[https://ganohr4.wixsite.com/], verified = [unverified]
2023-03-29 05:48:01 GNR-WAF-WEBDETECTOR ip=[*.*.*.*], mes=[Already Security Risks Access], uri=[https://ganohr.net/page-controll.php], ref=[https://ganohr.net/blog/howto-handle-lazy-loading-error-for-w3-total-cache/], verified = [unverified]
このログの中で出てくるhttps://ganohr.net/page-controll.php
というファイルは、不正アクセスを検証するためにJavaScriptからロードされる検証プログラムです。
GNR-ACCESS-ANALIZER
はIPアドレスやUser-agentを検証し、またJavaScriptを用いてtokenベースの検証を行い、不正なアクセスではないことなどの一連の検証をしています。
この時点(https://ganohr.net/
、トップページを要求した時点)では不正なアクセスではないだろうと判断し、token=[VERIFIED]
として出力されており、この一連のアクセスで使用されるトークンが認証されたことを出力しています(これ以降、このトークンが認証に使用されます。なお、当方の開発するWAFは可能な限り個人情報を収集しないよう、不正なアクセスではないと判断している場合はトークン他、IPアドレスやUAを直接ログに出力しません)。
そして2行目のログはトップページであるhttps://ganohr.net/
からhttps://ganohr.net/blog/howto-handle-lazy-loading-error-for-w3-total-cache/
というページに遷移しようと要求されたことが示されています。
GNR-WAF-WEBDETECTOR
は要求されたURLが不正なアクセスを意図しているのか否かを検証する、独自開発しているWAFソフトウェアです。
2行目のログで要求されたhttps://ganohr.net/blog/howto-handle-lazy-loading-error-for-w3-total-cache/
は正当なURLであるため、WAFがverified = [verified]
として検証し問題のないアクセスであるとして認証したことを出力しています。
問題なのが3行目であり、Viaがウェブサイトには存在しない不審なリソースであるvia_inject_blocker.css
をロードしようとしたため、WAFは「Security Risks Access」(セキュリティリスクのあるアクセス)としてこれ以降のサイトアクセスを遮断したことが示されています。
実際、この検証の結果「Via」側は利用者に何ら同意なく、無断でvia_inject_blocker.css
をロードしていることが判明した訳です。
また、そもそもログを読める人であれば、「Viaがリファラを偽装し、存在しないファイルの読み込みを試みた」ということがわかるでしょう。
それ以降のログはViaによる不正アクセス試行が原因となり、一定期間全ての通信が「Already Security Risks Access」として遮断されています。
Viaはなぜvia_inject_blocker.css
を無断で、しかもリファラを偽装してアクセスする必要があるのか?

ViaのAndroidのGoogle Play上ではこのブラウザの内容を以下のように説明しています。
100万ダウンロード突破!軽量、高速ブラウザの決定版! ✔広告なし Viaブラウザには設定画面含め、邪魔な広告はありません。 ✔無料 全ての機能が無料にてご利用できます。 ✔不要な通知なし 天気や別のアプリなどのポップアップ通知はありません。 ✔日本語対応 日本人による翻訳が行われています。 ✔軽量、高速 アプリサイズも小さく端末の容量を圧迫しません。 動作中のメモリ使用も多くありません。 ■機能 ・UIのカスタマイズ ・広告ブロック機能 ・個人情報保護 ・ブックマーク ・ナイトモード ・PCビュー機能 ・翻訳 ・ページ内検索 ・複数の検索エンジン対応 ・ウェブページの保存(mht形式) ・画像のみの表示機能 ・ホームページを自由にカスタマイズ ・フルスクリーン表示 ・User Agentの変更 その他にも多くの機能が搭載されています。 ■権限に関して ・位置情報 ウェブサイトに位置情報を提供するために使用しています。 ・ストレージ 画像やメディアなどのダウンロードを行うために使用しています。 ■日本語翻訳について 有志による翻訳を行っています。 新しいバージョンがリリース後、実際の表示箇所を確認しつつ翻訳しています。 タイミングにより翻訳がされていない所がある可能性があります。ご了承ください。 また、翻訳が変な箇所などありましたら、コメントにてご報告お願い致します。 該当箇所を確認し、必要であれば修正を行います。
ここで注意しなければならないことは、「Viaにはマルウェア対策や利用者保護等の機能は存在しない」という点です。
加えて、このソフトは、個人情報保護を謳っているにも関わらず、個人を識別できるIDを第三者へ提供することを示しています。
データ セーフティ このアプリが収集、共有する可能性があるデータの種類と、アプリに適用されるセキュリティの方針について、デベロッパーから提供された情報が記載されています。データの取り扱いは、アプリのバージョンや使用方法、ユーザーの年齢やお住まいの地域によって異なることがあります。詳細 共有されるデータ / 他の企業や組織と共有される可能性があるデータ アプリのアクティビティ/アプリ インタラクション数 共有されるデータとその目的 アプリ インタラクション数/分析 アプリの情報、パフォーマンス クラッシュログ、診断 共有されるデータとその目的 クラッシュログ/分析 診断/分析 デバイスまたはその他の ID/デバイスまたはその他の ID 共有されるデータとその目的 デバイスまたはその他の ID/分析 収集されるデータ / このアプリで収集される可能性があるデータ 個人情報/ユーザー ID 収集されるデータとその目的 ユーザー ID/アプリの機能 アカウント管理 アプリのアクティビティ/アプリ インタラクション数 収集されるデータとその目的 アプリ インタラクション数/分析 アプリの情報、パフォーマンス/クラッシュログ、診断 収集されるデータとその目的 クラッシュログ/分析 診断/分析 デバイスまたはその他の ID/デバイスまたはその他の ID 収集されるデータとその目的 デバイスまたはその他の ID/分析 セキュリティの方針 データは送信中に暗号化されます データは安全な接続を介して送信されます データを削除するようリクエストできます データを削除するようデベロッパーにリクエストできます
これを見る限り、「Viaは個人情報保護機能を提供しているように見せかけて、実際は明確に個人情報であるIDを第三者へ提供する」わけであり、信頼性が著しく低いことは明白ではないでしょうか。
また、当サイトはvia_inject_blocker.css
などというリソースは一切利用しておらず、それなのにHTTP REFERRERが「https://ganohr.net/」となっており、これは明らかに「Via」が当サイトからのリクエストであるとリファラを偽装していることを示しています。
本来、正当な理由でのアクセスであればわざわざリファラを偽装してアクセスする必要はありません。
ViaはChromiumベースのWebViewを用いて実装していることが明示されているわけであり、そのウェブサイトがvia_inject_blocker.css
を呼び出しているのであればコード内に含まれており、わざわざリファラを偽装しなくとも、標準的な動作としてそのCSSがロードされるはずです。
CSSをロードしない場合も、取得したHTML内にvia_inject_blocker.css
のパスが含まれるかどうか確認するだけで良いはずです。
しかし、Viaはあえて存在しないファイルに対して、しかも明らかに不正アクセスでよく利用されるリファラ偽装という手段を用いてアクセスしようとしているのです。
- 脆弱なサイトから利用者を守るような機能のないViaでありながら、
- しかも個人情報保護を謳いながら明らかに個人情報であるIDを第三者へ提供するといった矛盾のあるアプリを提供し、
- あまつさえリファラ偽装という不正アクセスによく使われる手法で無関係な
via_inject_blocker.css
を呼び出す
ここまで不審なアプリを、一体誰が信頼しろというのでしょうか?
念のための追加調査
via_inject_blocker.cssが、ブラウザ「Via」により意図的にロードされていることは明白である
まず、「via_inject_blocker.css
」が意図的に呼び出されていることは以下のGitHub上のIssueより確定します。
The hard coded injected js code
if (!document.getElementById('via_inject_css_blocker')) { var css = document.createElement('link'); css.id = 'via_inject_css_blocker'; css.type = 'text/css'; css.rel = "stylesheet"; css.href = 'https://www.reddit.com/via_inject_blocker.css'; var o = document.getElementsByTagName('head'); if (o.length > 0 && o[0].appendChild(css)) {} } ; won't work on reddit.com since
Uncaught SyntaxError: Identifier 'o' has already been declared. Please use let instead of var in your source code.
こうしたやり取りからViaが意図的に「via_inject_blocker.css」をロードしようとしていることは明らかです。
なお、このコードのままであれば「reddit」のみvia_inject_blocker.css
を呼び出すように思うかも知れませんが、このIssueの返答では「対応済み」とのみ返信がされており、「via_inject_blocker.css
」周りのコードをどのように変更したかは触れていません。
実際にViaから「via_inject_blocker.css」を設置しているウェブサイトにアクセスしても、何も警告等表示されない
以下のリソースは200 OK
を返しますが、www.omnitron-systems.comへアクセスしてもViaは警告も何も表示しません。

なお、このリソースは実際のところ空のファイルを返却しており、「Viaは空のファイルの場合なにもしない」という実装になっているのか、その他の理由は不明です。
されど、Viaが実際にこのファイルが設置されていても設置されていなくても、利用者に対してなにも警告を出していないことはViaを疑う十分な証拠になるのではないでしょうか。
via_inject_blocker.cssのロードはabuse-ipdbでハッキングであるとマークされている
abuse-ipdbはウェブサイトへアクセスしたIPアドレスの不正行為を報告できるウェブサービスです。
ウェブサイトのセキュリティ対策を行っている人の間では有名なサービスです。
これを調べると、「via_inject_blocker.css
」の呼び出しが「Hacking
, Web App Attack
」として報告されています。
Reporter Date Comment Categories repi 18 Dec 2020 via_inject_blocker.css Hacking, Web App Attack
ただし、この情報自体はユーザーによる報告であり件数も1件しか無いため、参考とするにもやや不十分となります。
ViaブラウザをVirusTotal Mobileで検証した結果は特に問題は見つかっていない
『VirusTotal』は、オンラインで利用できるウィルスチェックサービスです。
これはダウンロードできるファイルのチェックしか行なえませんが、この機能をモバイルデバイス上で利用できる『VirusTotal Mobile』があります。
ただしこちらは有志によりVirusTotalを利用したアプリケーションであるため、『VirusTotal自体は保証しない』となっています。
とはいえVirusTotal自体がその存在を知り、アナウンスをしているため、一定の信頼性はあるでしょう。
このVirusTotal Mobileにてチェックを行った限り、『Via』は少なからず何らかのウィルスやトロイの木馬ではないと考えられます。
CSSの存在チェックは脆弱性スキャンの常套手段である
「css」ファイルの有無を調べたって別に問題ないのでは?と思っている方がいれば、それは完全な間違いです。
「特定のCSSがそのサイトに有るかどうかを調べる」というのは‘Vulnerability Scanning(脆弱性スキャン)の常套手段であることを知るべきです。
基本的には管理者の許可なくVulnerability Scanningを行うことは不正アクセスのための準備であると認識されるため、行き過ぎた行為は不正アクセスとして認定されることがあります。
実際、以下は当サイトを標的にして行われたことのある、CSSの存在を元にしたVulnerability Scanningの一例です。
/wp-includes/images/style.css
/wp-includes/css/css.css
/wp-includes/fonts/style.css
/wp-content/themes/workreap/style.css
/wp-content/themes/greyd_suite/style.css
/wp-content/themes/houzez/style.css
/wp-content/plugins/wpgateway/css/style.css
/wp-content/plugins/wp-live-chat-support-pro/css/wplc_styles_pro.css
/wp-content/plugins/dzs-zoomsounds/admin/admin.css
/wp-content/plugins/superlogoshowcase-wp/css/sls-wp-admin.css
/wp-content/plugins/super-interactive-maps/css/sim-wp-admin.css
/wp-content/plugins/superstorefinder-wp/css/ssf-wp-admin.css
/wp-content/plugins/e-signature/page-template/default/style.css
/wp-content/plugins/wp-automatic/css/wp-automatic.css
※ 当サイトにこのファイルの検証を行うと、そのIPアドレスは比較的長期間ブロックされます
この記事の結論
『Via』には様々な点で不審な点があり、わざわざサイト上で呼び出していないリソースをリファラ偽装してまで要求する合理的な理由がありません。しかも実際にvia_inject_blocker.css
が設置されているサイトへアクセスしても、警告等を表示するわけでもないのです。個人情報保護機能を謳っていながら、実際は個人情報であるIDを第三者へ提供するわけであり、非常に疑わしいと評するしかないでしょう。
少なからず、
Androidで広告を排除したブラウジングという理由であれば、『Via』の利用はおすすめしません。 Androidでは現状、AdGuardを利用する方が賢明だと思います。
加えて当サイトでは、当分の間Viaの挙動は不審であると考え、WAF側の不正アクセス対策の一環として拒否することとします。

コメントを書く