情報科学屋さんを目指す人のメモ

方法・手順・解説を書き残すブログ。私と同じことを繰り返さずに済むように。

Gunosy社サーバが外部サイト画像取得の際にユーザーエージェントをちゃんと名乗るようになった(GunosyImageProxy v0.0.1)

Gunosy (6) セキュリティ (78)

Gunosyについて前回指摘したGunosyがGunosyサーバのアクセスであることを名乗らずに画像を取得するアクセスを大量に送ってきていた問題について、また修正が入っていました。それに加えて、画像用のプロキシサーバが「オープンプロキシになってる」という指摘(これは自分ではない)についても修正が入っていました。この2つの問題→修正を紹介します。

imageproxy.gunosy.com について

以前私が指摘した問題に対する対応策として、Gunosyは画像を表示する際に、画像プロキシサーバー(imageproxy.gunosy.com)を経由するようになりました。

今回紹介する問題2つは、どちらもこのサーバーに関する問題です。

ユーザーエージェントでGunosy社のアクセスであることを表示していなかった

画像用プロキシサーバーは当然画像を取得すべく、コンテンツを有しているサイトへアクセスします。

そのアクセスは何度も何度も繰り返し行われるのですが、そのアクセスについて、「Gunosy社がアクセスしています」という情報が一切含まれていませんでした。

ユーザーエージェントにGunosyという言葉が入っていればわかりやすかったのですが、「Go 1.1 package http」という、デフォルトか何かから変更していないようなユーザーエージェントでした。

参考:Gunosyの漏洩問題修正による謎のアクセスログ(compute.amazonaws.com、Go 1.1 package http)

対応内容:ユーザーエージェントをちゃんと設定

これに対してGunosy社が取った対応は、ユーザーエージェントをちゃんと設定する、というものです。

これによって、ユーザーエージェントが「GunosyImageProxy v0.0.1」になり、Gunosy社からのアクセスだろう、ということがひと目で分かるようになりました。これで簡単に拒否できるようになります。

参考:Googleからのアクセスのユーザーエージェント一覧(公式)

プロキシが何でも取ってこれた(オープンプロキシ状態だった)

もう一つの問題もそのプロキシサーバの話なのですが、そのプロキシサーバは「http://imageproxy.gunosy.com/_img_rd?u=画像のURL」というURLでアクセスすると、画像のデータを返してくれていました。

しかし、この「http://imageproxy.gunosy.com/_img_rd?u=画像のURL」の「画像のURL」の部分に画像にかぎらずどんなURLを入れても、そのURLのデータをとって来てくれる、ということが指摘されていました。

このような必要以上のことができるようになっていると、誰かが何かの踏み台として悪用するかもしれません。

ということで、それを防ぐための対策が取られたようです。

対策内容:リファラチェック

ブラウザで先ほどのURLにアクセスしても、表示されなくなりました(404 Not Foundを返す)。

これは、プロキシサーバへのリクエストヘッダのリファラをチェックしているようです。

簡単に言うと、gunosy経由でアクセスしていない場合は使わせない、というイメージです。

とはいえ、「gunosy経由」というのはあくまでHTTPのリクエストヘッダの「Referer(Referrer)」次第なので、例えばそこに「http://gunosy.com/」と設定した場合には、対応前と変わらず、いろいろなページヘGunosyサーバー経由でアクセスすることができます

ただ、どこまで限定すればいいのか、程度が読めないっていう。本当はGunosyに表示した画像リストと照合するなんていうのが一番正確ではあるけれど・・・・・・

※この確認には、リファラ偽装ができるChrome拡張機能を利用しました。

これを見てさらにGunosyが修正

おそらくこの記事を受けてか、数時間後には瞬く間に修正が入っていました。その内容は単純で、画像ファイルしか通さないという修正です。画像は好きな画像を取ってきてくれますが、普通のWEBページ(HTML)は取得できなくなっていました(リファラを偽装しても)。

メモ

一度、503が出ました。

Error 503 Service Unavailable

Service Unavailable

Guru Meditation:

XID: 1234567890

Varnish cache server

(別にそのままでも良かったけど)XIDは適当なものに置き換えて書きました。XIDがわかると、Varnishのログからどのアクセスで表示された503だったのかを特定することができるようです。

指摘→修正 メモ

何を指摘して修正されたのかメモしておきます。よくわからなくなってきたので。

  • リダイレクトがリファラを引き継いでいてFacebookアカウント名が漏れてるよ→修正
  • ドメイン名部分にリファラが挟まってないよ→修正
  • 外部サイトの画像を直接埋め込んでるからそこからリファラが送られてFacebookアカウント名が漏れてるよ→修正
  • 画像用のプロキシが外部サイトにアクセスするときに謎のユーザーエージェントでGunosyからのアクセスだかわからないよ→修正

コメント(0)

新しいコメントを投稿