novtanの日常

ネタです。ネタなんです。マジレスする人は撲滅すべき敵です。だからネタだってば!

「note」のIPアドレス表示についての報告とお詫びに見る問題の本質

note.jp

この件です。

わりとよい報告書みたいな評価をされている人も結構いるんですが、業務エンジニアの目線から見るとこれはちょっと…って言わざるを得ないですね。

再発防止策として書かれているこれね。

1)監視

  • 意図しない漏洩の早期発見・通知を行うシステムの導入

うーんってなりますよね。そもそも、IPアドレスを表示していた(あえて漏洩とは言わない)のは、どういう要件で行っていたのか、という話なわけじゃないですか。表示項目ってのはまずそこからですよね。アプリケーションの作り上、APIとしてやり取りしている項目と、実際に画面に表示している項目は違ったりしますので、業務要件としては表示対象項目しか可視化されてない、ということはよくありますよね。そうすると、APIのI/F定義書を作ったときに画面に表示するための項目とシステム上必要な項目のそれぞれについて、どういった要件に基づくものかを明確にしなければなりませんよね。これは基本的な話です。

この再発防止策に見える問題の一つは「意図しない漏洩」という文言ですね。今回のIPアドレスの表示が「意図していない」ものだとしたら全く必要ないI/F項目がAPIに定義されていたということで業務レベルでクソ雑魚開発としか思えず、このシステム大丈夫かいなってなりますよね。
もう一つの問題は、この手の項目レベルで「意図しているか意図していないか」は普通、業務要件から導出されるものであり、発見・通知をシステムで行うことって一般的には困難ですよね。何をしようとしているんだろうか。うっかりIPアドレスを表示項目に含めちゃいました、を検出するのであれば、ステージング環境とかで正規表現でIPアドレスっぽい書式を引っ掛けて警告するとか?だったらなんとかできそうですけど、逆に言うと、「どういったものを対象にするか」を明確に定義できないと意味無し子ちゃんですよね。

でも、IPアドレスはシステムとして表示してはいけない、というルールはおかしいんですよね。「無断で」「他者に」という要素がなければそもそも問題ない要件であることが多いわけです。(昔懐かしい)掲示板のサイトとか普通に投稿者のアドレス出したりするじゃないですか。他者に見える形で公開する場合は規約等で同意が必要だよね、という話でしかないと思います。
だから、IPアドレスは必要に応じて(例えば、ログイン履歴とか)エンドユーザーに見える必要があったりしますよね。それをどうやって「意図しない漏洩の早期発見・通知を行うシステムの導入」
「不正アクセス検知システム(WAF)や侵入検知システムを導入し」などの対策で解決するのか。I/F仕様が業務要件ではなくて開発者側の主観で決められていないか(あったほうがよいよね、とか使い回せるよね、とかそういう事情)とか、そういった方が僕は気になるんですね。要件→仕様→実装が正しく連携されているかがまず大事で、仮にそれがちゃんとできているのであれば要件決める人や仕様を決める人がクソ雑魚な意識しか持っていないという話になっちゃいますんで、こんな対策ではなんも解決しないんですよね。ちゃんと上流工程出来るエンジニアがいるの?ってことです。そういった本質の話が、Webサービスを提供することが本業の企業から出てこなかった、というのはちょっと怖い話ですね。