ペンテスターの情報集めは基本的にGitから始まる

川口:掘り下げたいのですが、これだけで今日のセッションが終わってしまうので、次に行きます。SSOの環境でどう守っていくかはそれぞれの環境と運用もあるのはすごく感じるところです。

(スライドを示して)開発者の人が使っているサービスで代表的なのが、GitHubまわりです。GitとするかGitHubとするかによると思いますが、そこに何か情報が入っているとか、そこのアカウントや権限が取れることからスタートすることはあって、日常的なGitやGitHubを使わざるを得ません。

日常のオペレーションに組み込まれているところにペンテスターが差し込んでくると、けっこう(それが)攻略の糸口になっているケースは多いと思うのですが、ルスランさん、そういうのはどうですか?

ルスラン:そうですね。基本的に我々はゴールがいろいろあって、やり方もいろいろあります。例えば感染済みの端末からスタートするとか、あとはOSINT(Open Source Intelligence)と言われる、外部公開されている情報を探してそこからエントリポイントを探しに行くこともある。どちらにしても、外部の情報を集めていっているので、基本的にはGitから始まります。

会社名を入れたり、いろいろ検索をして何も公開していないというのは、企業の中でそもそも開発者がいない案件ぐらいかもしれません。認証情報はあちこちにどこにでもあるというわけではないのですが、情報収集という意味では、たまにすごく役に立つこともあります。

「ついうっかりコミット」が情報漏洩につながることもある

ルスラン:Gitは何が悪いかはたぶん開発者のみなさんはわかっています。コミットが消されていない状態であれば、攻撃者はもちろん、誰でもコミットの履歴から各コミットを見て、情報を取れることもあります。そのような感じで、過去のある案件で鍵が取れて、外部LDAP(Lightweight Directory Access Protocol)サービスにそのAPIキーで入って、いろいろな内部情報を取れたケースもありました。

川口:ついうっかりコミットしてしまった例はあると思います。

ルスラン:そうですね。

川口:ついうっかり認証情報や漏れたらまずい情報をignoreに入れずに入れて、「もう消したからいいだろう」となったけれど、実は見てみたらコミットログがあるみたいなことですよね。

ルスラン:はい。ありますね。

牧田:消えていないというやつですね。

川口:これは、(情報が)あるよね、見られるよね、探せるよねというところからの、あとになって悲鳴が聞こえるパターンですよね。

牧田:一番びっくりしたのはセキュリティ製品。(製品名は)言わないですけど、ソースコードが公開されたのはおもしろかったですね。

ルスラン:あれはおもしろかったですよね。でもあれは開発者より、たぶん開発者のインターンが会社に入った時に、いろいろなメモの中にDropboxのリンクも入っていて、そのDropboxのリンクに入ると開発中のかなり大きな動画が誰でもダウンロードできる状態で存在していて、かなり大変だったようですね。

川口:Dropboxのリンクは1回作ってしまうと期限がなくなるので、それがどこかで漏れるとフォルダ以下はザクザク見られます。

ルスラン:そうですね。プレミアムみたいな感じにしない限りは、基本的にはアクセス履歴も取れません。

川口:そうですね。無料版を使っていたら取れないですね。

会社アカウントと個人アカウントの扱い

牧田:あとは、会社アカウントではなく、プライベートの個人アカウントでリポジトリを作っちゃって、その会社の情報まで間違ってコミットをしていたのはあって。

OSINTでペンテストをする人たちは、すぐに人を特定できるのがすごいですよね。この人がTwitterをやっていて、TwitterアカウントにGitHubのアカウントがあって、診断をされた会社と個人のリポジトリが紐づいて、そこで鍵が取れてということもあったりするので、プライベートで使う時は、会社と分けて。気を付けないといけないですね。

川口:会社が創業期だったりすると、そのあたりはわりとゆるく管理されていたりします。個人の能力に依存してシステムが開発されていたり、もしくはそうやってやっている中途のできるエンジニアが入ってきたりすると(大変)。境界線が甘い時期にそういうところが使われたりすると厄介ですよね。

会社が大きくなるとそのあたりはきっちり分けて管理をするようになると思うのですが、会社のステージによってはそこまでケアがされていなくて、ペンテストを受けてみたらあらあらと気付くパターンです。でもよかったですよね。ルスランさんやイエラエに頼んだのであれば、まだ口止めできます。「ちょっとこの情報は契約で見なかったことにできますよね」と言えばできますけど、悪い人はそうしてくれませんからね。

ルスラン:そうですね。個人的にはたまにバグバウンティみたいな感じではやっていて、日本の会社の情報も見つけたりするので、知り合いのいる会社であればチラッといろいろ入れていますが、他はちょっと大変ですね(笑)。

川口:そうですね。

牧田:でもおもしろいと思ったのは、自分たちの会社で使うソースコードの中で固有の言葉、被らないような言葉を入れてそれをクローリングしておくことで。これも監視ですよね。誰かが間違ってパブリックにしちゃったりか感染しちゃった時に、関数名かわかりませんが、監視で固有値が引っかかります。すぐに止められるのは対策としては賢いなと思いました。注意力に頼って、「みんな気を付けて」とか、二重三重にチェックするのは、ちょっと限界があります。

川口:そうですね。社員数も増えたりすると、いつかちょろっとやっちゃうのはありますね。

(次回に続く)