
By Shinichi Sugiyama JavaScriptで書かれたオープンソースのウェブアプリケーションフレームワークであるAngularJSのサンドボックスをバイパスすることで、ユーザーのパスワードを盗む攻撃のXSSをマクドナルドの公式サイトで行えることをエンジニアのTijme Gommersさんが実証しています。 Stealing passwords from McDonald's users - Tijme Gommers https://finnwea.com/blog/stealing-passwords-from-mcdonalds-users Gommersさんは、「安全ではない暗号ストレージの脆弱性をついたり、XSSを用いたりすることでマクドナルドのユーザーが使用するパスワードを盗み出すことが可能」と主張。この方法を用いればパスワードの他に氏名・住所・連絡先などの個人
第3回Webセキュリティのおさらい その3 CSRF・オープンリダイレクト・クリックジャッキング はせがわようすけ 2016-07-13
CloudFlare protects millions of websites from online threats. One of the oldest and most pervasive attacks launched against websites is the Distributed Denial of Service (DDoS) attack. In a typical DDoS attack, an attacker causes a large number of computers to send data to a server, overwhelming its capacity and preventing legitimate users from accessing it. In recent years, DDoS techniques have b
不特定のユーザーが入力したMarkdownをブラウザ上でJavaScriptを使ってHTMLに変換するという場面においては、JavaScriptで変換してHTMLを生成するという処理の都合上どうしてもDOM-based XSSの発生を考えないわけにはいかない。かといって、MarkdownをパースしHTMLを生成するという処理すべてをXSSが存在しないように注意しながら自分で書くのも大変だし、markedやmarkdown-jsなどの既存の変換用のJSを持ってきてもそれらがXSSしないかを確認するのは結構大変だったりする。 そういった場合には、Markdownから生成されたHTMLをRickDOMを通すことで、万が一HTML内にJavaScriptが含まれていたとしてもそれらを除外し、許可された要素、許可された属性だけで構築された安全なHTMLに再構築することができる。さらに、そうやって生成
WordPressセキュリティを考える会第6回資料 WordPress(PHP) からjQuery(JavaScript)に動的に値を渡す方法について WordPressに限らず、ウェブアプリケーションでPHPからJavaScriptに値を渡したい場合はあるかと思います。 以下の方法を検証してみます。 1. data-XXX 属性の値に渡す 2. wp_localize_script 3. esc_js wp_localize_scriptは、内部でjson_encodeを使用しているが、HTMLエスケープはしないので注意が必要。 詳細は -> http://www.rescuework.jp/blog/wp_localize_script-json.html 2014-09-07(日)14:00 - 17:00 東京都中央区新川1-3-4 PAビル5F コワーキングスペース茅場町 コワー
kintoneはJavaScriptを使って自由にカスタマイズできます。 カスタマイズにより独自のリッチなUIを構築したり、新しい機能を追加したりできますが、セキュアなコーディングをしないと クロスサイトスクリプティング (以下、XSS)などの脆弱性を作り込んでしまう危険性があります。 この記事では、JavaScriptでセキュアなコーディングをするための基本的なポイントを解説します。
(Last Updated On: )RFC 4696をもう一度読みなおしてみると/もエスケープ可能文字に定義してありました。JavaScriptのエスケープシークエンスの処理の部分も間違っていたので全面的に書き直します。 RFC 4696(JSON)の定義では string = quotation-mark *char quotation-mark char = unescaped / escape ( %x22 / ; ” quotation mark U+0022 %x5C / ; \ reverse solidus U+005C %x2F / ; / solidus U+002F %x62 / ; b backspace U+0008 %x66 / ; f form feed U+000C %x6E / ; n line feed U+000A %x72 / ; r carriag
これらの中で注目すべきは ‘ と ” と \ です。シングルクォート、ダブルクオートは文字リテラルを作成する為に利用され、\ でエスケープできることです。つまり、文字リテラルの最後に \ が現れると文字列の終端が無くなります。単独で不正なJavaScriptの挿入が可能になる訳ではありませんが、プログラムの構造が破壊される事を意味します。 PHPにはJavaScript文字列用のエスケープ関数が用意されていません。htmlspecialchars()やhtmlentities()で代用している場合も多いと思います。しかし、これらの関数ではJavaScript文字列のエスケープを十分に行う事ができません。 JavaScriptプログラムの構造が破壊される例 <?php $msg1 = 'test string\\'; $msg2 = ');alert(document.cookie); //
「location.hrefが信用出来ない問題」 http://hoge.com%2F@example.com/へアクセスした場合にlocation.hrefがhttp://hoge.com/@example.com/を返す (勝手にデコードされている) location.href = location.hrefで別のページに飛ぶ iOS 6.0未満、Android4.1未満の標準ブラウザで再現 Masato Kinugawa Security Blog: location.hrefの盲点 「location.hrefが信用出来ない問題」 location.hrefに@使ってなにか入れるのは普通にできる (http://hoge:huga@example.com/のlocation.hrefはhttp://hoge:huga@example.com/) location.hrefを独自解析
JSONはjavascriptのオブジェクトの記法をベースにしたもので、主にjavascriptでオブジェクトを文字列で表す際に利用されます。 特にAjax分野ではかなり多用されます。 非常に扱いやすいので、さまざまなプログラミング言語で使うことが出来るようになってきています。 JSONは文字列なので、それをオブジェクトに変換して使うわけですが現在javascriptでやるにはいくつかの方法があります。 eval new Function JSON.parse jQuery json2.js それぞれの違いについて改めて調べてみました。 eval、new Function evalとnew Functionは古くから使われている方法です。 どちらも文字列をjavascriptとして認識、実行する方法です。 JSONはjavascriptのオブジェクトを書く方法がベースとなっているので普通に
今回で,ratproxyで検出できる特徴的なぜい弱性の解説は終わりです。最終回となる今回は,JavaScript Hijackについてです。JavaScript Hijack,そしてJSON Hijackは,JavaScriptファイルやJSONデータ内に含まれる情報を盗む攻撃です。ratproxyは,この攻撃を成立させてしまうぜい弱性を見付けやすくなっています。 JavaScript Hijack まず最初にJavaScript Hijackについて説明しましょう。JavaScript Hijack攻撃にぜい弱になるのは,個人情報などの機密情報を内容として含むJavaScriptファイルを動的に生成しているアプリケーションです。筆者が過去の検査で実際に見たケースには,以下のようなものがありました。 (index.htmlの一部) <script src="greeting.cgi"></
HTTPのTRACEメソッドを悪用する古い攻撃手法に「Cross Site Tracing(XST)」というものがあります。この攻撃手法を悪用すると、第三者が Cross Site Scripting(XSS)の脆弱性が存在するWeb サイトとブラウザの間でやり取りされる HTTP リクエスト・ヘッダを取得できてしまいます。この手法は一般的に HTTP リクエスト・ヘッダに含まれる Authorization ヘッダや Cookie ヘッダを奪取するために悪用されるようですね。 XST では一般的に JavaScript でXMLHttpRequest オブジェクトを悪用するようですが、最新のブラウザでも XMLHttpRequest オブジェクトで TRACE メソッドの HTTP リクエストを送信できるのでしょうか。というのも、W3C の XMLHttpRequest オブジェクトに関
第8章 マッシュアップ クライアントサイドマッシュアップ: #4 リクエスト強要攻撃による善意のAPIへの侵害 シナリオ4 は、悪意のサイトのコンテンツにブラウザが操られ、ユーザの意思に反して善意のAPI への攻撃が起こるというものである。このシナリオで考えられる攻撃には「リクエスト強要攻撃」がある。本節では、クライアントサイドマッシュアップの状況におけるリクエスト強要攻撃について論じる。 「リクエスト強要攻撃」 リクエスト強要攻撃は、罠のコンテンツを用いてブラウザを誘導し、ユーザの意思に反した HTTPリクエストを善意のWebサーバへ送信させる攻撃である。ユーザ本人の望まない「更新系」のトランザクションが投入され、被害が生じる。 これまで注意深いWebアプリケーション開発者の間では、サーバにおける「更新系」の処理について「リクエスト強要攻撃」が警戒され、対策がとられてきた。対策が「更新系
A framekiller (or framebuster or framebreaker) is a technique used by websites and web applications to prevent their web pages from being displayed within a frame. A frame is a subdivision of a Web browser window and can act like a smaller window. A framekiller is usually used to prevent a website from being loaded from within a frameset without permission or as an attack, as with clickjacking. Fr
この何年かでWebアプリケーションは、サーバ上のみでプログラムが動作するものから、多くのJavaScriptコードがWebブラウザで動作し、背後でサーバと連携して、リッチかつスムーズな操作感を提供するものへと進化してきた。このことは、Webブラウザ上に悪意のスクリプトを送り込む「スクリプト注入(XSS)」攻撃を、より防止しづらく、悪用の懸念がより大きなものに変化させた。本稿は、WebアプリケーションにAjax等の進化をもたらした技術について振り返るとともに、スクリプト注入対策を考慮すべき新たな文脈について論じるものである。 Ajax(Asynchronous JavaScript and XML)[1]は、必要となるデータを非同期でWebサーバから取り寄せつつ、Webブラウザの画面上でなめらかな操作性を提供する形態のJavaScriptプログラムのことである。かつてのブラウザにおいてはこの
2011/11/22 OpenPGPをJavaScriptで実装 ドイツのセキュリティ会社Recurity Labsが、ウェブメールでメッセージをPGP暗号/復号が可能となるよう、OpenPGP (RFC 4880)をJavaScriptで実装したとの事だ[networkworld]。「GPG4Browsers」と呼ばれ、Google Chromeの拡張として機能し、Gmailで利用できるそうだ。Googleにとって暗号化機能は嬉しくない機能なんだろうなぁ。 メールで送信BlogThis!Twitter で共有するFacebook で共有する 投稿者 zubora 投稿時間 15:39 ラベル: Browser, Security, Software 0 コメント: コメントを投稿
昨日の日記の続きで、Ajaxに固有なセキュリティ問題について検討します。今回はJSON等の想定外読み出しによる攻撃です。これら攻撃手法は本来ブラウザ側で対応すべきもので、やむを得ずWebアプリケーション側で対応する上で、まだ定番となる対策がないように思えます。このため、複数の候補を示することで議論のきっかけにしたいと思います。 まず、作りながら基礎から学ぶPHPによるWebアプリケーション入門XAMPP/jQuery/HTML5で作るイマドキのWeから、Ajaxを利用したアプリケーションの概念図を引用します(同書P20の図1-23)。 前回、前々回は、(5)のHTTPレスポンスの前後で、JSON等のデータ作成(エンコード)に起因するevalインジェクションや、(5)のレスポンスを受け取った後のHTMLレンダリングの際のXSSについて説明しました。 しかし、問題はこれだけではありません。正常
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く