書籍『Building Secure & Reliable Systems』を紹介しようと思った理由

渡辺洋司氏: 今回このえびすセキュリティボーイズをやるにあたって、最初は何かWebアプリケーションのセキュリティの話をしようかなと思っていました。私自身がもう少しいろいろ勉強したいなと思って、企画から開発、運用まで全部網羅した空間を1回全部さらい直したいと思ったんですね。

そのいいタイミングで、この本が無料で公開されたのでちょっと舐め始めてたんですけど、かなりボリュームがすごいです。600ページぐらいあるので、ここで紹介するのも私が読み終わるのもちょっと難しいなと。

今回ここで発表されたメンバーは、いろんな分野においてかなり素晴らしい人たちですし、私も何かできるかなというところでして。参加いただいている200名の方々の分野もいろいろ異なるだろうなと思います。

改めてそもそもという視点から物事を見れるものがいいかなと思って、私もそのサイバーセキュリティというと守る話が多いんですけど、ここの2章は「攻撃者を知りましょう」という章になっているので、そこに着目して読んでみました。

Building Secure and Reliable Systems: Best Practices for Designing, Implementing, and Maintaining Systems

2章で何を話しているか

概要です。チャプター2では何を話していますかというところです。「攻撃者のTPPを知りましょう」と書いてあります。TTPはTactics、Techniques、そしてProceduresですね。戦略、技術、そして手続きというもので、実際何をどうやるのかを知るのが大事だよという話になっています。

その中で『Stalking the Wily Hacker』という古いドキュメントがありまして、こんなドキュメントがベースになったりとかあります。みなさんによく知っていただきたいところとして、攻撃手段は非常に安価に手に入れられますよとあります。私も実際にどんなことができるの? と調べると、例えばDDoSをあのサイトに仕掛けてやろうといったら千円ぐらいで攻撃できるんですね。

みなさんが数千万円掛けてDDoS対策の仕組みを入れても、相手は千円ぐらいで攻撃できちゃうという悲しい現実がありますよと。そのセキュリティ対策の非対称性というのは、けっこう大きいなと思います。あと攻撃に関しては、国を上げてやっているところであったり、調査だったり犯罪だったりいろいろありますよ。誰がなぜそれをやっているのかを理解するのが重要ですよというのをこの本で言っています。

アタッカーのモチベーション

ここはアタッカーのモチベーションというところから入っています。アタッカーがどんなモチベーションをもってこれをやりますか? という攻撃のところなんですが、いくつかあります。8個ぐらいあって、最初はFanでいたずらですね。楽しんでおもしろくやっちゃうというところで、システムのセキュリティを損なう。「やってやったぜ!」みたいな純真な喜びがあります。

それからFameの名声。技術的なスキルを誇示する「俺はあのサイトをやってやったぜ!」「ダウンさせたのは俺だ!」みたいな名声を入れたいのでやるとか。アクティビズムは、一般的には政治的な要点だったりメッセージだったりというのを世に知らしめるためにやります。

Financial gainは経済的利益ですね。単純に言うとお金を稼ぐため。個人情報だったり、得た機密情報、開発中の何かとかシステムの情報とかを売買したり、BitCoinとかの交換所を攻めてというところだったり。そしてこの強制というやつは、被害者に意図的に望まないことを行わせるというところだったり、Manipulation、操作……。

ごにょごにょとなんかいっぱい出てきますけど、こんな感じでアタッカーというのは、いろんなモチベーションを持ちながら攻撃するということが行われます。

アタッカーってどんな人たち?

次にそのモチベーションをもつアタッカーというのはどういうのがいるんですか? というのがこの辺です。ここでは7種類挙げられています。Hobbyistsというのは趣味でやってます。あとは脆弱性のリサーチャー、それから政府、活動ですね。犯罪者と自動化AI、内部犯というのが挙げられています。

