さて巷ではJVNVU#98282440: 「提督業も忙しい!」(KanColleViewer) がオープンプロキシとして動作する問題が話題ですが、FiddlerCore は何も考えないで実装すると恐らくこうしてしまうような仕様です。クソですね。。
そもそも何が問題なのか
とりあえず適当に FiddlerCore を使ったアプリケーションを立ち上げてみましょう。
[csharp]
FiddlerApplication.Startup(55555, FiddlerCoreStartupFlags.Default);
[/csharp]
するとあら不思議、0.0.0.0:55555でListningされてしまいます。
[raw]
C:\Windows\system32>netstat -a -b -n -o -p TCP
アクティブな接続
プロトコル ローカル アドレス 外部アドレス 状態 PID
…(中略)…
TCP 0.0.0.0:55555 0.0.0.0:0 LISTENING 6688
[FiddlerTest.vshost.exe]
[/raw]
これではアプリが立ち上がってる間は外部からHTTPプロキシとして利用できてしまいます。
知らず知らずのうちに他所様への攻撃の踏み台にされて、ある日突然警察がやってくるなんてこともあるかもしれません。怖いですね。
で、どうすればいいかというと、127.0.0.1:55555でLisningするようにできればローカルプロセスしかアクセスできなくなるので、そう変更したいですね?
これはごく簡単で、AllowRemoteClientsをfalseにしてやればOKです。
[csharp]
FiddlerApplication.Startup(55555
, FiddlerCoreStartupFlags.RegisterAsSystemProxy
| FiddlerCoreStartupFlags.ChainToUpstreamGateway
| FiddlerCoreStartupFlags.MonitorAllConnections
| FiddlerCoreStartupFlags.CaptureLocalhostTraffic);
[/csharp]
Flagなので指定しなければOK。
[raw]
C:\Windows\system32>netstat -a -b -n -o -p TCP
アクティブな接続
プロトコル ローカル アドレス 外部アドレス 状態 PID
…(中略)…
TCP 127.0.0.1:55555 0.0.0.0:0 LISTENING 7128
[FiddlerTest.vshost.exe]
[/raw]
つまりFiddlerCoreStartupFlags.Defaultがイカンわけです。
でも FiddlerCore は Fiddler.exe のUI以外の部分を抜き出したものなわけですから、Fiddler.exe 自体がそういうもんだという可能性もあります。

参照: FiddlerCore – Fiddler Proxy Engine for your .NET Applications
ここで Fiddler.exe および FiddlerCore のデフォルト値を見てみましょう。
オプションのデフォルト値
| Fiddlerオプション | Fiddler.exeのデフォルト | FiddlerCoreのデフォルト |
|---|---|---|
| RegisterAsSystemProxy | true | true |
| DecryptSSL | false | true |
| AllowRemoteClients | false | true |
| ChainToUpstreamGateway | true | true |
| MonitorAllConnections | true | true |
| HookUsingPACFile | false | false |
| CaptureLocalhostTraffic | true | true |
| CaptureFTP | false | false |
| OptimizeThreadPool | ??? | true |
参考:
- Fiddler Options – Fiddler Documentation
- Fiddler and the IE9 Release Candidate – Fiddler Web Debugger – Site Home – MSDN Blogs



おかしいですね。
DecryptSSLとAllowRemoteClientsは、Fiddler.exe ではデフォルトfalseですが、FiddlerCore ではtrueになってしまっています。
いやでももしかしたらFiddlerCoreStartupFlags.Defaultを使うのは推奨されていないのかもしれません。
そこで FiddlerCore Documentation を見てみましょう。
FiddlerCore – Fiddler Proxy Engine for your .NET Applications
だめじゃん……
いや、でもまだ他に2つのオーバーロードがある?
ところがどっこい、こいつらは NOT RECOMMENDED なのです。
おまけにここでbAllowRemoteを指定しない場合、trueになります。
なお悪いことに、適当に FiddlerCore で検索してよく出てくるサンプルでは、これらの NOT RECOMMENDED なオーバーロードを使用してかつbAllowRemoteがtrueになっているものが非常に多いのが現状です。
実にクソい。
まとめ
FiddlerCoreStartupFlags.Defaultや、FiddlerCoreStartupFlagsを使わないオーバーロードの使用をやめ、必要最低限の Flag のみ指定しましょう。
おまけ
とはいえ、現実的にはオープンプロキシなプロセスが立ち上がっていたとしても、実害を受ける人は恐らく少ないと考えています。
NAT(NAPT)環境下やパーソナルファイアウォール(PFW)がある場合は、対象のポートへアクセスできるようにしていない限りは外部からのアクセスは出来ないからです。
この条件に当てはまる人はそれほど多くないのではないでしょうか?
モバイルデバイス上でかつサービスアプリケーションのようにずっとバックグラウンドで立ち上がっているようなものは、やられる可能性も少し増えるかもしれませんが……
また、PFWも無しにインターネット直繋ぎなんてしている場合はこの問題以外にも様々な攻撃に曝されることになるでしょうし、穴だらけなところに穴が一つ増えるという感じになりそうな気がします。
あと考えられるのはIPv6環境?([::]:5555とかでListningされる)
ごめんなさい。IPv6はよく知らないんです。。



