CSRFの定義について

CSRFで強制ログインさせる手法のその定義の話し 元ネタ: CSRFで強制ログインさせるというアイデア http://d.hatena.ne.jp/Hamachiya2/20120522/csrf
2
徳丸 浩 @ockeghem

「ログイン機能のCSRF」が話題だけど、そもそもCSRFはログイン中の利用者を狙うものだと定義されるので、まだログインしていない状態での攻撃をCSRFというのはおかしい。でも、なんと呼ぶかという代案はない。(一方でCSRFと呼んで良い理屈も考え中)

2012-05-23 10:56:10
mala @bulkneets

@ockeghem そんな定義ありましたっけ?ログイン不要の掲示板への書き込みでもCSRFって使ってると思いますけど

2012-05-23 11:06:57
徳丸 浩 @ockeghem

少なくとも、安全なウェブサイトの作り方の定義はログインありが前提ですね RT @bulkneets: @ockeghem そんな定義ありましたっけ?ログイン不要の掲示板への書き込みでもCSRFって使ってると思いますけど

2012-05-23 11:10:55
水無月ばけら @bakera

@ockeghem "cross site request forgery" という言葉には「ログイン中」というニュアンスはあまりないようにも思いますが、どうなんでしょう。

2012-05-23 11:12:40
Yosuke HASEGAWA @hasegawayosuke

CWE-352、べつにログイン中かどうか明示してない http://t.co/f2NsWqZ7

2012-05-23 11:14:09
mala @bulkneets

@ockeghem 安全なウェブサイトの作り方の定義の方が間違ってると思いますね。ログイン後の操作が勝手に行われたほうが一般的に脅威が大きいというだけでCSRF自体にそんな意味ありませんでしたよね

2012-05-23 11:17:18
徳丸 浩 @ockeghem

@bulkneets CSRFの初出および専門家の議論からそう定義しているのだと推測しています。初出(のアーカイブ)はおそらくこれ http://t.co/bhlyDoXO

2012-05-23 11:21:34
徳丸 浩 @ockeghem

@bakera CSRFがSession Ridingの別名として位置づけられているのだと思います

2012-05-23 11:23:00
Yosuke HASEGAWA @hasegawayosuke

「CSRFによる強制ログインを避けるために常用する重要なサイトには常時ログイン状態にしておき、XSSを避けるために常用する重要なサイトではまめにログアウトする。」

2012-05-23 11:25:19
mala @bulkneets

単なる例であんまり限定する意図はないように見えるけどな

2012-05-23 11:28:37
Yosuke HASEGAWA @hasegawayosuke

ログインしてログアウトしてパスワードかえての繰り返しで1日終わりそう。

2012-05-23 11:28:56
mala @bulkneets

訪問するたびに書き込みが増えちゃう掲示板のウェッブアーカイブを発掘している(1999年)

2012-05-23 11:38:34
mala @bulkneets

CSRFとかXSSとか名前が付く前からあるわけだし、掲示板荒らしの歴史なわけだから、言葉を定義することによって初出としてしまうのは歴史が踏みにじられている!!

2012-05-23 11:50:12
Yosuke HASEGAWA @hasegawayosuke

CSRFって影響の大きさのわりに、技術的に見どころないしケチくさいしで、仕事で脆弱性検査やってる場合は別としてあんまりエンジニアは話題にしない印象。

2012-05-23 12:32:34
徳丸 浩 @ockeghem

CSRFの前提として認証があるかどうかをざっと調べましたが、初期の論文やメーリングリストでは認証ありが前提のようですね。英語版Wikipedia、セキュアプログラミング講座も同じ。CWE-352は微妙…これはこまったものです http://t.co/mVZT10WD

2012-05-23 19:02:39
徳丸 浩 @ockeghem

用語もある程度揺れがあり、時代と共に変化する場合はあると思いますが、世界中のセキュリティコミュニティでCSRFをどう使っているかが問題になると思います。この場合、CWEやOWASPが重要な役割を期待されるわけですが…

2012-05-23 19:05:14
徳丸 浩 @ockeghem

CWE-352(CSRF)の説明が微妙と書きましたが、CSRFの別名がSession Ridingとあることは、被害者のセッションを前提としていることの傍証にはなると思います。

2012-05-23 19:06:48
ゆーごく @uu59

@ockeghem CSRF=ログイン済のユーザーをターゲットにした攻撃、としてしまうと、ログインの有無を前提としないアタックをどう呼べばいいのかという点で不便になりそうですし、個人的にはクロスサイトなリクエストをフォージェリしていればすべてCSRFかなという認識です

2012-05-23 20:08:14
ゆーごく @uu59

CSRFの定義がドメインAの訪問者がドメインBに対して思わぬリクエストを発行してしまう、だけだとAにFacebookウィジェットがあるだけでCSRFになってしまうので運用しづらい用語になるな。

2012-05-23 20:16:51
ゆーごく @uu59

しかし定義というより名称であり、学術的な厳密さよりあるパターンを便宜的に総称するためにつけられたものだと思うので、これはXXかそうでないかというのはあまり実のある話にはならなさそう。でもゆるすぎるとそれはそれで弊害もあるか。

2012-05-23 20:20:15
徳丸 浩 @ockeghem

@uu59 世界的に共通に使われる言葉ですので、基本的な前提は統一することが望ましいというのが私の立場です。

2012-05-23 20:23:26
ゆーごく @uu59

@ockeghem それには同意します。しかし元々の「強制的にログインさせられる」のを防ぐにはCSRF対策と同様の対策が必要であることから、防衛側から見ればどちらもCSRFと呼称するのはそれほど変な話でもないかなと思うのです。

2012-05-23 20:29:10
ゆーごく @uu59

DNS浸透とかと同じで、既に広く使われてる用語や言い回しを再定義したり整理しても、その言い回しをしてる人がどっちを念頭に置いてるのかはっきりしなければあまり意味がないのでどうせなら新しく用語を定義したほうがいいと思っています

2012-05-23 20:40:53
ゆーごく @uu59

「クラウド」もそれのどこがクラウドやねんみたいなツッコミが追いつかず結局ぐだぐだな感じの意味で定着してしまったし、たぶん人類は一度広まってしまった単語の意味を訂正できないと思ってる

2012-05-23 20:46:56