You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
✎ 基礎知識編 CSRF とは何か? CSRF (Cross-Site Request Forgeries) を意訳すると 「サイトを跨ぐ偽造リクエスト送信」 です。 簡単に言うと,罠サイトを踏んだ結果,自分が無関係な別のサイト上で勝手にアクションをさせられる攻撃です。具体的には,ネットサーフィンをしているうちに知らない間に自分のIPアドレスから掲示板に犯罪予告が書かれていた,といった被害を受けます。 この攻撃を防ぐ責任は「無関係な別のサイト(具体例では掲示板)」側にあります。Web サイト作成者には,利用者が意図しない操作を勝手に実行されないように,利用者を守る責任があります。 また上図からも分かる通り,この攻撃の最大の特徴はアカウントがハッキングされたというわけではないということです。ログイン状態の利用者のWebブラウザを利用して攻撃が行われている,というのが重要です。 オリジンとは何
サマリ PHPサーバーサイドプログラミングパーフェクトマスターには、PHP入門書としては珍しくクロスサイト・リクエストフォージェリ(CSRF)対策についての説明があるが、その方法には問題がある。アルゴリズムとして問題があることに加えて、実装上の問題があり、そのままコピペして用いると脆弱性となる。 はじめに 古庄親方の以下のツイートを見て驚きました。 CSRF用のトークンの作成 $token = password_hash(mt_rand(), PASSWORD_DEFAULT); ってのを書籍で見た………もンのすンげぇなぁ(苦笑 書籍名でググって調べる……評判が悪いので、まぁ、納得っちゃぁ納得。 — がる (@gallu) July 17, 2019 CSRFトークンの生成に、password_hash関数を使うですと? 親方に書籍名を教えていただき、購入したのが、この記事で紹介する「PH
この記事は「問題:間違ったCSRF対策~中級編~」の続編です。当初上級編を意図しておりましたが、後述する事情により、級の指定は外しました。 はじめに 問題は、OWASPから出ているCross-Site Request Forgery (CSRF) Prevention Cheat Sheet(JPCERT/CCによる邦訳「クロスサイトリクエストフォージェリ (CSRF) の防止策に関するチートシート」)にツッコミを入れてもらおうというものです。具体的には、このチートシート(カンニングペーパーの意)のDouble Submit Cookie(Cookie の二重送信)の箇所です。以下、JPCERT/CC訳で該当箇所を引用します。 Cookie の二重送信 Cookie の二重送信は、Cookie およびリクエストパラメーターの双方でランダムな値を送信し、サーバー側で Cookie の値とリク
yapcjapan2016_lt.md 5分でわかる Perl and web security ma.la CSRFとかXSSとか CSRF: フレームワークの機能使って下さい XSS: Xslateとか自動エスケープして下さい、jsの動的生成はするな 終わり 本題 YAPCなのでPerl固有の問題について解説します。 Webアプリケーションの一般的な流れ パラメータ受け取る(フォームとかJSONとか) 何らかの処理をする レスポンスを返す(HTMLとかJSONとか) フォームやJSONを安全に受け取るには paramはscalarで受け取りましょう Why $params = { name => $r->param("name"), value => $r->param("value"), } これをやると ?name=hoge&name=fuga で壊せる。 list context
2015年12月に私が発見した VALUE-DOMAIN での CSRF 脆弱性について、その脆弱性の報告と修正までの経緯を記しておきます。 きっかけ アカウント削除ページの作り アカウント削除ページの問題点 VALUE-DOMAIN への報告 CSRF 攻撃によるアカウント乗っ取りの問題 IPA への届出 余談:IPA への届出の仕方について IPA へ届出した後の状況 VALUE-DOMAIN ユーザの方へ きっかけ 数年前に VALUE-DOMAIN を利用していましたが最近は使っていないのでアカウントを削除しようとしたところ、アカウント削除操作を行うページの作りが「不自然である」ことに気付きました。更に調べたところ CSRF 攻撃によってアカウント乗っ取りが可能な状況であることが分かりました。 アカウント乗っ取りが可能な CSRF 脆弱性は2015年12月22日にIPAに報告し、2
LINEにて、「line://msg/text/」で始まるURLが拡散されています。このURLは、「指定された文章を送信するためのURL」で、「LINEで送る」ボタンの中身として利用されているURLなのですが、このURLから送信に至るまでの画面遷移で、送信内容の確認画面が無い仕様のため、自分が何を送信するのかを確認できないまま送信してしまい、意図と反した投稿を行ってしまう危険性があります。 何を送信するのかが表示されないまま先に進む画面の途中で止める判断ができれば問題にはならないのですが、LINEのユーザー層と、実際送信してしまった人が多数見つかること、そして、「次こそ送信内容の確認画面が出るだろう」と考えて先に進む人(←以前の仕様では表示された)、などなどを考慮すると、今後悪用された場合に大きな危険を招きそうな仕様であると感じました。 今回ユーザーが意図せず送信してしまうのは「ずっと前か
過去数カ月、ソーシャルネットワークサイトへと誘導しようとするさまざまなスパム攻撃が確認されています。これらの攻撃のほとんどは、何らかのソーシャルエンジニアリング手法の特徴を備えていますが、ときとして、画期的なソーシャルエンジニアリング手法も登場しています。ここでは、そうした手法のなかでも、Facebook で特に重要な CSRF 対策トークンを盗み出そうとしてユーザーを欺く手口を紹介します。 クロスサイトリクエストフォージェリ攻撃 クロスサイトリクエストフォージェリ(CSRF)とは、ある Web サイトで認証済みのセッションを再利用して、ユーザーに気づかれないまま、または同意を得ずにその Web サイトで悪質な処理を実行する攻撃です。たとえば、ユーザーが自分のオンラインバンキングのサイトにログインしているとします。この Web サイトに CSRF の脆弱性があると、別の悪質な Web サイ
図のように、大垣本のCSRF対策方式(以下、「大垣方式」と表記)では、トークン(同書ではフォームIDと表記)をランダムな鍵として生成(②)し、それをフォームの隠しフィールドとDBに保存します(③、④)。ユーザーがフォームをサブミット(⑤)すると、送信されてきたトークンがDB上に存在するか確認(⑥)し、あればトークンを削除(⑦)して、サーバー上の処理に進みます。⑥でトークンがDBにない場合は、エラーとして処理には進みません。 一般的なCSRF対策手法との違い 大垣方式が一般的なCSRF対策と異なる点は以下の2点です。 フォームの2重投稿防止機能を兼ねている トークンがセッション変数ではなくDBに保存される トークンの有効範囲は? トークンがDBに保存される場合、トークンの有効範囲が気になるところです。大垣本および第二版のソースを見ると、トークンを保存するテーブルの定義は以下の通りです。 CR
本資料は、web アプリケーションにおける脆弱性のひとつ、CSRF (クロスサイトリクエ ストフォージェリ) の仕組みとその対策に関する説明資料です。 また、CSRF 対策のためのライブラリのいくつかについて、その概要と適用例も紹介しています。 Webアプリケーションを作成する開発者の方々が、CSRF 脆弱性に対する理解を深め、よりセキュアなWebアプリケーションの開発の一助となれば幸いです。 自習用の資料や勉強会での資料としてご活用ください。 - 改訂版+1: 図版や誤記の修正 (2015年10月20日) ※ コメントくださった皆様ありがとうございます! - 改訂版: JPCERT/CC Web サイトにて公開 (2015年10月6日) - 初版: OSC2015Hokkaido 講演資料 (2015年6月13日)
SecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのか
CSRF 脆弱性対策には攻撃者の知り得ない秘密情報をリクエストに対して要求すればよく、そのような用途としてはセッション ID がお手軽でいいよねという時代があったかと思います。 いや、もちろん、 CSRF 対策の文脈だけで言えば今も昔も間違いというわけではありません。セッション ID が秘密情報であるのは Web アプリケーションにおいて当然の前提ですので、 CSRF 対策としてリクエストに求めるべきパラメータとしての条件はたしかに満たしています。 たとえば 『安全なウェブサイトの作り方』 改訂第6版では以下のように解説されています。 6-(i)-a. (中略) その「hidden パラメータ」に秘密情報が挿入されるよう、前のページを自動生成して、実行ページではその値が正しい場合のみ処理を実行する。 (中略) この秘密情報は、セッション管理に使用しているセッション ID を用いる方法の他、
そしてその手段としては iframeとjavascriptによってGETやPOSTをユーザーのクリックなしにエミュレートするcssで偽装したiframeによって、ユーザーが意図しないクリックを行うよう誘導するscriptタグによってJSONや部分的にjavascriptとして解釈可能なページを(攻撃者のサイトのページ内に)読み込むflashなどを使ってヘッダをエミュレートしたリクエストをブラウザ経由で行うがある。 他の手法はほとんどブラウザ側のsameoriginポリシー(ほかドメインに対するjavascriptでのajax要求は禁止される)で排除されるはずである。 これら全てを回避する方法として 何らかの処理を起動するような、ユーザのクリック(=意思あるいは同意)を確認すべき全ての画面遷移とその前後で(ログインパスワード入力フォームを含む)で、ワンタイムトークンを発行・検証する。ワンタイ
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
XMLHttpRequestを使ったCSRF対策 - 葉っぱ日記を書いていて思ったけど、いまいちXHRを使ったCSRF(というかクロスオリジン通信)について理解されていないような感じだったので、ちょっと書いておきます。とりあえず日本語のリソース的には、HTTP access control | MDN が詳しくて、それを読めばだいたい事足りるんで、あとはCSRFに関連しそうな話題だけ。 Q. そもそも「クロスオリジン」って何? スキーム、ホスト、ポートの3つの組み合わせが一致している場合を同一オリジン(same-origin)、いずれか一つでもことなる場合をクロスオリジン(cross-origin)と言います。つまり、XHRでドメインを超えて通信している場合は典型的なクロスオリジン通信となります。 Q. え? XMLHttpReuest って他のドメインにリクエストを発行できないんじゃ い
http://d.hatena.ne.jp/hasegawayosuke/20130302/p1 について サーバ側でセッション管理せずに済むというメリットはでかくていいですね。 ログインの有無も関係なくなるのでカクイイです。 これからの時代はこういうのが主流になるべきという気がします。 デメリットですが ・JavaScript必須(hsgw先生が書いているとおり) ・画面遷移に影響が出る。普通のPOSTと違うので、アプリの挙動に影響がある ・古いブラウザでは動かない という感じでしょうか。 追記: var s = encodeURIComponent( document.getElementById(“mail”).value ) + “&” + encodeURIComponent( document.getElementById(“msg”).value ); みたいに自分でフォーム
合わせて読んでください:Flashと特定ブラウザの組み合わせでcross originでカスタムヘッダ付与が出来てしまう問題が未だに直っていない話 (2014-02/07) XMLHttpRequestを使うことで、Cookieやリファラ、hidden内のトークンを使用せずにシンプルにCSRF対策が行える。POSTするJavaScriptは以下の通り。(2013/03/04:コード一部修正) function post(){ var s = "mail=" + encodeURIComponent( document.getElementById("mail").value ) + "&msg=" + encodeURIComponent( document.getElementById("msg").value ); var xhr = new XMLHttpRequest(); xhr
日経Linux 2013年1月号に「“誤認逮捕”を防ぐWebセキュリティ強化術」を書き、それが今週4回連載で、ITproに転載されました。この中で、クロスサイトリクエストフォージェリ(CSRF)対策について説明しましたが、クッキーモンスターバグ(Cookie Monster Bug)がある場合に対策が回避されることに気がつきました。 それでは、どのような対策が望ましいかを考えてみると、中々難しい問題です。以下、その内容について検討します。 解決すべき課題の整理 記事の趣旨は、昨年無実の市民のパソコンからCSRFによる犯行予告が横浜市のサイトに書き込まれたことを受けて、サイト側でCSRF対策をして、なりすまし書き込みができないようにしようというものです。なりすましの犯行予告には、CSRFのほか、マルウェアを用いる方法、CSRF以外のWebサイトへの攻撃手法もあるので、CSRF対策だけで十分と
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く