1個ずつ進んでいきます。まずこのAttacker ProfilesのHobbyistsというのは、基本的にその仕組みに対する興味というのが強くて、どうなっているんだろうと中を見たいとか、そういう中身の興味がすごく強い人です。こういった人たちはシステムをより安全にするために彼らの知識を有効活用できるといういい面があります。

次にVulnerability Researchersです。脆弱性のリサーチ研究者ですけど、仕事であったり趣味であったりで脆弱性の発見、ソフトウェアのバグとかを発見する。 BugBountyに参加。バグ報奨金というバグを見つけてレポートするとけっこういいお金が入ってきたりするので、そういうので生活をしている人もいます。そして会社の自社サービスなどの脆弱性を見つけるための攻撃をするRedTeamなどがいます。

Governmentという法律の実施者は、実際にどういった活動をするかというと、Intelligence gathering、情報収集ですね。実際に過去のスパイ手法を探して、今はこういうことが行われていないかというリサーチをしたり。あとは軍事目的ですね。電力、ガス、通信などの重要インフラへの攻撃に使われたりします。有名なところだとStuxnetとかですね。

国内の監視活動に使われたり、国家とか某国とかいろんなところからよくリサーチが掛かってくるみたいなところもあります。国レベルを上げて攻撃をしてくるんですけど、我々というかみなさんも提供している一般のサービス、利用しているサービスというのも攻撃の対象になることがあります。

スポーツのランアプリのStravaなどの位置情報。例えば米軍のヒートマップで地図上に活動しているところが出るんですけど、ここで例えばある国でここがヒートマップで赤くなっているというのを見つけて軍人いるじゃん、みたいなのを見つけられることがあります。

Attacker ProfilesのActivistというのは、Webサイトの改ざんによるメッセージをしたり、有名なところだとAnonymousがDDoS攻撃をしたりbotnets経由の攻撃をしたり、あとはサイバーテロリストと呼ばれるような人たちがいます。

犯罪活動をするような人たちというところですが、ここの攻撃者は、かなりさまざまな技術とツール、そして多少の時間とお金をかけると言われています。「多少の時間とお金」というところですが、基本的には攻撃者というのはすごく難しい攻撃をしてくるわけではなくて、まず簡単なところからやってくると言われています。なので時間もコストも掛からないところというのが基本的には攻撃の対象になりやすいです。

ここでいきなり対策みたいなのがありますけど、CAPTCHA認証を入れるとかをすると少しだけ攻撃の時間が掛かったりコストが掛かるみたいなところで「このサイトやめとこう」みたいなところがあります。さらにそれを上回るコストを掛けないといけないので、そこを攻めるか隣を攻めるかみたいな判断で避けられるケースも出ますよと。

先ほど松本さんのところでもありましたけど、AIとか自動化みたいなところはセキュリティの世界で当たり前になってきていますというところです。DARPAとかでもCyber Grand Challengeというもので、その攻撃の自動化・防御の自動化というものを自己学習して動作するサイバー推論システムを作って競いましょうというチャレンジをやっています。

もう今はいろんな製品に関してAIが本当に入ってきていると実感しますし、それを使って何をするかみたいなのが非常に大事になってきています。

次に全体像を見ますとInsidersというのがいます。Insidersの中にはFirst-party InsidersというのとThird-party Insiders、それからRelated Insidersというのがいます。

まずFirst-party Insidersというのは、主に中にいる人たちで、従業員、インターン、経営と取締役会みたいなところです。基本的には機密情報を直接触れるところにいるので、こういう内部の犯行に気を付けないといけないです。

Third-party Insidersのところでいうと業務です。委託など発注していたり一緒にビジネスをやってもらっているところとかが関わってきます。例えばアプリケーションを開発しているところ。自社だけで足りずに他に業務委託とかをお願いしていると思いますけど、GitHub共有していますとか、ソースコードを共有しています、本番のデータベースを共有しています、みたいな、あってはならないと思いますが、そういったことがあると思います。

