Slide 1

Slide 1 text

デベロッパーセキュリティ強化!
 ~シフトレフトで安全な開発を~
 1 クラスメソッド株式会社
 アライアンス事業部
 サイード ラティファ栄美里 / 木田雅伊子


Slide 2

Slide 2 text

自己紹介 サイード ラティファ栄美里 ● 所属 ○ アライアンス事業部 ○ エンジニア ○ セキュリティ系のSaaS製品を担当 ● 好きなAWSサービス ○ AWS IAM、Amazon CloudFlont ● ブログ ○ さいちゃん ○ https://dev.classmethod.jp/author/saichan/   木田 雅伊子 / きだぱん ● 所属 ○ アライアンス事業部 ○ エンジニア ○ DevOpsのSaaS製品を担当 ● ブログ ○ きだぱん ○ https://dev.classmethod.jp/author/kidapan/   マーシャル フェレット みるくちゃん (7ヶ月) ジャンガリアンハ ムスター おまめくん (1歳6ヶ月)

Slide 3

Slide 3 text

3 こんな悩みはありませんか? リリース前のテスト段階で脆弱性が確認された。大規模なソースコードの変更が必要となり、納期 に間に合わせることが難しくなった・・・ リリースの延長によって機会損失を招き、ビジネス的にも大きな影響を及ぼした。 原因 ● セキュア開発導入に手を回す余裕がなかった ● セキュア開発を実施できる人員が少なかった ● セキュリティ検査をする時間的余裕がなかった ● セキュアな開発といっても何から始めればよいか分からない

Slide 4

Slide 4 text

4  その悩み解決します!

Slide 5

Slide 5 text

5 今回話すこと ● 開発における現状のセキュリティ課題 ● セキュア開発の重要性 ● セキュア開発の導入の仕方 ● Snykで出来ること

Slide 6

Slide 6 text

6 システム開発に求められること セキュリティ ● ソフトウェア製品やウェブサイトの 脆弱性は毎年多数報告 ● セキュア開発の重要性の高まり 開発スピード ● アジャイル開発 ● DevOps ● ビジネスニーズにいち早く対応

Slide 7

Slide 7 text

