Losing my religion

何がそんなに悲しいのか?

Popularity: 1% [?]

世界の社窓から

東京国際フォーラムのクマが当たった。
081224_105601081224_105501

Popularity: 1% [?]

pgpool-IIがSERIALに対応

したとのこと

PostgreSQLがボトルネックになるサービスで負荷分散を組み込んだり、冗長性を要求される場合にレプリケーション用にpgpoolを利用したいケースはたくさんあるだろうが、これまで特にレプリケーションではみんな結構苦労していたと思う。

pgpoolのバックエンドサーバのミスマッチはSELECT時にどこかのテーブルの行数の違いを検出するもので、内容については関与していない。SERIALを指定したカラム(MySQLでいうとauto_incrementが指定されたカラム)の不整合が発生しても検知されないので、ここをキーとして構築されたサービスは大打撃となってしまう。

これまでざっとテストした限りではINSERT LOCKを有効にすればSERIALの不整合は防げるようなのだが、INSERT処理が複数のサーバで完了するまで待ちになってしまう(という理解でいいのかな?)ため負荷がシビアな環境ではそのオーバーヘッドを考えると躊躇せざるを得なかった。これでようやくこの問題ともおさらばできるかもしれない。

Popularity: 2% [?]

携帯サイトばかり作っているとセキュリティ意識が下がる

暴論ではあるが、実際にそういう事例を見てきたので、ちょっと書きとめておく。

PC向けサイトは、あらゆる攻撃にさらされている。攻撃用スクリプトの実行も非常に簡単で、HTMLのソースには誰でもアクセスできる。URLバーもあって、GETの値を書き換えてみるくらいのことは当たり前に出来る。しかし、携帯サイトでは、以下のような事情もあり、それほどセキュリティについては真剣に対応しなくてもなんとかなってしまう現状がある。

■攻撃者を選ぶサービスである

携帯向けサービスの場合、サイトへのアクセス経路が必ずキャリアのゲートウェイになるので、意図しないアクセスを全てブロックするのは簡単だ。だから、攻撃者はどこかの踏み台サーバからの匿名的なアクセスではなく、何らかの契約情報にひもづけられたアクセスであることを余儀なくされる(パケットの改ざんレベルはここでは問わない)。公式サイトであれば、端末固有のIDが送信されてしまうので、なおさら匿名性は低い。

もちろん、世の中にはありとあらゆる手段で自分の持ち物以外の携帯を手にしている人もいるだろうし、嘘の情報で契約されたものもあるだろう。だが、そんなものを手にしている人たちが、せこせこと月額315円の携帯サイトを攻撃することなどあまり考えられない。普通は、もっと重大な悪事に使うだろう。

したがって、たいていのユーザが容易に自分の身元が割れそうな状態でサイトにアクセスしていることになるので、それほどひどい悪事が行われる可能性はPCと比較するとかなり少ない。

■攻撃が難しいデバイス

どこかで拾った携帯、あるいはとなりの人のをちょっと失敬した端末で攻撃を企てる人がいるとしよう。DoCoMoの携帯だから現在アクセスしているURLを表示できる!喜び勇んで眺めてみると、そこにはどうやら個人情報にひもづくらしいキーと値がセットされている。では、ここを改ざんして他人に成り済ましてみよう!

ところが、PCサイトであればブルートフォース攻撃などちょっとしたスクリプトで簡単にできるのに、アクセス制限のかかった携帯サイトが相手の場合、あの世界的に有名な打ちにくいボタンでせこせこ入力する以外には、ほとんど手段がない。よって、微笑ましいほどの数のパターンしか試すことができないのだ。なんとか工夫したところで、やっぱりたかが知れている。大人数でやればいいのかもしれないが、人を集めるコストと、人数が増えることによる秘密の漏えいリスクを考えると、やっぱり割が合わない。

■Javascriptが使えない

もちろん一部の端末では使えるのだが、基本的にフルブラウザ(TM)でない限りは携帯サイトではJavascriptは利用されない。したがって、Javascriptを起点としたXSSなどの攻撃が意味をなさない。もちろん、サービスの管理画面などPC側の画面では問題になるだろうが、逆にいえばここだけ抑えればなんとかなってしまう。

