雑多に技術メモと他色々

主に自分用な技術メモが多くなる気がする。他色々が書かれるかどうかは不明。

Peing(ペイング) -質問箱- セキュリティ問題の経緯に対する雑感

2019/01/28 Twitter連携サービスのPeingに脆弱性(というレベルのものでもないけど)があるという情報が攻撃を実践する形で公開された。
実際にどのような問題があったのかはググってくればたぶん出てくる。お粗末すぎて考察の余地もあまりない気がする。
問題箇所の実装がクソなのは明白なんだけど、それ以外に発覚の経緯にしても公式発表の状況にしてもまずい感じがするので、そのあたりを書きなぐってみる。

問題発覚後のPeing側の動きの問題点

発覚直後に事実説明が無い

発覚した直後の問題点についての説明がないままにメンテナンスに突入している。
とりあえず被害を抑えるためにシステムを停止するのは正しい選択だが、その時点で「メンテナンスすること」のみを発表するのはいただけない。
このレベルの問題が発覚したときは「何が起きたのか」「ユーザ側に危険がないのか」判明しているレベルで第一報を入れるべき。
とにかく事実レベルでいい。わかっていることベースで素直に報告 → ある程度時系列整理した後に詳細報告といった流れが普通だと思うんだけどな。

メンテナンスに入った後も現状の経過報告が少ない

現状の経過報告が甘く、各利用ユーザへ対処の要否、対処方法を通知していない。
Twitterと公式HPを見る限り、Peing側は現状について「緊急メンテナンスを始めたこと」「第三者が勝手にツイートできてしまう問題へ対処中であること」の2点しか公表してないように見える。
ユーザが知るべきは「各利用ユーザがこの問題で第三者からの攻撃される可能性があるのか」「攻撃の可能性がないならそれはなぜか」「攻撃の可能性があるならユーザが取るべき対処は何か」といった点である。
経過として何を発表するべきかをサービス提供側視点でしか考えてないんじゃないか。ユーザが得るべき情報をちゃんと整理した方が良いように見える。

非公式の情報を野放しにしている

一般ユーザのツイートやまとめサイトで情報が氾濫している状況を野放しにしてる問題。
公式の状況報告が少なすぎるせいで、不安に駆られたユーザは非公式の情報を頼りにするしかない状況になってる。
嘘情報に踊らされて二次被害に遭うユーザが出る可能性もあるわけで、何が本当で何が嘘なのか情報を統制する責任もあるんじゃないのか。
「各所で色々言われてるけど公式の情報だけが真実、外部参照するな」って感じでユーザが知るべき情報をちゃんと出していればそれで良いのだと思うのだけど。

根拠の薄い復旧期限を決めてしまっている

公式発表で「明朝までに復旧見込みです」と書いてしまっている。「見込み」のあたりが保険なのだろうか。
このレベルのクソ実装を仕込んだ人たちが本当に1日徹夜するだけですべての問題を潰しきれるのかは、いささか不安を感じる。*1
あと、復旧した瞬間に次のセキュリティ問題がないか探すために攻撃仕掛ける人が一定数出るんじゃないかという問題も。
慎重にセキュリティ面の問題が他にも紛れてないかを精査して、潰し切らないと復旧後に痛い目を見そう。

問題報告者の動き方の問題点

一部では「ハッカー」と言われている、公式アカウントを利用して脆弱性の存在を実践で証明してしまった人。
セキュリティ問題の報告として今回やり方はイケてない印象が強い。
とりあえず、この人は真剣にセキュリティ問題の被害を止めたかったという前提で思いつく問題を書いてみる。

セキュリティ問題があることを不特定多数に公開した

やるにしてもPeing公式にメールを送るだけで良かったと思われる。*2
SNSで情報公開したことで、不特定多数のユーザがPeingにセキュリティ問題があり、攻撃が可能であることを知ってしまった。
悪意あるユーザが情報を得た際に被害拡大することを考えると、安易に情報公開するのはよろしくない。

攻撃を実践することで問題箇所を絞り込んだ

前述の情報公開にも関連するが、公式のアカウントで外部からツイートする行為を実践することで「連携認証周りに問題がある」という予測もできてしまう。
今回の報告者はこのあたりに気を使うつもりはハナからなかったのだと思うが、通常は可能な限り悪意ある(可能性のある)ユーザに攻撃の情報を与えないように動くべき。

一部ユーザにしか理解できない対処法

問題の公表と同時に「Twitterのアプリケーション認証からPeingを一時的にでも外しておくこと」を対策として公開したようだが、私見ではこの文面を見て反応できるユーザはまだ被害に遭いにくいレベルだと思う。
やるなら「アプリケーション認証って何?」「Peingを外すってどこから?」というリテラシーレベルのユーザを救うつもりで、彼らにも理解できるような対処法を説明しなければダメだという認識。

まとめ

商用問題の報告は開発者からしたら面倒な面もあるけど、対ユーザ向かいとしては真摯に対応しなけりゃ信頼を失うことになると思いました。

*1:私見だと復旧時間の根拠は薄いと思ったけど、中の人からすれば十分な根拠はあるのかもしれない。

*2:メールだけでは意に介さないのではないか、など思うところはある。