private ip disclosure解消方法

簡単だった

はじめに

画像が原因の場合、追記の内容で解決する

というかそもそも、見当違いの内容を書いてた臭い。一部、なぜか効いたりしてたけど。
効く部分もあるかもしれないけど、自分の個別事案から言えば全く持って違うことをしてた。

恥ずかしいけどログとして残す。

どういうアレか

脆弱性名称「Private IP Disclosure」。OWASP ZAPだとここのやつ。

プライベートIPがバレる可能性があるからどうにかしろよ、という内容。この場合の対象は画像ファイルとかになるみたい。

Apacheだとhttpd.confでServerNameを指定することで回避(隠蔽)できるのでそれで済むらしい。

#ServerName www.example.com:80

元々あるこれの「#」を外してドメインを書き換えてApacheを再起動。つまり、サーバーを立ててる人ならいいけどレンタルサーバーだったら触れない方法。

無理じゃん、どうすんだよ。

直リン禁止で対応可能

自サイト以外からのアクセスは拒否する。拒否しちゃえば漏洩しようがない。

WEBサイトにおいて画像類は特定ディレクトリにまとめてあるのが常だから、そこに.htaccessを設置してやっていく。うち(megefeps.info)だったらこんな感じ。

SetEnvIf Referer "megefeps\.info/" ref01
SetEnvIf Referer "([a-z0-9\-]+\.)?\.megefeps\.info/" ref02
order deny,allow
deny from all
allow from env=ref01
allow from env=ref02

自分のドメイン内だったら使いまわしていいよってことで、ドメインベタ打ちの「megefeps.info」とサブドメイン全般「***.megefeps.info」に対応。嫌だったら特定ドメインを記入するだけに留める。

これを直下に設置するとページファイルとかにも掛かっちゃってWEBサイトが表示されなくなるので絶対にやらないこと。

参考

画像直リンクの禁止 - ロリポップ!レンタルサーバー
ロリポップ!レンタルサーバーのご利用マニュアル ロリポップ!レンタルサーバーでの.htaccessでの画像直リンクの禁止などを説明したマニュアルページです。

注意

直リン禁止だから。

例えばPDFをアップしてあってメールとかチャットにURLを貼り付けても閲覧できない。

ある意味で柔軟な使い回しが効かなくなる。

一応、上記だと特定のURL(ドメイン)のみ許可のところを、逆に特定のものを不許可にする書き方もできる。だけどそうすると不特定多数にオープンになるから意味がない。都度許可先を増やすのもだるいので、そもそもの使い回しをやめましょう。そういう話になる。

追記

うまくいったようでいってない。複数ファイルがヒットしてたんでファイル自体を変更したりしたんだけど、一部ファイルだけまた警告が出た。不十分だったみたい。

追記:20230913

どこで漏れを確認できるかといえば、HTTPヘッダー内の「Content-Location」が対象になる。ここにIPが混ざるんで、上書きするなり削除する形ができたらいいよねってことらしい。FireFoxの調査、Chromeの検証から覗いても項目自体が存在しないんで確認のしようがないんだけど、どうすればいいんだろうねこれ。

.htaccessで<location>は使えないだとかレンタルサーバーだと効かないだとかあるけど、とりあえずやれることはやる。

参考:https://stackoverflow.com/questions/3119922/htaccess-if-else-depending-on-server-name

RewriteEngine on
RewriteCond %{SERVER_NAME} =www.example.com
RewriteCond %{HTTP_HOST} www.example.com [NC]
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} (auth|register|secure|payment|admin|trading_careers)
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

ドメイン部分を変更して使用。

ブラウザ上でContent-Locationが見れないから動いてるかは判断できないけど、とりあえずWEBサイトの閲覧に問題は起きてない。で、チェッカーで見たら効いてるっぽい。元々不安定なチェッカーだからアレだけど、まあ、うん。

追記:20230922

ちょっとおさらいなのだけど、警告を吐かれるのは画像データだった。

画像だから、phpとかじゃないから直接指定してどうのこうのはできない。だからサーバー側で設定するしかないんだけど、レンタルサーバーだといじれない。

対象になるのは数年前にアップした画像なんだよね、直近のやつが指摘されたことはない。

なので、FTPから画像を格納してるディレクトリに行って、画像をDLして上書きアップロードしてみた。それで警告が消えた。

今までのケースではしばらく経ったらまた警告が出たりするんだけど、とりあえず数回スキャンしても警告は出てない。

同じ環境で複数のサイトを作ってるのに、1つだけエラーになってんのよね。かなり前に作ってるってのはあるんだけど、古いのを現環境に移植しただけだから何も変わらんと思うんだけど。なんなんだろう。

追記:20240424 ファイルが原因だった

まずそもそもの前提、ZAPを流用したセキュリティチェックを使用していて、それで「private ip disclosure」が出ていた。対象は画像ファイルだった。どの部分がどうなのかは何もわからない。

使用してるサービスじゃ原因が全く持って探れない。
意味がわからなすぎてZAPで内容を探った。

ドメイン指定してスパイダーで攻撃したら、「private ip disclosure」の項目があって該当画像があった。

画像の内容にプライベートIPが入ってた。
この内容はAdobeでも確認できる。

BridgeとかPhotoshopで該当のファイルを開いて、「ファイル情報」を開く。
その中の「Raw データ」を見る。

illustratorで作るとこの内容が入るっぽい。
photoshopしか普段触ってなかったから盲点だった。
photoshopで作った画像にはこれは含まれてなかった。

邪魔くさいんだけど、ここでは編集ができない。
また、photoshopで対象画像を開いて別名保存してもRawデータは残る。

ということで、対象画像のサイズに合わせたカンバスを作って、対象画像を原寸で貼り付けて、同名で保存して、サーバーに上書きアップするのが手っ取り早いっちゃ早い。

という話。

Illustratorで画像を作るの止めてほしい。
ただでさえサイズがまちまちだったりしてやりづらいのに、脆弱性も出ちゃうとか本当に困る。
でも自分で作ったら入ってなかったし、書き出し方に問題があったのかもしれない。

ここから分かることに、直リン禁止にはそこまでの効果がない。
Refererに同一ドメインを仕込んでおけばアクセスできちゃうわけで、というかWEBサイトにアクセスして人力でDLして開いても見えちゃうんで、ぶっちゃけ無意味じゃんね。

コメント

タイトルとURLをコピーしました