もちろん、以上の理由から携帯サイトのセキュリティなど無意味だ、というのは間違った考え方ではある。それに、実際には携帯独自のセキュリティホールだって(NDAの壁があって世の中には出回っていないが)当然存在しているので、セキュアなサービスを作るのが一概にPCより楽だというつもりはまったくない。だが、PCの世界では当たり前のように対策していたことが、携帯サイトばかり作っているとついついおろそかになってしまう傾向は絶対にあると思う。

最近、作成中のサービスで某ベンダのセキュリティ診断を受けたのだが、事前対策中に上のようなことを強く思わせる問題がいくつもあった。昔はこんなんじゃなかったのになあ、というのが開発者たちの感想だった。そう、昔はこんなんじゃなかったのだ。HTMLのソースも見られない環境に慣れてしまうと、単純な攻撃に対する意識はどんどん薄れていってしまうのだ。気をつけよう。

Popularity: 2% [?]

はてな過負荷問題の抜本的解決

はてなが過負荷時に出す画面についてああだこうだと話が盛り上がっていたので、抜本的な解決案を提示することにした。

「サーバ/インフラを支える技術」については、お察しください。

日本発のサービスらしくなる

Popularity: 1% [?]

久しぶりの出向で開発環境について考えさせられた

もう現場に入って数週間が過ぎていますが、年末年始くらいまでは最低でもずっと出向になる予定です。

久しぶりの出向で、しかも納期がタイトで終電なんか当たり前、というこれまた久しぶりな状況です。ちょっと挑戦のつもりでやってみましたが、もうね、体がもちません。幸い、腕の立つ人たちが集まっているので、超人的なチームワークで案件としてはなんとかなりそうな雰囲気になってきましたが、それでもかなり強烈に疲弊しています。結構な金額が動く大型案件なのだけれど、まあいろいろとどろどろしたものがあります。

今回もっぱら担当しているのは、サーバまわりのあれやこれやの設定と、ひたすらコーディング。仕様のほとんどについては実は既存のプログラムがあるので、ほとんど決まっています。逆に、全体的な設計はないに等しいので、現場で話し合って詳細部分はランチでアイデアを交換し合うかたちで進めています。

でも、とある理由からこのやり方がかなりうまくいっています。というのは、今回開発にあたって、全員が電話もなければ出入りする人も(本当の用事がなければ)いない隔離部屋で作業しているからです。隔離部屋というと聞こえは悪いですが、掘りごたつ式のテーブルを囲んで4人が作業することができる畳の部屋で、打ち合わせ用のホワイトボードがわりになるガラス製のボードが壁一面にあり、打ち合わせた内容をいつでも振り返ることができます。それに地上20階以上にある部屋なので外の眺めは素晴らしく、晴れた日にはこれまた壁一面のガラス窓から富士山なんかも見えます。とにかく静かで、社内の余計な作業や打ち合わせに振り回される必要がない。ある意味、開発者にとっては理想的な環境です。唯一の欠点は、背もたれがないので長時間座っていると座布団があるからそれほどひどくはないですが腰にくることでしょうか。

開発環境としては、持ち込んだデスクトップ機を許可をもらってLAN内に設置して、Sambaでファイルサーバを立ち上げ、気づいたことやToDoは同じマシンに置いたRedmineで管理しています。見つけたバグなんかはそこに突っ込んでおけば忘れることもなくなります。Subversionで管理しているのでRedmineのActivity画面を見ていればなんとなく進捗が見えるのがいいですね。何より、こんなちょっとした工夫でも、会社にいればいちいち他のチームとの整合性がどうとか、手順をきちんと作成しないとああだとか、自分では何も出来ない連中からぜったいに横やりが入って、最終的にはまかりならぬとストップがかかるかもしれないのですが、ここでは勝手気ままにできてしまうのが素晴らしいです。いや、冗談みたいな話ですが、グローバルからアクセスできない環境にTracを入れようとするだけでぐちゃぐちゃ文句をいわれたりする(しかも開発のレポジトリには接続さえしてないのに!)会社って本当にあるんですよ。

