元派遣プログラマの自称技術系ブログです。雑記とか自作のオープンソースプロジェクトの話とか。
Javaとか組込とかできます。お仕事ください。

PsperController-0.1.2リリース

PsperController/0.1.2をリリースしました。

更新内容

  1. 悪意のあるウェブサイトにアクセスした場合に、PSPERの設定ファイルの内容が読み取られてしまう問題を解消しました。
  2. PSP-1000に対応しました。(多分)

セキュリティ問題の内容

PSPのブラウザであるNetFrontは、HtmlやJavascriptの中に書かれているドメインをチェックしないため、インターネットドメインのウェブページにローカルドメインのURLが書かれていると、そのままアクセスしてしまいます。

アクセスできるファイルはNetfrontが解釈できる一部のファイルだけ(画像、Html、JS,CSS等)ですが、外部サーバーから自由にアクセスできるので、データが流出する可能性があります。

対策

こんな感じのスクリプトで、ローカルファイルを保護するようにしました。
保護された部分の情報は、外部サイトから読みだすことができません。

(function(){
	var w=window;
	do{
		if(w.location.protocol!="file:")
		{
			alert("!!Security Error!!");
			//ローカル以外からのアクセスではここにくる
			//無限ループで停止させても良い。
			return;
		}
		if(w===w.parent){
			break;
		}
		w=w.parent;
	}while(w!=undefined);
	//ここに重要な値の初期化コードを書く。ローカルからしか実行できない。
}())

おまけ

PSPのマイブックマークの問題

PSPのマイブックマークのデータは残念ながらHTMLのなので、割と簡単に流出してしまいます。

ブックマークに識別情報を保存するタイプのアプリケーションは、特に危険です。十分注意してください。(PSPERはブックマークに情報を保存しないので、関係ありません。)

マイブックマークの流出対策

アクセスを遮断する方法は見つかってないのですが、次のスクリプトをPSPのマイブックマークの先頭行へ追記しておくと、ブックマークデータを抜かれそうになった時に、警告を出すことはできます。(警告が出た瞬間にWLANを切断すればブロックできるかもしれませんが、100%止めることはできません。)

<script type="text/javascript">(function(){var w=window;for(;;){if(w.location.protocol!="file:"){alert("SECURITY WARNING\nThis Web site was accessed to the bookmark file.");}if(w===w.parent){break;}w=w.parent;}}())</script>

もう少し賢いコードを書けば、流出自体をブロックすることができるかもしれませんが…。

ちなみに、このコードは、PSPでマイブックマークを編集すると消えてしまいます。