PEAK XOOPS - 誤った抽象化の代償 in englishin japanese

Archive | RSS |
XOOPS
XOOPS : 誤った抽象化の代償
Poster : GIJOE on 2006-06-03 04:38:17 (9628 reads)

in englishin japanese
MyTextSanitizerクラスに、addSlashes()というメソッドがあります。この名前を見た瞬間、どんなものだと想像しますか?

MyTextSanitizer自体、フィルター処理を司るクラスであることから、基本的には addslashes() 関数を呼び出すラッパーメソッドだ、と考えるのが自然でしょう。

しかしそれは誤りです。magic_quotes_gpc=offなら、addslashes()をかけるけど、magic_quotes_gpc=onなら何も処理をしない、というメソッドなのです。つまり、まともに処理された変数をここにかけて、SQL用のリテラルエスケープを完了した、と思っていると、magic_quotes_gpc=on の時にSQL Injectionになってしまいます。(せめて、addSlashesGPC()というメソッド名であったら、stripSlashesGPC()との対応で、そういう仕様だと気がつくこともできたのでしょうが)

これは極めてまずいデザインだといわざるを得ません。magic_quotes_gpc=on時の処理などというものは、GPCリクエスト処理の最初に済ませておくべきものでしょう。宙ぶらりんな変数のまま取り扱わせておいて、どこかでまとめて処理される、なんてのが、オブジェクト指向であり抽象化である、とでも思っていたのでしょうか?

実はXoopsObjectもこのようなデザインです。だからこそ、XoopsObjectは「使うべきではない」と一貫して主張し続けています。なぜ、XoopsCubeにおいて、こんな基本デザインが腐っているものを無理矢理使い続けるのか、理解に苦しみます。(※訂正 XoopsCubeでのXoopsObjectは、同じ名前でありながら、その腐った仕様は何一つ受け継いでいないとのことです)

誤った抽象化は、脆弱性を生み出すだけです。

Printer friendly page Send this story to a friend

Comments list

onokazu  Posted on 2006/6/9 12:38
Quote:
つまり最初から、コアの仕様についての話です。それがなぜ、「開発メーリングリスト」などという漠然としたものに置き換えられなければならないのでしょうか?

参加を許可したメーリングリストの方を形骸化しておいて、「締め出したというのはどういうことでしょうかね」とは良く言えたものです。

コアチームの一員のみが参加可能な「xoopscube-core」はあくまでもコアチームによる
運営上の問題の討議または相互の連絡のためのMLです。一部、公表が難しい話題で開発
関連の内容が流れることはありますが、それは一部に過ぎません。最初の頃はどっちに
投稿してよいかわからず、「これはdevネタ」だといって、開発関連の話題が多数投稿
されることもありましたが、現在ではそのようなことはほとんどないかと思います。

なので、開発関連の話題はGIJOEさんも参加されている「xoopscube-dev」以上の
ことは僕自身も分からないですよ。

Quote:
それでは、あらためて削除要請をお願いします。
そしてなにより、本家の該当スレッドにおいて適切なレスポンスをつけていただけますよう、お願い申し上げます。

分かりました。それでは削除を行っておきます。xoops.orgでのレスもやっておきます。
xoops.org側からするとCubeの話が再燃するのはいい迷惑だと思うのですが。
GIJOE  Posted on 2006/6/9 5:44
Quote:
締め出したというのはどういうことでしょうかね。
コアのMLはコアチーム参加者専用のML、開発メーリングリストは
コアチームおよびその他開発者が参加できるMLなので、コアチーム入り
を拒否されたGIJOEさんがコアチームMLに入らないのは当然だと思う
のですが。。開発メーリングリストはGIJOEさんもまだ参加されている
のではないですか?
onokazuさんって、本当に息をするように嘘をつく人なんですね

部外者にも判るように経緯を説明しておきましょうか。

JM2さんを主催とするzxは、数多くのWebアプリケーション技術者を集めたセキュリティなどを話し合っていたクローズドなメーリングリストです。最初は、JM2さん・minahitoさん・ELFさんといった、本当に技術のある人がメインだったのですが、終盤にはonokazuさんも加わりました。