で、思ったんですが、社内でわけのわからん政治ごっこに振り回されたり、開発とは関係ない部署の隣で騒がしい中ヘッドフォンでなんとか音を遮断しながらコーディングするのは愚の骨頂ですね。開発者に静かな隔離部屋をあてがうだけで、開発効率なんてぐんぐん上がってしまう(よその会社は5倍の見積り出してる案件がなんとかなってしまう)わけですから。それで社内のコミュニケーションに問題が、とか言い出す人がいたら、まあこのチームでも最初はそんな懸念もあったわけですが、そんなことは何の問題にもならないし、本当に必要なコミュニケーションなら努力してでも機会を設ければいいだけのことで、それが開発環境を汚染してまで優先されることではないと、冷静になって判断すればいいことです。それより、開発チーム内のコミュニケーションの方がはるかに重要なのですから。ソフトウェアを作っている現場に5人の開発者と5人のマネージャがいるとして、やむにやまれぬ事情から誰か5人に猿ぐつわを噛ませる必要に迫られたら、開発者じゃなくてマネージャを選ぶでしょ?また、お金の面が心配なのであれば、別の安い建物でも構わないので、なんとかする方向で考えるべきであって、そこをケチってまで開発効率を落とすというなら、それは開発会社としての優先順位づけに大きな問題を抱えていることに気づいていないことになります。あるいは、開発会社を名乗るのはおこがましいと思います。もちろん、くそくらえという方にはその限りではありませんが。

というわけで、いまは体はきつくていつでも気絶できるような状態ですが、開発という面では精神的にかなり落ちついていられます。この経験は今後の仕事の進め方を考えるにあたって重要な要素になりそうです。

Popularity: 2% [?]

塩引鮭がやってきた

およそ二週間ぶりに休めた日曜日の朝、突然宅配便がやって来た。紺色の長細い箱に入っていたのは、新潟県村上市の「塩引鮭」。痴れ者からのお歳暮だ。

081214_194402

ちゃんと家族のみんなになじんでくれるかな?ちょっと顔がこわいけど。

081214_1941011
上の子とはすぐに仲良くなりました。

081214_194001
二人は親友。

081214_194301
最初は警戒していた猫。

081215_000103
塩引鮭の方から近寄っていくと…

081214_235902
一緒に猫のおもちゃで遊んでいます。

081214_235901
すっかり仲良し。

081214_235802
でも塩引鮭ってちょっと凶暴なところがあります。

新しい家族が増えてみんなが喜んでいると、突然異変が起こりました。今日はみんながあんまりかまってくれないから、すねてしまってのでしょうか。まめぞうがぴょんと立ち上がろうとすると、なんと

081214_194901
しっぽが生えているではありませんか!

081214_194801
「まめ、宗介、嫌い!」

さて、ちょっとした騒ぎになりましたが、慣れない長旅で疲れた塩引鮭もそろそろおやすみの時間です。

081215_000801
ゆっくりお休み。

081215_000902
こんな怖い顔なのに、家族の寝顔と思ったらなんだかかわいく見えてきてしまいました。

081215_000901
一緒に寝よう!

081214_235001
布団をめくると、あれ?

というわけで、短い間でしたが、新しい家族と過ごせて幸せでした。あと、けっこうしょぱいのですがご飯に合うので朝は茶漬けにするといいですね。

081214_200501
三枚に下ろすのは難しいのでこうやってぶつ切りにするといいみたい。

081214_195201
ええい、トラウト・マスク・レプリカ!

081214_195301
なにすんだよぅ!

081214_235101
興味しんしん。

Popularity: 1% [?]

WordPress2.7

毎日バックアップを取っているので気楽に更新してみた。

Popularity: 1% [?]

PHP-5.2.7、5.2.8のZipArchive::extractTo()

Changelogに書かれていないが、標題のZipArchiveの関数に意図しないディレクトリにまで移動できる脆弱性があったのが修正されている

Zipアーカイブのディレクトリ・トラバーサルというとWikipediaの記事にもある通りUnicodeの問題が有名だが、個人的にはあちこちで名前にRTL制御文字を入れ込んで反転させている男、「ǝunsʇo」を思い出す。

Popularity: 1% [?]

DJB様ごめんなさい

とあるMTA相手にSMTPで改行をCRLFじゃなくてLFにしていたら

451 See http://pobox.com/~djb/docs/smtplf.html.

と、DJB様にお詫び行脚しろと言われる。もちろんqmailだ。

Popularity: 1% [?]