最近話題のセキュリティの問題、 Snykで解決！

最近は以下のようなセキュリティの問題が取り上げられることが多くあります。

- Log4Shell, Spring4Shellなどの**OSSライブラリの脆弱性の問題**

- **SQLインジェクション**などによるクレジットカード情報の流出

- **サプライチェーンのセキュリティ問題**、**SBOM**

SQLインジェクションなどの脆弱性は以前から多くあるセキュリティ上の問題でしたが、最近またニュースとしてみることが増えてきているように思われます。

加えて、OSSライブラリの脆弱性の問題やサプライチェーンのセキュリティ問題・SBOMといったものは最近になって注目されるようになったものです。

これらの最近話題のセキュリティの問題を守ろうとすると色々なサービスを組み合わせて、複雑な運用がまた必要になる・・・といったことが考えられますが、実は**Snykだけでこれらの問題を解決することができます！**

## Log4Shell, Spring4ShellなどのOSSライブラリの脆弱性の問題への対策

2021年12月10日に公開されたApache Log4jの脆弱性、通称Log4Shellが大きく話題になりました。

https://qiita.com/SnykSec/items/fccc10bd25cd5de0b56f

また、2022年3月30日に公開されたSpringフレームワークの脆弱性、Spring4Shellも続けて話題となりました。

https://qiita.com/SnykSec/items/e612511db7adc4537ab9

これらの問題の共通点は、**自分たちが開発するときに書いたコード(カスタムコード)の問題ではなく、開発時に組み込んだOSSのライブラリやフレームワークに含まれる脆弱性による問題**であるという点です。

そのため、**開発時にセキュリティに気をつけてコードを書く、セキュリティのテストをすることでは防ぐことができないタイプの問題**になります。

また、**脆弱性が公開されるまでは気付くことができない**ので、脆弱性が公開された2021年12月10日や2022年3月30日時点で急に大きな問題があることを突きつけられ、対応が必要になります。

更に悪いことに、警察庁からの報告によると**脆弱性が公開された2021年12月10日以降からすぐに脆弱性を狙った攻撃が観測**されているそうです。

https://www.npa.go.jp/cyberpolice/important/2021/202112141.html

このような**開発時に組み込んだOSSのライブラリやフレームワークに含まれる脆弱性が自分たちの開発物にも影響を与えるかどうかを確認できるサービス**が「**Snyk Open Source**」になります。

https://snyk.io/product/open-source-security-management/

Snykは無料でトライアルすることができますので、実際にLog4Shellの脆弱性を含むGitHubのプロジェクトをスキャンしてみたところ、以下のように検出することができました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2739888/2c777ea1-27d6-d57d-c475-6b58ad493228.png)

**アカウント作成からスキャンまでは5分もかからずできた**のでとても**導入が簡単**だと感じました。

また、スクショの右下の「**Fix this vulnerability**」のボタンから**簡単に脆弱性を修正するPRを作成できる**ので、こちらもとてもスムーズです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2739888/4815498e-5fea-53eb-5f64-962c3d0b582a.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2739888/3bea24f7-ed01-fb3f-e447-8f076f9e52b0.png)

このように、**最近話題のOSSのライブラリやフレームワークに含まれる脆弱性の確認から修正までを「Snyk Open Source」で簡単に解決**することができました。

## SQLインジェクションなどの脆弱性への対策

SQLインジェクションなどの**古くから指摘されているセキュリティの問題がカード情報の流出などの大きなセキュリティインシデントに繋がるケースも増えてきています**。

このような問題は、セキュリティのテストや外部の診断などで気がつくことが多いですが、**開発が終わった後に行うテストや診断の場合では修正するコストが高く**、**修正が後回しにされてしまう**ことがあります。

Snykには「**Snyk Code**」という**静的アプリケーションセキュリティテスト**(**SAST**)サービスがあり、これを使うことで**開発時にセキュリティのテストをリアルタイムに行うことができる**ので、完成してからテストして修正するという**手戻りコストを下げる**ことができます。

