【修正とお詫び】はてブ追加画面拡張GreasemonkeyのXSS脆弱性の修正
2007-02-22に公開したはてブ追加画面にサイトを表示するGreasemonkey : akiyan.comにXSS脆弱性がありました。申し訳ありませんでした。現在は修正されておりますので、ダウンロードされた方は再インストールをお願いいたします。
脆弱性の内容
XSS脆弱性。攻撃者は、はてブ追加画面にサイトを表示するGreasemonkey : akiyan.comを有効している状態のユーザーに対して、特定のURLにアクセスさせることで攻撃者の任意のスクリプトをb.hatena.ne.jpドメイン上で実行できてしまう。
脆弱性の修正の方法
http://www.akiyan.com/js/viewSiteAtHatenaBookmark.user.jsを再インストールしてください。
脆弱性の原因
表示されるiframe要素のsrc値のチェックを怠っていたため。
修正内容
http(s):スキーマ以外だった場合は表示しないようにしました。
src値の設定方法を変えました。
御礼
http://b.hatena.ne.jp/taninsw/20070222#bookmark-40295602にて脆弱性の指摘をいただきました。ありがとうございました。
修正後のスクリプト
// ==UserScript==
// @name View Site at Hatena Bookmark Add
// @namespace http://www.akiyan.com/
// @description View Site at Hatena Bookmark Add
// @include http://b.hatena.ne.jp/add?mode=confirm*
// ==/UserScript==
(function(){
var $ = function(id){ return document.getElementById(id); };
var $c = function(a) { return document.createElement(a) };
var $s = function(e, s) { e.setAttribute('style', s); };
$s($('body'), 'width:42%;float:left');
location.search.match(/&url=(https?(%3A|:)[^&]+)/);
var url = decodeURIComponent(RegExp.$1);
if (!url)
return;
var e = $c('iframe');
e.src = url;
$s(e, 'width:53%;height:80%;float:right');
$('container').appendChild(e);
})();
修正前のスクリプト
// ==UserScript==
// @name View Site at Hatena Bookmark Add
// @namespace http://www.akiyan.com/
// @description View Site at Hatena Bookmark Add
// @include http://b.hatena.ne.jp/add?mode=confirm*
// ==/UserScript==
(function(){
var $ = function(id){ return document.getElementById(id); };
var $c = function(a) { return document.createElement(a) };
var $s = function(e, s) { e.setAttribute('style', s); };
$s($('body'), 'width:42%;float:left');
var d = $c('div');
location.search.match(/&url=([^&]+)/);
var url = decodeURIComponent(RegExp.$1);
d.innerHTML = '<iframe style="width:100%;height:80%" src="' + url + '"></iframe>';
$s(d, 'width:53%;float:right');
$('container').appendChild(d);
})();
コメント / トラックバック