7 脆弱性の増加 企業や利用者をサイバー攻撃から守るためにも開発段階で セキュリティを組み込むことの重要性が高まっている IPA:ソフトウェア等の脆弱性関連情報に関する届出状況 [2022年第4四半期(10月~12月) ソフトウェア製品や ウェブサイトの脆弱性は 毎年多数報告されている

Slide 8

Slide 8 text

8 脆弱性にはどんなものがあるの?

Slide 9

Slide 9 text

9 CWE-89: SQL Injection https://owasp.org/Top10/A03_2021-Injection/

Slide 10

Slide 10 text

10 コードレベルでのSQL Injection対策例 サニタイジング ● 入力画面でのバリデーションチェック ○ データベース接続前に入力すべきでない文字が 含まれていないかどうかのチェック ● エスケープ処理 ○ 特別な機能を持つ文字を別の文字列に変える ● プリペアドステートメント ○ SQL文を最初に用意しておき、クエリ内のパラ メータの値だけを変更してクエリを実行 できる機能

Slide 11

Slide 11 text

11 コードの脆弱性を悪用された例 クレジットカード決済基盤を提供する企業が不正アクセスを受け最大46万件のカード番号 やセキュリティコード流出してしまった事件。約半年にわたり攻撃を受けており、不正利用 懸念の連絡を受けてからも、原因特定が出来ず対応に時間がかかってしまった。 要因1:管理画面のクロスサイト・スクリ プティングに関する 脆弱性を悪用 要因2:アプリケケーションに存在した SQL インジェクション脆弱性の悪用 要因3:バックドアプログラムの 設置及び攻撃 脆弱性が放置された理由 ● ソースコードレビューを実施することが社内規定で定められていなかった ● 決済システム以外の脆弱性対策は必要ないとの認識があった

Slide 12

Slide 12 text

Log4j の脆弱性 ● 攻撃者はリモートコードの実行などの攻撃を行える ● システムへの不正アクセスが可能 ● 乗っ取り ● マルウェアの侵入 脆弱性 ● Ver 2.0 ~ 2.14 ● Apache Log4j 2の特定の構成設定で発生 12 新しい脆弱性の登場の一例 https://logging.apache.org/log4j/2.x/security.html

Slide 13

Slide 13 text

13 Log4j の脆弱性 https://logging.apache.org/log4j/2.x/security.html ①特殊な文字列を含ませた httpリ クエストをサーバーに送信 Log4jの脆弱性がある 公開サーバー 攻撃者 Java App ②通信の処理結果を ログとして記録 LDAPサーバー httpサーバー ③ログ内の文字を変数化するこ とでLDAPクエリを送信 ④攻撃者のLDAPサーバーが悪意あ るファイルが配置された URLを応答 ⑤悪意あるファイルの ダウンロード/実行

Slide 14

Slide 14 text

14 よくあるセキュリティリスクの概要と対策 https://owasp.org/www-project-top-ten/ ● クロスサイト・スクリプティング ● ゼロデイアタック ● サーバーサイドリクエストフォージェリ ● ハードコードされたパスワードの使用 ● 不適切な暗号化アルゴリズム ● 適切に保護されていないクレデンシャル ● 保護されていない認証情報の保存 / 不適切な認証 ● セッションの固定化 ● ログファイルへの不適切な出力 etc.. https://owasp.org/Top10/ja/

Slide 15

Slide 15 text

15 どうやってセキュアな開発を進めるの?

Slide 16

Slide 16 text

16 DevSecOps Dev Sec Ops

Slide 17

Slide 17 text

17 DevSecOps Dev Sec Ops Development 開発 Security セキュリティ Operations 運用

Slide 18

Slide 18 text

18 今までの手法 企画 リリース ・運用 テスト 実装 設計 案件定義 開発ライフサイクルの下流工程(右側)でテストを行いリリース ● ここで脆弱性が発見された場合はソースコードへの修正が発生(手戻り) ● リリース時にセキュリティに関する考慮事項が増え、リリースに影響することも ● エンジニアの負担増

Slide 19

Slide 19 text

19 なんとかスピードを 落とさずセキュリティも担保 出来ないかな・・

Slide 20

Slide 20 text

20 Shift-Left 企画 リリース ・運用 テスト 実装 設計 案件定義 開発ライフサイクルの上流工程(左側)でテストを行う ● ソースコードの修正は早期に実装するほど対策コストがかからない ● 早期に脆弱性の検知を行うことでリリーススピードの向上が見込める ● 開発チームのセキュリティ意識向上 Shift Left

Slide 21

Slide 21 text

21 セキュリティの考慮事項と開発ライフサイクル AWS:Security For Developers – 開発者のためのセキュリティ これまでの手法 ● テストの段階からセキュリティについて 考慮し始める ● リリースのころに考慮事項が一番増え る ● 考慮漏れや手戻りの発生 ● リリース への影響 シフトレフト ● 構築段階で一番考慮事項が増える ● リリースのころにはセキュリティについて考 慮することは減少している

Slide 22

Slide 22 text

22 取り組まなきゃいけないのは分かったけど、具体 的に何をすればいいの?

Slide 23

Slide 23 text

23 脆弱性に関する情報 CVE NIST JVN IPA:安全なウェブサイトの作り方 ● 資料を参考に新しい脆弱性に関しての 情報をリサーチ ● どういった攻撃にどのような対策が有効 なのかを学ぶ

Slide 24

Slide 24 text

24 ソースコードの検証とセキュリティレビュー PR しました! レビューお願いします。 コード OK LGTM ! 次の issue アサイン! 脆弱性もなし LGTM ! すべてを人力でこなすのは負担も大きいし時間もかかる ● コードに論理的なミスはないか ● 利便性、分かりやすさなど、運用しやすいコード か ● issue の要件を満たしているか ● ライブラリに脆弱性が無いか ● コードレベルのセキュリティ対策 ● 最新の脆弱性に関してのセキュリティ対策 ● オープンソースの脆弱性がないか Security Engineer シニア Developer

Slide 25

Slide 25 text

25 脆弱性を自動で見つけて 修正出来るような製品ないかな・・・?

Slide 26

Slide 26 text

No content

Slide 27

Slide 27 text

お品書き 1. Snykとは a. Snykが提供する機能 2. Snykの活用 3. 参考情報 4. まとめ

Slide 28

Slide 28 text

お品書き 1. Snykとは a. Snykが提供する機能 2. Snykの活用 3. 参考情報 4. まとめ

Slide 29

Slide 29 text

29 Snykって何だろう

Slide 30

Slide 30 text

30 ● Snykは、安全な開発を迅速に行うことを支援。 ● コードやオープンソースとその依存関係、コンテナや IaCにおける脆弱性を見つけるだけでなく、 優先順位をつけて自動的に修正。 https://snyk.io/

Slide 31

Slide 31 text

31 世界最高水準の脆弱性データベースに基づく厳格なセキュリティ より信頼度の高いセキュリティ体制を構築可能 開発者ファーストのサービス設計 開発エンジニアが誰でも簡単に使うことが出来る 開発者の負担軽減!スピードの向上!

Slide 32

Slide 32 text

32 SnykのDeveloperSecurityの特徴 ● デベロッパーファースト(開発ワークフローへの統合) ● 業界トップレベルの脆弱性 DB ● 脆弱性の自動修正機能 (Fix PR) とPriority Score によるトリアージ ● 情報セキュリティガバナンスを支える一元的な管理機能(Report 機 能など) CI/CD パイプラインの中に脆弱性スキャンのステップを組み込 むことによって、システムの安全性の担保と迅速なソフトウェア 開発ライフサイクルを両立する DevSecOps の基盤を構築する ことができる

Slide 33

Slide 33 text

33 5つのサービス Snyk Open Source Snyk Code Snyk Container Snyk Cloud Snyk Infrastructure as Code

Slide 34

Slide 34 text

オープンソース向けの「Snyk Open Source」 ソフトウェアライフサイクルの初期段階や全体で、 プロジェクトと依存関係のあるオープンソースの既知の 脆弱性やライセンス問題を自動的に発見、 優先順位をつけて修正する 特徴 ● 高速スキャン ● 高精度 (誤検知が少ない)

Slide 35

Slide 35 text

Log4j の脆弱性 ● 攻撃者はリモートコードの実行などの攻撃を行える ● システムへの不正アクセスが可能 ● 乗っ取り ● マルウェアの侵入 脆弱性 ● Ver 2.0 ~ 2.14 ● Apache Log4j 2の特定の構成設定で発生 35 再掲)よくある脆弱性の概要と対策 https://logging.apache.org/log4j/2.x/security.html

