ホーム » ブログ » 2007年02月 » 【修正とお詫び】はてブ追加画面拡張GreasemonkeyのXSS脆弱性の修正

【修正とお詫び】はてブ追加画面拡張GreasemonkeyのXSS脆弱性の修正

2007-02-23 written by akiyan | このエントリーを含むはてなブックマーク このエントリーを含むはてなブックマーク

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);

})();
2007-02-23 written by akiyan | お知らせ | このエントリーを含むはてなブックマーク このエントリーを含むはてなブックマーク

コメント

投稿



本文と関連性の無いコメントは削除することがあります。予めご了承ください。

トラックバック

このエントリへのトラックバックURLは
http://www.akiyan.com/cgi/mt/mt-tb.cgi/322
です。トラックバック元のエントリに当サイトへのリンクが無い場合はトラックバックを削除することがあります。