snykエクステンションをVScodeに導入してSASTを利用したら思いの他便利だったので残しておきます。
1.まずアカウントを登録します。
以下に飛んで一番左の「FREE」をクリックします。
いくつか候補が出るので自分の好きなアカウントタイプを選んで作成します。
(特に沢山広告が来るという事も無いのでどのアカウントでも大丈夫かと)
2.アカウントを作成したらVScodeにエクテンションを追加します。
その前に自分がスキャンしたい言語をサポートしているか確認しましょう。
2021年12月現在以下の言語に対応しているようです。
aspx, CS, ejs, .es, .es6, .htm, .html, .js, .jsx, .ts, .tsx, .vue, .py, .java.
VScodeへのエクステンションの追加はVScode上から「snyk」を検索して、インストールという通常の手順ですがもし分からなければ以下のサイトを参考にして下さい。
先程作成したアカウントを登録して早速使い始めてみましょう。
自分は仕事柄、脆弱性のあるサンプルみたいな物を書く事が多いです。今回はPython-FlaskのサンプルをSnykでスキャンしてみました。
VSCodeのようなIDEを使っている人はコードを書いて、「ctrl+s」で保存みたいな事を良くやっていると思いますが、この保存の都度snykはスキャンをしてくれます。
以下の通り、きちんと?思い通りの脆弱性を指摘してくれました。(46行目:SQLインジェクション)
他にも「Debugモードが有効になっているよ」という指摘もしてくれています。
ファイルごとにドリルダウンされているのが分かりやすいですね。
ちなみに左のパネルの「H」「M」は脆弱性の深刻度を表しているようです。「High」「Middle」かな。
他のSASTツールを使った事がある方は分かると思いますが、Request値を受け取ってからsink(この場合はexecute)までの処理経路の表示や移動も行えます。(「execute」をマウスオーバーする)
snykは脆弱性の指摘に特化したツールだと思っていたのですが、「CODE SECURITY」の他に「CODE QUALITY」のブロックもあってDBコネクションのクローズし忘れなんかも指摘してくれます。(このサンプルは可能な限り雑なコードを書いていたので色々出てます(笑)
snykのサーバーと通信出来る環境があれば、解析エンジン等のセットアップも必要無く、さっと書いて保存したら指摘してくれて、直したら「Ctrl+s」で保存して直ったかを確認出来る手軽さは他のツールには無い物だと思いました。
上記の他にGithubのリポと連携させて、コミットしたコードをスキャンする事も出来るので、CIに組み入れて自動化というような典型的な使い方も出来ます。あとsnykはIAC(Infrastructure As Code)のセキュリティ機能も持っていて、Dockerファイルをスキャンしてファイルの脆弱性やコンテナを構成するコンポーネントの脆弱性も指摘してくれます。今回のサンプルではカスタムコードからOSSを利用していないので指摘はあませんが、OSSの脆弱性を指摘する機能もあります。以下試しにDockerファイルをGitHubにアップロードしてスキャンしてみました。
指摘内容は検証していませんが、元々脆弱性のあるコンテナをスキャンしたのでしっかり指摘してくれているように見えます。
またスキャンエンジンをインストールする必要が無いのでvscode.devで使えるエクテンションがリリースされれば、マシンパワーが無くても、いつでもどこでもコードを編集してスキャンなんて事が簡単にできそうな予感がします。(Chromebookとか)
ちょっとこういうのはワクワクします。
時間があれば他の機能もレポートしたいですね。
それでは。