Slide 36

Slide 36 text

https://snyk.co/ufLKa

Slide 37

Slide 37 text

自分で開発したコード向けの「Snyk Code」 開発中のコードの脆弱性を検査し、 修正する静的アプリケーションセキュリティテストツール 特徴 ● AIを使用して精度の高い結果を提供 ● 新しい脆弱性へスピーディーに対応

Slide 38

Slide 38 text

IaCコード向けの「Snyk Infrastructure as Code」 開発者やアプリケーションチームが、 デプロイする前にコード内の設定上のセキュリティ問題を 特定できるようにする。 特徴 ● IaC に潜む設定ミスの検出・修正 (+カスタマイズ)

Slide 39

Slide 39 text

コンテナ向けの「Snyk Container」 脆弱性を特定するだけでなく、 コンテナやKubernetesアプリケーションの問題をすばやく見つけ、 修正するための実用的なアドバイスを提供

Slide 40

Slide 40 text

40 再掲)コードの脆弱性を悪用された例 クレジットカード決済基盤を提供する企業が不正アクセスを受け最大46万件のカード番号 やセキュリティコード流出してしまった事件。約半年にわたり攻撃を受けており、不正利用 懸念の連絡を受けてからも、原因特定が出来ず対応に時間がかかってしまった。 要因1:管理画面のクロスサイト・スクリ プティングに関する 脆弱性を悪用 要因2:アプリケケーションに存在した SQL インジェクション脆弱性の悪用 要因3:バックドアプログラムの 設置及び攻撃 脆弱性が放置された理由 ● ソースコードレビューを実施することが社内規定で定められていなかった ● 決済システム以外の脆弱性対策は必要ないとの認識があった

Slide 41

Slide 41 text

No content

Slide 42

Slide 42 text

クラウドセキュリティツール「Snyk Cloud」 クラウドの脆弱性を発見し、 修正するために状況に応じたアプローチを採用する クラウドセキュリティツール ※2022年11月8日の SnykLaunchにて発表されました。

Slide 43

Slide 43 text

43 デベロッパーセキュリティプラットホーム Snyk Code Snyk Open Source Snyk IaC Snyk Container Snyk Cloud Snyk デベロッパーエクスペリエンス アプリケーションインテリジェンス セキュリティトレーニング セキュリティインテリジェンス 安全に開発  / 迅速な開発 / ガバナンス

Slide 44

Slide 44 text

44 Snyk なら DevSecOps サイクルでの分断を解決 開発者中心のアプローチでセキュリティチームを守備範囲を拡大 ソフトウェア開発 運用 セキュリティ対策

Slide 45

Slide 45 text

45 Snyk 活用

Slide 46

Slide 46 text

46 課題 複数のOSSツール 導入・管理に時間が かかる Snyk Snykによる 一元管理 ツールの一本化 管理や導入にかかる時間の削減

Slide 47

Slide 47 text

47 Shift-Left 企画 リリース ・運用 テスト 実装 設計 案件定義 開発ライフサイクルの上流工程(左側)でテストを行う ● ソースコードの修正は早期に実装するほど対策コストがかからない ● 早期に脆弱性の検知を行うことでリリーススピードの向上が見込める ● 開発チームのセキュリティ意識向上 Shift Left

Slide 48

Slide 48 text

新しい脆弱性へのレスポンス ● Log4jなどの新しい脆弱性はいつ発表されれるか分かり ません ➡ Snykを活用することで、   すぐに影響範囲を把握して修正できる

Slide 49

Slide 49 text

49 Snyk × AWS AWS CodePipeline との連携

Slide 50

Slide 50 text

お品書き 1. Snykとは a. Snykが提供する機能 2. Snykの活用 3. 参考情報 4. まとめ

Slide 51

Slide 51 text

51 参考情報

Slide 52

Slide 52 text

52

Slide 53

Slide 53 text

53

Slide 54

Slide 54 text

54 まとめ

Slide 55

Slide 55 text

55 まとめ Developer Security = 開発者によるセキュリティ対策 ● 開発とセキュリティ対策の両立には、 「シフトレフト」「DevSecOps」  ➡ デベロッパーファーストのSnykを!! ● 脆弱性やセキュリティ対策で活用出来るsnyk IaCやSnyk Code等の機能がある

Slide 56

Slide 56 text

56 Snykは、 Developer Securityを サポートします

Slide 57

Slide 57 text

57