Upgrade to Pro — share decks privately, control downloads, hide ads and more …

永続性のあるセキュリティの実現に向けて私たち(エンジニア)ができること

 永続性のあるセキュリティの実現に向けて私たち(エンジニア)ができること

2019/6/1 Legacy Code Meetup Kagoshima 2019での、西村の講演資料になります

Recruit Technologies

May 29, 2019
Tweet

More Decks by Recruit Technologies

Other Decks in Technology

Transcript

  1. 私達の役割 セキュリティの技術専門組織として、プロダクトの脆弱性対策を横断的に支援 • 300を超えるプロダクト(年間売上高100億円を超えるものも多数) プロダクトA 企画 開発 運用保守 プロダクトB 企画

    開発 運用保守 プロダクトC 企画 開発 運用保守 事業会社 A 事業会社 B リクルートテクノロジーズ(横断組織) サイバーセキュリティ部 (セキュリティ統制施策の推進) ITエンジニアリング本部 プラットフォームセキュリティG プロダクトD 企画 開発 運用保守 … … 支援 支援 支援 支援 支援 連携 4
  2. プロダクトの脆弱性対策は組み合わせが大切 ネットワーク機器 サーバOS サーバミドルウェア アプリフレームワーク Webアプリ 自分たちで作ったもの 外から調達したもの • 開発者向けセキュリティ教育

    • セキュリティレビュー • Webアプリ脆弱性検査 • パッチマネジメント • プラットフォーム脆弱性検査 分類 効果的な脆弱性対策 5
  3. 対策の方法によって外部委託の難しさは異なる プラットフォーム脆弱性検査 パッチマネジメント Webアプリ脆弱性検査 セキュリティレビュー 開発者向けセキュリティ教育 汎用的な教育は委託可能だが、自社プロダクトの利 用技術にフォーカスした教育は困難 Webアプリ脆弱性検査と同様 △

    ◦ 要因 外部委託の難しさ ✕ ◦ △ 設計/実装のリスクをレビューできる人材は社会全 体として不足しており、持続的な供給に課題 多くのWebアプリの場合、ベンダーに経験とスキル の蓄積があり、持続的な供給や品質面で安定性あり 自社プロダクトの状況に応じた判断や、対策方法の 提示が求められるため委託が困難 6
  4. 背景 セキュリティ人材に求められるスキルの多様化 • SecBok2019によれば、脆弱性対策に要するスキルだけでも156種類※1 • 扱う技術領域も、OS、NW、プロトコル、アプリ、暗号など多岐に渡る • 技術の進化は早く、新しい技術の組み合わせによる新たなリスクも発生 • →

    得意な技術分野や、視点の異なる人材の協力が不可欠 社会全体としてセキュリティ人材の不足 • 開発のことがわかるセキュリティ人材は特に希少 • → 社内エンジニアにセキュリティスキルの習得を促す方が早い ※1 SecBok2019 ソリューションアナリストの前提必須スキル数より https://www.jnsa.org/result/2018/skillmap/ 10
  5. ② 留学制度 セキュリティ部署に3〜6ヶ月間留学 • 設計/開発のリスク分析や脆弱性調査などをメンバーとともに実施 • 後半は自身の強みを活かした卒業研究を実施 過去の卒業研究テーマ • インフラエンジニア

     AWS WAFの有効性の検証 • データサイエンティスト  脆弱性検査の統計に基づくリスクヒートマップの作成 在籍する職場で役立つセキュリティスキルの獲得 • プロダクトのソースコードから脆弱性を見つけ、正しく修正するスキル • 設計資料のセキュリティリスクを評価し、正しく言語化するスキル • 社内セキュリティルールの具体的な理解 社内での取り組み 13
  6. Bad SNS 2019を起動 1. Dockerをインストール 2. 以下のコマンドでSNSを起動 3. ブラウザで以下のURLをアクセス SNS本体:http://localhost:10080/

    メール受信機能(検査対象外):http://localhost:10080/mailhog/ $ docker pull ommadawn46/badsns2019 $ docker run --privileged -d --rm -p 10080:80 --name badsns2019 ommadawn46/badsns2019 18
  7. 22

  8. 脆弱性は速やかな対応が求められる 脆弱性の開示から1日以内に攻撃が観測されたケースも • 2014年 Shellshock(CVE-2014-6271) • 2017年 Apache Struts 2(S2-045/CVE-2017-5638)

    攻撃者 エンジニア 脆弱性を分析 脆弱性を分析 攻撃コードを作成 影響調査 脆弱性対応 攻撃活動を開始 世の中に脆弱性情報が開示 攻撃が来る前の対応が求められる 25
  9. 速やかな対応には備えが不可欠 各プロダクトのシステム構成情報の把握 • 利用しているソフトウェアの把握 • インフラ構成や外部ネットワークとの接点の把握 • リクエストフィルタリングの適用可能箇所の把握 脆弱性情報の収集と影響調査 •

    脆弱性情報の定期的な収集(開発元のMLやRSSの購読など) • 攻撃コードの確認(パッチのテストコードや攻撃ツールのコードリポジトリなど) • 自社プロダクトにおける影響の分析 事前の対応方針策定 • 脆弱性の影響度に基づく対応フローの確立と意思決定者による合意 26
  10. しかし備えは難しい・・・ 各プロダクトのシステム構成情報を把握できない • 開発しているプロダクトの全量が把握できない • 利用しているソフトウェアの数が多く、収集が困難 脆弱性の影響を調査できない • 影響を判断できるだけの情報が手に入らない •

    脆弱性の内容を見てもどのようなリスクがあるのかよくわからない 事前の対応方針が決まらない • パッチを当てられない場合のフローなど、検討しなければいけないケースが案外多い 27
  11. CVSSに基づく影響判断の課題 – 公称値としての信頼性 評価基準に一貫性・透明性がなく、公称値としての信頼性に欠ける • 評価機関によってスコアが異なる※1 CVSS評価パラメータ 選択肢 攻撃元区分 ネットワーク・隣接・ローカル

    攻撃条件の複雑さ 高・中・低 攻撃前の認証要否 複数・単一・不要 機密性への影響 全面的・部分的・なし 完全性への影響 全面的・部分的・なし 可用性への影響 全面的・部分的・なし 任意のコードが実行できる脆弱性なら 全面的な影響とする解釈や、ユーザプ ロセス上での任意コード実行であれば 影響は部分的とみなす解釈が存在する 複雑さの基準が不明確。例えば、不正 なファイルを開かせることで発現する 脆弱性を、複雑とみなす場合もあれば、 攻撃は容易とみなす場合もある ※1 例えば Ghostscriptにおける任意コード実行可能な脆弱性(CVE-2018-16863)は、NIST評価9.3に対し、JPCERT/CC評価7.8と乖離 29
  12. CVSSに基づく影響判断の課題 – 複雑なスコアリング方式 リスクシナリオが複数存在する脆弱性はスコアが高くなる • バッファオーバーフロー脆弱性で想定されるリスクシナリオ ① 境界外のメモリ番地へのアクセスによるプロセス停止(攻撃は比較的容易) ② 巧妙なメモリ番地にアクセスさせることによる任意コード実行(攻撃は一般的に困難)

    CVSS評価パラメータ ① プロセス停止のリスク ② 任意コード実行のリスク 最終的なCVSSスコア 攻撃元区分 ネットワーク ネットワーク ネットワーク 攻撃条件の複雑さ 低 高 低 攻撃前の認証要否 不要 不要 不要 機密性への影響 なし 全面的 全面的 完全性への影響 なし 全面的 全面的 可用性への影響 部分的 全面的 全面的 CVSS スコア 5.0 7.6 10.0 30
  13. 脆弱性管理基盤 RAFFLESIA の構築 社内インフラやアプリ開発環境から構成情報を収集し、脆弱性を自動検知 • 脆弱性の検知には、VulsのServer Mode※1やTrivy※2を活用 社内での取り組み コンテナ利用環境 RAFFLESIA

    アプリ開発環境 社内各種インフラ 構成管理ツール コンテナレジストリ 各種脆弱性情報 開発中 開発中 ※1 https://speakerdeck.com/knqyf263/vuls-server ※2 https://github.com/knqyf263/trivy 31 構成情報
  14. 脆弱性判断の仕組み作り 脆弱性の内容に基づく対応判断 • 一次情報(パッチの修正差分やBTSのチケットなど)を調査 • 調査方法は留学制度などでスキルトランスファー 脆弱性の緊急判断フローを確立 社内での取り組み 33 当該のソフトウェアを

    利用している可能性が高い 脆弱性を悪用された場合の ビジネス影響が大きい 攻撃が容易である 緊急対応  RAFFLESIAに利用登録あり  DL数やスター数が多い  他  機密情報漏洩の可能性が高い  横断的な事業継続影響あり  他  制限なくネットから攻撃可能  他ユーザの関与なしで成立  攻撃コードが既に存在する  他
  15. 検査の目的と課題 目的 • プラットフォーム層(自社開発したWebアプリ以外)の脆弱性管理 • 外部からアクセス可能なポートの把握 • 外部から識別/推定可能なソフトウェアの把握(CMSのプラグインなど) • →

    管理のためには定期的な検査が効果的 課題 • 検査ツールによる大量の過検知と、その精査に要する人員 • ツールのライセンス管理やベンダー契約のため、セキュリティ部署が検査を仲介 • → 運用人員のコストがボトルネック 35
  16. Kubernetes環境 簡易プラットフォーム検査ツール CASVAL CASual Vulnerability AnaLyzerの略 • OSSの検査ツール群のラッパー(現在はOpenVASのみ) • UIやAPIを通じて、いつでも、誰でも、簡単に検査を実施可能

    • 過検知の判断を不要とするため、事前に選択した緊急度の高い脆弱性のみを通知 社内での取り組み CASVAL API 開発者 検査対象 CIツール 緊急度の高い脆弱性以外を フィルタリング 結果通知 検査依頼 検査依頼 検査結果 検査 UI 36