そこで、2005/3/21にonokazuを中心としたフォークの話が出て、参加者が募集されたのです。参加表明をしたのは、minahitoさん、nobunobuさん、Ryujiさんの3人。私は、「JM2さん以外のチームリーダーは考えられない」とあらかじめ表明していたこともあり、特に返事はしませんでした。

その後、xoops-devメーリングリストが上の4人で動きだしたのですが、その一部がのぶのぶさんによって、zxにもたらされました(2005/3/27)。

それはトークンの話題であり、モジュール開発者にとっては、きわめて大事な情報でした。それを見て、私はこのようなメールを書いたのです。

Quote:
コアの仕様変遷は、モジュール開発者にとっても重要な事項です。私はコア
には決して手をだしませんが(もしやるならすべて私一人でやる)、その仕
様について知ることや、何点かの口出しくらいはさせていただきたいと思っ
ています。

というわけで、commit権とは別に、ML購読権をモジュール開発者に開放して
いただけませんでしょうか?

つまり最初から、コアの仕様についての話です。それがなぜ、「開発メーリングリスト」などという漠然としたものに置き換えられなければならないのでしょうか?

参加を許可したメーリングリストの方を形骸化しておいて、「締め出したというのはどういうことでしょうかね」とは良く言えたものです。

それでも、xoops-dev(後にxoopscube-dev)には、チラホラとコアの仕様は流れてきます。それは、minahitoさんやnobunobuさんによるものであり、onokazuさんじゃありません。

例えば、2.0.14-JPでSnoopyバージョンが勝手に置き換えられる、なんて何一つアナウンスを受けていませんよ。Snoopyベースのモジュールを作っているデベロッパーには、極めて重要な情報であるのにも関わらず、です。


Quote:
このニュースの掲載後、GIJOEさんより削除要請も何もありませんでしたが、
今からでも削除した方が良いですか?
それでは、あらためて削除要請をお願いします。
そしてなにより、本家の該当スレッドにおいて適切なレスポンスをつけていただけますよう、お願い申し上げます。
http://www.xoops.org/modules/newbb/viewtopic.php?topic_id=35221&forum=8&post_id=152915#fo...


そして、xoops.org の権利について、Skalpaさんにも連絡しましたので、彼から連絡があると思います。

彼からオファーがあった時点で、すみやかにxoops.orgの権利譲渡に応じていただけますよう、重ねてお願い申し上げます。
onokazu  Posted on 2006/6/8 9:22 | Last modified
Quote:
それにしても「狭い範囲」には笑ってしまいました。
http://xoopscube.jp/modules/news/article.php?storyid=292
において、「開発メーリングリストに参加してもらっています」として私の名前を載せておきながら、コア開発MLから締め出すんですから。そりゃあ、Cubeのコア開発MLは読めないですよね。

締め出したというのはどういうことでしょうかね。
コアのMLはコアチーム参加者専用のML、開発メーリングリストは
コアチームおよびその他開発者が参加できるMLなので、コアチーム入り
を拒否されたGIJOEさんがコアチームMLに入らないのは当然だと思う
のですが。。開発メーリングリストはGIJOEさんもまだ参加されている
のではないですか?

Quote:
ところで、このニュースが翻訳されて本家に載ったということはご存じですか?
というか、最初からそうなることがわかっていたんですよね。私の名前を利用するのが狙いですから。そうじゃなきゃ、単なるメーリングリストの購読者の名前なんて載せないでしょ。

おかげで、私はCube側の人間と認識されてしまいましたよ。本当に迷惑な話です。「onokazuさんに利用された」という怒りは今でも私の中でくすぶってます

このように思われるのは残念ですね。少なくとも僕は利用しようと
思ったことはなく、ある意味敬意を表して書いたつもりだったのですが。名前が載っていない!
ということでまた陰で色々言われるのが嫌であったというのもなかったこともありませんが。
このニュースの掲載後、GIJOEさんより削除要請も何もありませんでしたが、
今からでも削除した方が良いですか?
GIJOE  Posted on 2006/6/8 5:14
Quote:
そうですよね、GIJOEさんが見える狭い範囲での事実ですから、
チーム内のメンバでもなく、また、当時の開発にも関わって
もいないにも関わらず全ての事実を見通したような考えでの
上ですものね。この辺りは読者にも十分伝わっていると思いますよ。
この一文で、判る人には判ってしまったみたいですよ。
というわけで、あとは読者にお任せってことに同意します。

