インタビュー安全なアプリケーション開発の課題について Snyk の創設者兼社長である Guy Podjarny 氏にインタビューしたところ、彼は次のように語りました。「開発者がセキュリティの専門家になることを前提としたソリューションは、どれも失敗する運命にあります。」
Snykは2015年7月に設立されました。なぜこの名前なのでしょうか?「元々のアイデアは、情報をこっそりリポジトリに持ち出して、それに関する洞察を得るというものでした。それで、クールな若者のようにayと綴ろうと思ったんです。…Googleで調べたら、So Now You Knowの略だと分かりました」と彼は語りました。
開発者とセキュアコードに関するポジャーニー氏の立場は、それほど驚くべきものではない。彼の会社はプログラマー向けのセキュリティツールを提供しているからだ。「Snykの核となるのは、開発者ファーストのセキュリティという概念です。それが私たちの信条であり、存在意義なのです」とポジャーニー氏は述べた。Snykは、オープンソースソフトウェアライブラリで発見されたセキュリティ問題を記録する脆弱性データベースを運用している。
「私たちが最初に取り組んだ問題はオープンソースのセキュリティでした。オープンソースのセキュリティには、どのような脆弱性が存在するかという点においてギャップがあります。CVEシステムは、アプライアンスや大企業向けにユーザーに欠陥を通知するために設計されていますが、オープンソースのメンテナーコミュニティにはそれに対処する能力がありません」とポジャーニー氏は述べた。オープンソースプロジェクトで脆弱性が発見されると、修正され、リリースノートに記載された後、「GitHubの世界に消えてしまう」と彼は語った。
「私たちは、ソーシャル、研究、オープンソース活動から流れる大量の情報に耳を傾け、それをアナリストに送り、アナリストが脆弱性を整理して必要な情報を追加します。私たちの仕事は、何が存在しているかを発見することと、一般的にセキュリティの専門家ではない開発者を支援するためのセキュリティの専門知識の両方です。」
Snyk脆弱性データベースのエントリ
「この種のサービスは必要です」とポジャーニー氏は続けた。「オープンソースコミュニティは、データ資産のキュレーションと継続的なメンテナンスが得意ではありません。オペレーティングシステムの分野でも、CanonicalやRed Hatがパッチや修正プログラムのキュレーションを行っています。私たちもアプリケーションの依存関係について同様のことを行っています。」
Snykはクラウドソーシングではなくキュレーションのアプローチを採用しているとポジャーニー氏は述べた。「消費者は、メンテナーと協力しながら、何が脆弱性で何がそうでないかについて、私たちの専門家の意見を求めていると考えています。」
ポジャーニー氏によると、データベースの作業には約40人が携わっているが、手作業と自動化を組み合わせた処理を行っているという。「検査対象に関するルールを構築している者もいれば、アナリストの効率を高める技術を開発している者もいます」とポジャーニー氏は述べた。「Snyk Codeに搭載されている独自の脆弱性検出ソフトウェアを使って、情報収集に役立てています。」
Snykコード
Snyk Codeは、同社の最新の主要サービスであり、昨年10月のDeepCodeの買収によって誕生しました。DeepCodeは「AIを活用したセマンティックコード解析」に特化しています。
このサービスには、ファイルが保存されるたびにコードの脆弱性をスキャンしたり、Git リポジトリを監視したり、CI/CD プロセスの一部として使用したりするなど、さまざまな機能があります。
開発者にとっての問題の一つは、潜在的な脆弱性に関する膨大なデータの中から、自社のアプリケーションにおいて重要な脆弱性を的確に特定することです。そこで、Snyk Code はこの問題の解決を支援するために設計されました。
「セキュリティとはリスク管理です」とポジャーニー氏は述べた。「まずはリスクの存在を認識することから始めなければなりません。脆弱性について何も言わないのは簡単ですが、それはセキュリティを確保するための最善の方法ではありません。脆弱性が明らかになれば、セキュリティインテリジェンス、アプリケーションインテリジェンス、そして開発者の経験を組み合わせたソリューションが生まれます。」
- Google の新しい依存関係マッピング ツールを使用して、プロジェクトに潜むセキュリティ上の欠陥を見つける方法
- Google PlayがAndroidアプリに警告:不正なJavaScript、Python、Luaの使用は禁止
- Docker Desktop が大企業向けに無料提供終了:新しい「ビジネス」サブスクリプションが登場
- 2019年に追跡された18,000件の脆弱性のうち、実際に悪用されたのはわずか2.6%でした。
コンテキスト化が鍵だと彼は語った。「私たちは、コードがこの脆弱性を悪用しているかどうかを確認しています。現在、コードが脆弱になるような設定になっているかどうかを評価する機能を構築しています。コンテナやコード分析といったインフラストラクチャ分析機能を導入し、さらに精度を高めています。Kubernetesの構成を調べて、公開されているシステムに脆弱性があるかどうかを判断できる機能はすでに提供しています」と彼は述べた。
また、修復を容易にすることにも重点が置かれており、修正を含んだプル リクエストが生成されることもあります。
「ほとんどの開発者は、セキュリティはコード品質の一部であることに同意しています。問題は、セキュリティが本来目に見えないものであり、フィードバックループを持たないことです。深刻な被害が出るまでは、セキュリティは問題になりません。セキュリティソリューションの価値の一つは、セキュリティの可視性を高めることにあります。同時に、セキュリティに慣れてしまうような、もはや日常的な作業になってしまわないようにすることです」とポジャーニー氏は述べた。
破産に至るまで安全が保証されます
では、開発者はSnyk Codeやそれに類似したものを使ってCI/CDを構成し、脆弱性が検出されたコードをデプロイできないようにすべきなのでしょうか?「システムによって必要なセキュリティレベルは異なります。世界中のほとんどの人が使用しているオペレーティングシステムのようなシステムでは、セキュリティ基準は非常に高くなります。しかし、ほとんどのアプリケーションでは、それほど高い基準ではありません」と彼は述べています。
技術的には、重大度の高いものでも低いものでも、特定された欠陥を全て拒否することは非常に現実的です。しかし実際には、ほとんどの企業にとって正しい判断ではありません。倒産するまでずっと安全でいられる可能性もあります。競争力も維持しなければなりません。重要なのは、こうしたリスクを無視するのではなく、いつ注意を払うべきリスクで、いつはそのまま進めてよいのかを賢明に判断することです。
「Snykの役割は、開発を安全に、そして高速に行うことを容易にすることです。」Snykは、IDEの邪魔になるのではなく、スペルチェッカーのように機能するはずだと彼は説明した。
Snyk Code と他のアプローチの違いは何でしょうか? 「歴史的に、静的解析ツールはプログラムが取る可能性のあるあらゆるパスを理解しようとしてきました」と Podjarny 氏は言います。
「Snyk Codeはよりデータ重視のアプローチを採用し、機械学習を適用することで、あらゆるファイルを分析し、知識を蓄積し、そのデータを処理することでより賢くなります。これにより、前世代よりも劇的に高速化され、実際に使用可能になりました」と彼は付け加えた。
過去の世代はルールと理解に重点を置いていましたが、Snyk CodeはGitHub上のすべてのコード履歴を含む、参照可能なすべてのコードを活用して、コードの流れと修正方法を理解します。この機械学習は、静的解析を現代のソフトウェア開発のペースに合わせて拡張します。
「これまで、SAST(静的解析セキュリティテスト)は、セキュリティツールが開発者にとっていかにひどいものであり、その信号対雑音比がどれほど低いかを示す典型的な例でした。Snyk Codeはそれを変えます」と彼は主張しました。また、このツールはビルドプロセスの一部である必要はなく、ソースコード上で動作する点も強調しました。「それが開発者の働き方だからです」
プログラマーはコードを強化するために何ができるでしょうか?
ツールはさておき、開発者は作業のセキュリティを向上させるために何ができるでしょうか?「セキュリティについて意識し、日常の会話に組み込む必要があります」とPodjarny氏は言います。「どのようなセキュリティ指標を選択するにしても、毎日のスタンドアップミーティングで議論し、主要なKPIの一部に組み込んでください。それは人から、そして注意を払うことから始まるのです。」
「実践的な観点から言えば、取得する必要があるデータと権限の最小限のセットと最大限のものを理解し始める必要があります。」
マイクロサービスアーキテクチャにおいて、「安全なシステムを実現する唯一の方法は、各パーツの機能を最小限に抑えることです。開発者は本来、最大限の機能を実現しようとします。権限は、誰かがアスタリスクを付けて終わりにするまで、どんどん拡張され続けるものの一つです。」
ポジャーニー氏は、コード速度の高さも要因の一つだと述べた。「すでに多くのデータがあり、速度は適切に適用されればセキュリティを実際に向上させることを示しています。ただし、速度に加えて可視性も必要だということです。個人的には、適切な認識を高めつつ、ビルドを実際に壊すようなことは比較的少ない、継続的なパイプラインを推奨します。」
Linux だけでなく他の分野でも、セキュリティ専門家の不足が世界的な問題を引き起こしていると Google が主張するのは正しいでしょうか?
世界ではセキュリティ人材が絶対的に不足しており、セキュリティ関連の仕事の約50%が未充足のままである。
「世界ではセキュリティ人材が絶対的に不足しており、セキュリティ関連の求人の約50%が未充足のままです」とポジャーニー氏は述べた。「セキュリティは奥深い専門知識が必要であり、簡単に習得できるものではありません。開発者がセキュリティの専門家になることを前提としたソリューションは、必ず失敗するでしょう。」
開発者は人間ですから、あらゆることをしなければなりません。この問題は現実のものであり、解決策は、ツールや、セキュリティ上の懸念事項を解消するより安全なプラットフォームなど、より多くの手段を講じたセキュリティ計画を策定することだと考えています。例えば、モバイルセキュリティの世界では、デスクトップOSよりも本質的に安全なプラットフォームやOSが構築されています。クラウドも同様に、セキュリティを再考する機会を提供します。
Visual Studio Code における Snyk Code の提案
Visual Studio Codeの拡張機能を使って、Snyk Codeを簡単に調べてみました。Snyk CodeはコードをSnykにアップロードする点が懸念材料ですが、こちらのドキュメント[PDF]は開発者の安心材料として最大限に活用されています。しかしながら、パフォーマンスは良好で、発見された問題の数もそれほど多くなく、分かりやすく説明されていることが分かりました。
「この脆弱性は1398のプロジェクトによって修正されました。3つの修正例を以下に示します」と「Snykの提案」には記載されています。第一印象は、確かに開発者にとって使いやすいというものです。脆弱なコードを完全に修正できるのでしょうか?可能性は低いですが、それでも改善される可能性はあります。®