それからオープンソースのコントリビュータとかも中の情報、脆弱性、バックドアを埋め込むとかもできますし注意が必要です。そしてTrusted content contributorsとかも、例えばメディアを書きますよといったときの情報収集。こちらから情報提供をするので機密情報を持っていたりします。

商売を一緒にやっているところ、契約者、ベンダー、そして監査人ですね。そういったところで契約関係にあるようなところというのが内部犯として非常に想定されています。

その他関係者として、友人、家族、同居人というところもあり、うっかり喋ってしまったこととか、そういったところが漏れる可能性があります。

ここの例をささっといっちゃいますけど、けっこうおもしろいというかリアルなところで書いてあるので1回読みます。ソースコードにアクセスできるエンジニアは、パフォーマンスレビューに満足できず、ユーザーデータを盗むプロダクションに悪意のあるバックドアを挿入しますとか。あとはおもしろいのはSRE、次の……一番下のほうがおもしろかったですね。

「SREの子どもは、自宅で親のラップトラップを使用し、マルウェアをバンドルしたゲームをインストールして、コンピューターをロックし、SREが深刻な停止に対応できないようにします」と。SREの人とかは、けっこう自宅とかでも監視対応作業が必要になってくるので、PCを置いておくと子どもにいたずらされますよというので、なかなかおもしろいなと思いました。

攻撃手法

そしてAttacker Methodsでは、Threat Intelligence、共有情報を集めましょうというのと、それからCyber Kill Chainsという、軍事用語のKill Chainが基になっている敵の攻撃の行動を把握しましょうというのがあり、それをサイバーセキュリティに当てはめてやりましょう。

あとは最初の冒頭にありましたけど、TTPですね。攻撃者の戦略、技術、行動手順などをよく把握しましょう。ここにMITREのATT&CK Frameworkというのが出てきてまして、ここに行っていただくと、そのTTPのきちんと分割整理した手順とそれに照らし合わせた攻撃手法というのが具体的に載っているので、いったん見てもらえるとおもしろいかなと思います。

リスク評価

リスクをサイバーセキュリティ対策するときのリスク評価をきちんとしましょうというのがあるんですけど、そもそも自身がいつもターゲットになることを忘れないでおきましょう。例えば「うちには機密情報ありません」とか、「こんな小さい会社は狙われないよ」とか思う方はけっこういらっしゃるかもしれませんが、そういったところから逆に狙われる可能性は大きいです。

その下にもありますけど、常に難しい方法ではなくて可能な限り低コストで済ませるので、サプライチェーンのエラーに低コストで入って、そこから本丸を攻めるというのも非常に多いかなと思います。 あとは逆に、攻撃者を過小評価しないということがあります。「どうせお金があまりない」ではくて、つぎ込むところにはつぎ込んできますというケースは非常にあります。

とはいえ、攻撃者の特定はけっこう難しくて、例えばExploitコード。攻撃コードというのは、オリジナルはあるんですけどすぐに亜種が出てくるので、誰が攻撃したかというのがわかるのはなかなか難しいです。なので実際にどのようにアクセスがあって、どんな攻撃をされているのかを分析するというTPPの分析が大事です。

攻撃者は常に逮捕を恐れているわけではないですというところ。例えば攻撃をよくする国であれば、そもそも政府が匿って引き渡さないとかそういうこともあるので、「逮捕されるからいいや」とかではなくて、逮捕されないケースというのも非常にあります。

十分に相手を分析し、自社をターゲットにする人はどんな人がいるか

この2章のまとめです。十分に相手を分析しましょう。そして自社をターゲットにする人というのはどんな人がいるかという評価をしましょう。

セキュリティ企業の脅威インテリジェンスの導入をしましょうというところでは、実際過去にどんな攻撃があったのかとか、今のトレンドはどうなのかというところを把握するのが重要になってくると思うので、まずは情報の収集、自分の評価などをしっかりされるといいんじゃないかというまとめになっています。

ちょっと長くなってしまいましたが、以上で終わります。ありがとうございました。