それにしても「狭い範囲」には笑ってしまいました。
http://xoopscube.jp/modules/news/article.php?storyid=292
において、「開発メーリングリストに参加してもらっています」として私の名前を載せておきながら、コア開発MLから締め出すんですから。そりゃあ、Cubeのコア開発MLは読めないですよね。

ところで、このニュースが翻訳されて本家に載ったということはご存じですか?
というか、最初からそうなることがわかっていたんですよね。私の名前を利用するのが狙いですから。そうじゃなきゃ、単なるメーリングリストの購読者の名前なんて載せないでしょ。

おかげで、私はCube側の人間と認識されてしまいましたよ。本当に迷惑な話です。「onokazuさんに利用された」という怒りは今でも私の中でくすぶってます


それと、onokazuさんは、クローズドな場所でなら何を書いてもバレないとか思ってます?
onokazuさんが私を締め出したコア開発MLに参加している他のコアメンバーって、全員私の知り合いなのですが。
もちろん、直接会って、一緒に酒を飲み交わしている仲です。
tadashiさん以外はマイミクでもあります。

逆に、onokazuさんは、他のCubeコアメンバーをどれだけ知っているというのでしょうか?
ほとんどのメンバーに、会ったことすらないでしょ?

人間としてのコミュニケーションを拒否しておいて、視界が狭いも広いもないとは思いませんか?
onokazu  Posted on 2006/6/7 11:53
そうですよね、GIJOEさんが見える狭い範囲での事実ですから、
チーム内のメンバでもなく、また、当時の開発にも関わって
もいないにも関わらず全ての事実を見通したような考えでの
上ですものね。この辺りは読者にも十分伝わっていると思いますよ。
GIJOE  Posted on 2006/6/7 11:29 | Last modified
何か勘違いされているようですが、私が書くことは、私から見える事実から判断したことです。
逆に言えばそれ以上のことは書けません。
どちらが正しいかは、読者が判断することです。

Quote:
先にも書いたとおり、他人の功績を奪おうとするような考えは全くありません。
だからそれはonokazuさんの主張ですよね。
「onokazuさんのやってきたことは、他人の功績を奪っていることに他なりません」
これが私の主張です。その根拠も書いています。

これについても、どちらが正しいかは、読者が判断することです。

Quote:
大体そんなことしてどのようなメリットがあるのでしょうか?
また、コアチームの開発者だからといって、いったいどのようなメリットがあるのでしょうか?
コアチームの開発者というのがそんなに魅力的な
ステータスであるのであれば、
ステータスとして魅力あるかどうかは、その人によるでしょうね。tadashiさんには、とってもとっても魅力的だったみたいですよ。

そもそも論点がずれてますよ。私はむしろ、コアチームには同情的です。私は最初から、onokazuさんへの批判を、コアチーム全体の責任へと転嫁することの是非を問うているのですから。

Quote:
GIJOEさんのようにコアチーム入りを拒否
したりはしないのではないですか?
ズレついでに…
まだお判りにならないのでしょうか?
私が当時の日本フォークへのコアチーム入りを拒否したのは、onokazuさんがいたからです。
(少なくともあの時点では、理由の100%がそれです)

自分の気に入らないコミットは無条件でロールバックする、それがonokazuさんのやり方だということは良く知っていましたから。

Skalpaさんがsf.netにおいて、onokazuさんにassholeと叫んだことは確かに非難されるべきことでしょうが、そこに至るまでの経緯を知れば、私はSkalpaさんにこそ同情しますね。
他のコアチームメンバーへの軽視は、端から見ても目に余る物がありました。

Quote:
また下記の件はきちんと事実を確認していいただけたのでしょうか。
http://www.peak.ne.jp/xoops/md/news/article.php?storyid=117&com_id=719&com_rootid=714&...
大丈夫です。ちゃんと書きますのでお待ちください

私は、口だけ動かしていればいいわけではなく、プログラムやドキュメントも書かなくてはいけないもので
onokazu  Posted on 2006/6/7 10:42
GIJOEさんの考えだけで全てを断定するのはやめていただけませんか。

先にも書いたとおり、他人の功績を奪おうとするような考えは全くありません。
大体そんなことしてどのようなメリットがあるのでしょうか?

