08/12/27 09:09:54 reJC3DUH
まぁ、そんなところ。
早漏なの
351:Trackback(774)
08/12/27 23:48:02 aB/65/0Y
>>344
その記事、コアのmedia.php使ってると、任意の書き込み可能なディレクトリにアップできたりとか、
サーバー内探索とかできちゃうのって、書いてないよね。なんでだろ。
そんで、レンサバによっては、任意のphpスクリプトが実行できちゃったりするのも。
あれ、でも、あれだけ自信満々に書いてるってことは、ガセなのかな。
352:Trackback(774)
08/12/27 23:55:52 reJC3DUH
けち付ける
クイズ出す
ちっと荒れる
逃げる
いつものパターン・・・
スルーでよろしく
353:Trackback(774)
08/12/28 12:28:45 WINX8fOR
ImageManager
354:Trackback(774)
08/12/28 12:29:41 WINX8fOR
実際のところ
ImageManager、media-tocu、media.php
の三択なんですか?
そして、ImageManagerはメンテ不在ということ?
355:Trackback(774)
08/12/28 14:08:20 GvW2KQVl
他にもあるよ
356:Trackback(774)
08/12/29 03:00:03 EYieNkwz
他はないよ
357:Trackback(774)
08/12/29 03:04:19 Tc90CmQY
NP_ImprovedMedia
358:Trackback(774)
08/12/29 03:05:47 Tc90CmQY
NP_WindowsMediaVideo
359:Trackback(774)
08/12/29 03:06:23 Tc90CmQY
NP_WYSIWYG_RTE
360:Trackback(774)
08/12/29 03:07:32 Tc90CmQY
ibrowser for nuc
361:Trackback(774)
08/12/29 03:19:08 EK5Igw9q
sp3のMEDIA.php見た。
これ見て、誰も疑問に思わないのかね。
362:Trackback(774)
08/12/29 03:22:18 Tc90CmQY
なんにでも疑問を持ってたらきりがないさ。
とりあえず動けばいいだろ
363:Trackback(774)
08/12/29 10:46:52 l9ptz4h6
サイバーノーガード戦法ってやつですね。
364:Trackback(774)
08/12/29 11:01:16 Tc90CmQY
いつものパターン・・・
スルーでよろしく
365:Trackback(774)
08/12/29 11:40:09 7A3prYoY
サイバークロスカウンターってやつですね。
366:Trackback(774)
08/12/29 11:58:36 EK5Igw9q
>>351
> コアのmedia.php使ってると、任意の書き込み可能なディレクトリにアップできたりとか、
それって、旧版のmedia.phpとMEDIA.phpのセットですよね。
3.31sp3では 「実在する他ユーザーのディレクトリにアップできる」
って仕様に変わったのかもしれませんね。
アナウンスがないのが微妙ですけど。
367:Trackback(774)
08/12/29 12:08:33 Tc90CmQY
自演乙
368:Trackback(774)
08/12/29 20:35:06 l36i87x9
自演かどうかなんて、はっきり言ってどうでもいい。事実なのか釣りなのか、それはどうなの?
sp3以前のMEDIAクラスのisValidColletionは、テキトウな作りで、穴があった。
フォームの値をちょっといじって、collectionに 3/../1 とか(正確には覚えてないけど)
を指定すれば簡単に別のユーザーのフォルダにアップできたのは確認したことがある。
黙ってたわけじゃなくて、内部のことはよくわからなかったってだけだが
で、それは修正されたとみていいんだろうか・・・
369:Trackback(774)
08/12/29 20:35:47 Sl/fX2bz
Nucを多人数で利用するのが危険てことは知ってる上で、
一番使いやすい画像管理はどれ?人気はどれ?
370:Trackback(774)
08/12/29 20:50:11 Tc90CmQY
>>369
そんなにたくさんあるわけじゃないんだから、
こんなとこで聞くより試した方がはやいんじゃね?
基本機能だけでいいかとか、ディレクトリ作りたいとか、目的によって違うわけだし。
ただ、フォーラムでサムネールがどうとかいうコメントをちらほら見かけるから
フォーラムで検索したらいいかもよ?
371:Trackback(774)
08/12/29 21:52:57 EK5Igw9q
他人様のソースにけち付けるつもりはないんだけどね。
結果としてそうなっちゃうんだよな・・・でも、どうみても悪い見本だと思う。
372:Trackback(774)
08/12/30 05:49:18 tSh3iF4g
kwsk
373:Trackback(774)
08/12/30 08:17:13 EcCnu6Zn
URLリンク(svn.sourceforge.jp)
これはやっちゃいけないっていうコードが5か所以上埋め込まれ、
結果として、仕様に反するデグレが2要素。セキュリティリスクは残存。
拡張性を排除し、将来の変更を難しくし、分散されたコードへの依存が増している。
唯一評価できるのは、 || が &&になったところだけ。
いろんなソース見てきたけど、これは近年まれにみる凶相だわ。
初心者でも開発に参加できるのはいいけど、コミッターはコミットする前にチェックしようよ。
374:Trackback(774)
08/12/30 10:22:33 tSh3iF4g
ここでやってもアレだから、ID作ってフォーラムにレスしたらどう?
375:Trackback(774)
08/12/30 10:49:23 lVz7sZPE
>>373
チェックした上でその状況なんだろ。
開発陣をバカにしつつ生ぬるく見守るか、気付いた範囲で意見を書いて送るか。
関わるのは面倒だから前者?
376:Trackback(774)
08/12/30 15:37:43 RfXlKBep
見た。うん。酷いねこれは。
改善してるつもりが改悪になってるときに、それを誰が言いだせるか、
言いだせないのが今の現状ってことだな。おれは遠慮しとく。
みんなダンマリでいいんじゃね?それがサイバーノーガード戦法
377:114 orz
08/12/30 16:48:17 u9Fya7zX
>>373
で、具体的にどういうコードだったら改善になるの?
378:Trackback(774)
08/12/30 17:14:11 A6rgM7OJ
373じゃないんだけど、答えていいかな。
たとえば、sp3のソースで
// allow creating new private directory
if (preg_match('#^[0-9]+[/\\\\]?$#',$collectionName))
return ((int)$member->getID() == (int)$collectionName);
これは、明らかなデグレだから、元のMEDIA.phpの実装を冒頭に持ってくる
// private collections only accept uploads from their owners
if (is_numeric($collectionName))
return ($member->getID() == $collectionName);
他にも、どっかペーストボードでもあれば気づいたところは書ける。
379:Trackback(774)
08/12/30 17:54:24 WqXjWxob
いや、だから、そういう風にソースを晒しちゃうと、問題の本質から離れると思うんだ。
その部分、デグレはデグレだろうけど、そうじゃねぇよって言えば言えてしまう。
脆弱性ってのは、よろしくない方法の積み重ねで発生するもんなんだけど、
そのよろしくない方法も局所的には問題なかったりするわけ。
だから、そういう部分を指摘するのはどうかな。と。
もう少し基礎的なこと(初歩じゃなくてね)を学ばないと。
380:Trackback(774)
08/12/30 18:39:11 A6rgM7OJ
>>379
MEDIA::addMediaObject内にこう書いてある
// add trailing slash (don't add it earlier since it causes mkdir to fail on some systems)
$mediadir .= '/';
つまり、collectionの末尾にはスラッシュが入っていたらinvalidであるべき。
というのが仕様なわけだ。
それが、sp3のソースだと、スラッシュが入っていても、validで返される。
これがデグレじゃなくてなんなんだよ。
381:Trackback(774)
08/12/30 20:27:06 tSh3iF4g
いつものパターン・・・
スルーでよろしく
382:Trackback(774)
08/12/30 20:47:27 dzbv+W2+
>>378
その部分、元に戻せばいいって主張かもしれないけど、それは不十分でしょ。
たとえば、sp3のソースでも元ソースでも、
メディアディレクトリに無限にフォルダを作成出来てしまう。
もう少しマシな例を書くなら
if (!is_string($collectionName)) return false;
// allow creating new private directory
if (is_numeric($collectionName))
return ( $collectionName === (string) $member->getID());
なんで、これがマシかっていうのを理解しないと、結局同じことを何度でも繰り返す。
穴があるなら塞げばいいっていう態度じゃ進歩しない。
その先の、ディレクトリトラバーサルの対応コードにも同じことが言える。
383:Trackback(774)
08/12/31 06:37:58 wZeU8yq5
>>382
確かにSP3のコードより、何がしたいのか分かりやすい。
まぁ自分が正規表現ちゃんと理解してないだけなんだが...
ところで、このコードがマシな理由としては他にどんな点がある?
速度とか?=== だからとか?
そのあたりも教えてほしいな
384:Trackback(774)
08/12/31 07:59:04 +Q9kCtCQ
>>383
> 確かにSP3のコードより、何がしたいのか分かりやすい。
これって、OSSでソースを書くときにとても重要なこと。
で、なんでそれが重要かというと、
・ソースが現実仕様の実態に沿って書かれていれば正確な動作をしやすい
・他人が読んでチェックしやすい
・新参の開発者に気に入ってもらえて、開発者が増える
その意味では、昔のNucleusはよかった。
最近のNucleusはだめ。
正規表現を使うのは、正規表現でないとわかりにくくなってしまう時だけにすべき。
俺も正規表現苦手だから、\の羅列を見てしばらく考えたからね。
385:Trackback(774)
08/12/31 08:32:27 +Q9kCtCQ
>>383
あ、聞きたいのはそこじゃなかったな。スマソ
現実的な効用というと、sp3のソースや元ソースでの問題点に言及しなきゃ
いかんわけだけど、これを書くと間違いなく、ブログ数ページ分になる。
そのぐらいかけないと、理解してもらうのは難しいんだけど。
俺は別に理解してもらいたいわけじゃないから、はしょって書くとする。
とはいえ、2chでは3行以上書いても読まれないらしいけどw
sp3:
return ((int)$member->getID() == (int)$collectionName);
//整数に変換して比較
オリジナル
return ($member->getID() == $collectionName);
//緩やかな比較
俺のソース
return ( $collectionName === (string) $member->getID());
//メンバーIDを表現する文字列と完全一致するか比較
比較するときは、基本的に、比較の中心側はいじっちゃだめ。
( 以前に騒ぎになったときも、intvalしてから比較してはまったのを
記憶してないか、教訓にできなかったってことだけれども。)
で、そういう基礎的なことを破ってしまうと問題の種が入る。
比較するときにキャストするってことは、キャストでこぼれおちる
「バリ」が「フィルタ」されてきれいな値で比較されてしまう。
これでは、バリデーターとして機能しないわけ。
何が言いたいかというと、たとえば、(int) "1.php" になる。
バリデータの中でそんなことをやってるものがあったら、そりゃ初心者コード
だわな。
ってことで、>>380の言うように、スラッシュを許容してしまったり、複数のフォルダを
育成できてしまったりといった、バグを埋め込んでしまったというのがsp3。
386:Trackback(774)
08/12/31 08:46:33 +Q9kCtCQ
3連投スマソ
でも、ムキになってsp3のソースを生かしたいという奴も出てくるかもね。
>>380の言ってるデグレを生まず、目先の問題を解消するだけなら
if (preg_match('#^[1-9][0-9]+$#',$collectionName))
という風に書き換えればいいって言うかもしれない。
でも、これがまずい理由はある。些細だけれども、他の仕様と絡めた作法の問題。
だから、↑になってる分には誰も文句は言わないだろう。失笑はあるかもしれんが。
387:Trackback(774)
08/12/31 08:49:13 +Q9kCtCQ
oops、正規表現ミスった。+じゃなくて?ね
388:Trackback(774)
08/12/31 09:58:01 wZeU8yq5
>>385
丁寧な説明ありがとー。よくわかった。
他の部分の問題点についても聞きたいんだけど、いい加減スレチ?
389:Trackback(774)
08/12/31 13:14:14 +Q9kCtCQ
スレチ?かどうか知らんが、>>380が指摘したデグレはなぜ起きたか。
それがわかれば、他の部分の問題点? そんなものは取るに足りない。
早い話、全然ダメ。
何がどうだめか? そりゃ長くなるよw
2、3、例を出しとくと、realpath通したら仕様が制約される。
バリデータの中で引数に代入すんなよ、とか。
てかそもそもディレクトリトラバーサル対策ってそれ?みたいな。
でも、理由を知らなくていいなら、正しいコードは簡単。
getCollectionListで取得する配列のキーと照合すればいい。
もし、getCollectionListで取得できるキーの中にinvalidになるべきもの
が含まれるなら、それはgetCollectionListのバグもしくは仕様の不備。
1対1で照合できるべき。
390:Trackback(774)
08/12/31 16:11:55 K9+ABug9
>>366で
> 3.31sp3では 「実在する他ユーザーのディレクトリにアップできる」
> って仕様に変わったのかもしれませんね。
これってまさか、仕様じゃないよね?皮肉だよね??
391:Trackback(774)
08/12/31 16:38:51 TiikAIsz
> てかそもそもディレクトリトラバーサル対策ってそれ?みたいな。
それはちょっと言い過ぎ
「ディレクトリトラバーサル php」 で検索するとそんな感じのコードが出てくるし。
がんばってコピペした感じが微笑ましいよ
392:Trackback(774)
08/12/31 20:00:12 +Q9kCtCQ
どうも、勘違いされてノイズが増えるのもツマランな。
俺は聞かれれば答えはするし、ダメなものはダメという。
しかし、何かの意図があるわけじゃない。
どんなプログラムを配布しても自由なんで、sp3、大いに結構なんではないかと。
393:114 orz
09/01/01 02:22:16 RgKMu6pC
>>389
realpath 通したら仕様が制約される、ってのはなぜ?
Nuc ってもともと collectionName って階層構造を持たない
フォルダって仕様なんだっけ?
もしそうならわざわざ realpath じゃなくて、basename 使って
チェックすればいいのかな?
う~ん、それだと結局仕様を限定することになるから一緒?
それとも strstr で .. が含まれてたらエラーにしたらいいのか?
まぁ確かにこの場合 getColllectionList 云々方式が簡単そうだ。
394:Trackback(774)
09/01/01 09:18:41 30ZGKnNG
> realpath 通したら仕様が制約される、ってのはなぜ?
理由1:symlinkを展開してしまう。
URLリンク(jp.php.net)
サーバ管理者にとってsymlinkを使って管理しやすくするというのは最も手軽な手段の一つ
symlinkで外部ディレクトリを利用できるようにするという管理方法が制限されてしまう。
理由2:不正な文字列でもinvalidにならない
collectionはシステムから提供される選択肢から選ばれるものであって
ユーザーの任意入力による自由なパラメーターではない。
「3/../3」は不正な文字列であってinvalidでなければならないが、
realpathを通すとvalidになる。
"対策コード"っていうと攻撃できなきゃいいじゃんって思うわけだよね。
だから、場当たり的なコードになって読みにくくなる。
正しく実装すれば防げるものであれば正しく実装すりゃいいじゃんっと思う。
395:Trackback(774)
09/01/01 10:31:38 9oUd2lik
URLリンク(japan.nucleuscms.org)
こんなこと書いてる暇あったら、とりあえずマニュアル読めとw
URLリンク(www.php.net)
URLリンク(www.php.net)
URLリンク(www.php.net)
396:Trackback(774)
09/01/01 11:27:43 9oUd2lik
NP_Mediatocのv1.1
相変わらず、他人のメディアを削除とかリネームとか可能なんだけど。
俺がちら見してわかるのに、作者以外はチェックしないってことなの?
てか、テストとか書かないのかな。
397:Trackback(774)
09/01/01 17:42:31 30ZGKnNG
それを報告しない理由はなに?(報告済みならゴメ)
俺の場合は、設計レベルの問題を解消しなきゃ意味ないから
細かい修正点をあげつらうのは自分に反するからなんだけど。
# まぁ、釣られれば書いちゃうんだけどね
398:Trackback(774)
09/01/02 05:36:28 jsFDLl+G
>>396
NP_Mediatocuね。
おれが見たところだと、
コアと同じようにメディアディレクトリ直下にゴミを量産できるってのはあるにしても、
そのほかは、不正な動きはできないような気がするけどどう?
どんなパラメーターで問題が生じるの?
実際にインスコしてみたら、うちの環境だとディレクトリ作れないから
正常動作してるとも言えないんだけど。
環境の問題かどうかチェックしてるところ。
399:Trackback(774)
09/01/02 09:21:16 zngzDZ5k
プッ
てか、コアでもNP_Mediatocでも、アップロード権限さえあれば全権とれるしww
400:Trackback(774)
09/01/02 10:18:43 jsFDLl+G
正月早々、草ww
> アップロード権限さえあれば全権とれるし
うちのサーバなら無理だと思うよ。
media.phpはCGIでSUEXEC実行させてユーザー毎に権限分けてるし
メディアディレクトリからのスクリプト実行ができないように設定してるから。
Nucleusで多人数用サービスを利用しているところでは、
この方法でセッティングしてあるところがいくつかある。
頼まれて俺がやっただけでも10件以上はやってる。
教えてやっただけのもあるし。
symlink使ってるから、今度のアップデートを使わないことを祈るよ。
継続サポート契約はしてないところがあるからね。
401:Trackback(774)
09/01/02 13:13:21 tg5q4j1S
何が起こっているのかよくわからない俺ガイル
402:Trackback(774)
09/01/02 13:16:04 7Q2xdVzj
>>399
要するにスクリプト実行できるってことだよね
>>400みたいにサーバー設定で回避するのが基本だけどへたれレンサバの場合は
自分でスクリプト改造するしかないかな。ファイル名チェックに制約を加えればいいはず
あ、でもディレクトリを悪用されるとだめか
鯖管なら基礎知識なんだけど、ほんとメディアはめんどい
403:Trackback(774)
09/01/02 13:52:16 gD1cO9me
あけおめ。
俺がNucleusを使い始めてから4年か・・・
当時はそこそにバージョンアップされてた(もう何回もアップデートした記憶がある)し、プラグインも豊富だったが、
今ではバージョンアップもずいぶんと前からされてないし、かつて人気を集めていたプラグインはいつのまにかWebの藻くずとして消え去り、時代もWordPress一色。
あぁ、なんでNucleusなんて選んじまったんだろう。
404:Trackback(774)
09/01/02 15:38:16 Nqups6eV
nucleusってそんな使いにくいか?
まぁ何をするかによるけど、ブログとサイトしか作ってない俺は不便してない。
405:Trackback(774)
09/01/02 15:39:43 k0uzUYjl
>>403
Nucを見限ったのだったら、MT形式で書き出してWordPressで
インポートすればいいじゃん。Drupalに移行したかったら、
WordPressでさらにナントカ固有形式で書き出し、
WpDrupalマイグレーションツールを使えばいい。
データが命なのであって、それを表現するCMSは乗り換え可能。
WordPressもDrupalも永続はせず、いずれまた他のCMSが台頭し
捨てられる運命にある。だから拘ることなんかないよ。
406:Trackback(774)
09/01/02 16:34:29 RcP6hUSS
MT形式でエクスポートしたいのはやまやまなんだけど、
薦められるがままに使ったプラグインで保存されてる
関連データが抽出できないんだよね。
それで塩漬けでいいやってことに。
つうわけで、アップグレードしないNucサイトが一つ。
407:Trackback(774)
09/01/02 16:52:09 3hk4V8ih
廃坑後の街にただよう亡霊 -セキュ厨- を退治、浄化せんとする死神開発者たち
初戦はバグ量産の末にあえなく敗退。今後を占う第2戦の行方はいかに。
408:Trackback(774)
09/01/02 19:15:44 C9ejSnHj
>>406
同意。
結局は、一番更新頻度が低いプラグインに引っ張られるわけで・・・。
更新頻度の高いor高そうな人気プラグインを使っておくのが
長い目でみてベターだと思ってるんだけど、みんなはどう?その場その場?
409:Trackback(774)
09/01/02 19:27:16 SbOfsPLW
更新頻度も人気も当てにはならないという歴史がある。
ワンマンで作られたものより、複数の人が手を入れてるものがいいと思う。
410:Trackback(774)
09/01/02 21:30:31 jsFDLl+G
亡霊かよ