実際に、 OWASPのjuice shopと呼ばれる脆弱性を含むサンプルアプリをスキャンしたところ、大量の脆弱性のアラートが出てきました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2739888/37b0db38-0324-5ef7-f339-c1125d535857.png)

こちらも先ほどのSnyk Open Sourceと同様に**GitHubのプロジェクトを連携することで特に追加の設定などなしで簡単に行うことができました**。

スキャンの結果が出るまでには数分ほどかかっているように感じました。

詳細ページより具体的にどの部分にどのようなセキュリティの問題があるのか確認することができます。

左側の**フィルターよりSeverityで絞り込み**や、Vulnerability Typesより、**SQLインジェクションなどの脆弱性のタイプでの絞り込み**も行うことができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2739888/a5710625-1062-eea2-20d4-1f8131742ed7.png)

**大量に検出されても、絞り込み機能で気になる部分だけ見つけることができる**のでよさそうです。

また、以下のように個別に**詳細な脆弱性の説明、修正方法も書かれているのでとても良心的**です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2739888/678e1a7b-905e-e71c-8346-b20ea234f38e.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2739888/1e2ddefb-5010-9d0b-c405-72077cf3865d.png)


今回は利用していませんが**IDEのプラグインも提供**されているので、**開発しながらIDEの画面上で確認・修正ができる**のも便利なように思います。

**自分たちが開発するときに書いたコード(カスタムコード)に含まれるSQLインジェクションなどの脆弱性は開発時に確認・修正できる「Snyk Code」で解決**できます。

## サプライチェーンのセキュリティ問題、SBOMへの対応

2021年05月12日に**バイデン大統領がサイバーセキュリティ強化のための大統領令に署名**し、その中で**サプライチェーンのセキュリティ強化やSBOM(Software Bill of Materials)について触れられていることが話題**になりました。

https://www.jetro.go.jp/biznews/2021/05/35e8aca1614f6fe5.html

SBOMは、ソフトウェアの中に使われている部品のような役割のOSSやソフトウェアを列挙したものです。

SBOMの情報を使うことでソフトウェアにどんな脆弱性があるのか確認でき、またGPL汚染などのライセンス問題の解決にも役立てることが期待されています。

Snykでは、SBOMの国際標準とされているSPDXと呼ばれるフォーマットで出力する機能は提供されていませんが、「**Snyk CLI**」と外部提供されている「**snyk2spdx**」を利用することで**SPDX形式での出力が可能**となっています。

https://www.npmjs.com/package/snyk2spdx

今回は、Snyk CLIまで利用しなかったため、具体的にどのような出力になるのかまで確認できていません。

外部ツールが必要になるため、簡単に確認ができるという状態では現状ないため、今後ボタン一つで出力できるとSnyk Open SourceやSnyk Codeのように素晴らしいユーザー体験になると感じました。

また、 Snyk APIを利用してもSBOMに必要な情報を収集することもできるようです。

https://snyk.io/blog/building-sbom-open-source-supply-chain-security/

APIには豊富な機能とドキュメントも充実しているので開発者としてはこちらも嬉しいですね。

https://snyk.docs.apiary.io/

## 最近話題のセキュリティの問題、 Snykで解決！

初めてSnykを利用してみましたが、**ユーザー登録してから実際に利用するまでの流れはとても簡単で初期導入も簡単にできそう**に感じられました。

**ドキュメントやブログなどのコンテンツも豊富**なため**困ったときに調べれば対応できそう**と思えるものになっていました。

現状は**サービス・ドキュメント共に英語という点が利用者にとって一番のハードル**だと思います。

(あとは開発メンバーの数や利用したいサービス毎に価格が異なるので会社としてどこまでコストがかけられるのか)

最近話題のセキュリティの問題の3つを例にあげましたが、**Snyk一つのサービスで完結できる点は利用者としてとても良い**と思います。

まだまだ多くの機能が追加されたり、他のサービスとの連携が追加されているように感じられるので**今後の成長が楽しみなサービス**です。