また、コアチームの開発者だからといって、いったいどのようなメリットが
あるのでしょうか?コアチームの開発者というのがそんなに魅力的な
ステータスであるのであれば、GIJOEさんのようにコアチーム入りを拒否
したりはしないのではないですか?

また下記の件はきちんと事実を確認していいただけたのでしょうか。

http://www.peak.ne.jp/xoops/md/news/article.php?storyid=117&com_id=719&com_rootid=714&...

ちゃんと事実を確認せずに勝手に全てを断定されてしまうところの
良い例ではないでしょうか。
GIJOE  Posted on 2006/6/7 5:08
Quote:
表題と結末がアブストラクションについてだったので、このケースではそれが問題ではないはずだと思いまして。
判りづらい文章でごめんなさい。>minahitoさん

抽象化の意味を勘違いしている人が作るとどうなるか、という意味で書いたのですが、抽象化すべきでないところを抽象化してしまった場合、とも解釈できますね。

本質的には、
「対象オブジェクトを明確にしない曖昧なメソッドが脆弱性を生む」
という意味です。
GIJOE  Posted on 2006/6/7 4:58 | Last modified
Quote:
そのような考えではいませんでした。もしもクレジットを奪ったと考えられていたのであればそれはそれでお詫び申し上げるしかないです。
クレジットなんてある意味どうでも良いんですよ。
むしろ、あの時の脆弱性の意味について、onokazuさんが何も理解していないってことの方が重要でしょう。
「すぐに対応するのは大変だろうから」と、気をつかって水面下で報告したCriticalな脆弱性は握りつぶし、いきなりJPCERTに報告された実は全然Criticalじゃない脆弱性には、やたらと大げさに対応する。

こういった、onokazuさんの政治的判断だけで脆弱性対策を行うってことは、「Secure」でもなんでもないってことです。onokazuさんがとっている行動はXOOPS Cubeコアのスローガンにも沿ってないとお判りですか?


Quote:
うーん、チーム内でも意見の対立があるのは当然ではないですか?
その通りですね。
しかし、そのような対立があった場合、最終的に押し切ったのはいつもonokazuさんでした。(唯一の例外がassholeで、そこからフォーク)
他者の力を借りておいて、最終的には自分の好み以外のものは認めない。
実に都合のいいやり方です。

Quote:
また、チーム全体の責任にするつもりもありません。
そうであるなら、
Quote:
Quote:
- jp.xoops.org への書込は、XOOPSという国際プロジェクトへの貢献なのに、勝手にcube.jpというローカルプロジェクトのコンテンツに流用する
jp.xoops.orgのコンテンツの取り扱いに関してはxoopscube coreチーム内MLにて決定した事柄です。
というレスポンスが変ですね。
「xoopscube coreチーム内MLにて決定した事柄」であるから、責任はチームに問え、としか読めませんが。

- 功績はすべてonokazu個人のもの
- 失態はすべてcoreチーム全体のもの

そうですか。ある意味、とても納得できますね。
onokazu  Posted on 2006/6/5 7:32
Quote:
そもそも、JPCERTのは本当は脆弱性じゃないでしょう。
JM2さんやMarijuanaさんによる本当に怖い脆弱性報告は無視し、JPCERTによる「本当はどうでもいい」脆弱性報告だけに対応する。こんな政治的な判断をなされたのは、他でもないonokazuさんでしょう?
そして、JM2さんやMarijuanaさんの脆弱性についても、onokazuという名前で伝わったと、Mithrandirさんから確認しています。

そのような考えではいませんでした。もしもクレジットを奪ったと考えられていたのであればそれはそれでお詫び申し上げるしかないです。

Quote:
少なくともコアチーム内でELFさんとminahitoさん(どちらも本当に尊敬できる開発者です)は、強硬に反対していたと聞いています。

それを押し切ったのは、他でもないonokazuさんでしょう?
その責任を、コアチーム全体に転嫁するのですか?

うーん、チーム内でも意見の対立があるのは当然ではないですか?僕自身は特に強硬に押し切ったというつもりではいません。また、チーム全体の責任にするつもりもありません。
Login
Username or e-mail:

Password:

Remember Me

Lost Password?

Register now!