パッケージの脆弱性管理サービスVeetaをリリースしました

以前より個人で開発していたパッケージ脆弱性管理サービスVeetaをリリースしました。

現状はAWSで個人資金にて運用しているため、1オーガニゼーション5台までの制限がありますが、無料で利用できます

Veetaのアーキテクチャは下記の通りです。

利用方法は、ドキュメントにも記載がありますが、以下の手順ですぐに始めることができます。

  1. オーガニゼーションを登録する
  2. 認証トークンを発行する
  3. クライアントをインストールし、認証トークンを設定する

この作業を行うだけで、クライアントであるVazがサーバ内のパッケージ情報を取得し、Veetaにアップロードし、自動的にスキャンしてくれます。

スキャンした結果はVeetaのコンソール上で確認することができ、脆弱性の詳細を確認したり、無視することができます。また、脆弱性の有無はレポート機能でメールやSlackに指定した時間に通知することが可能です。

解決したかった課題

以前よりペパボでは一部でVulsを利用して脆弱性の管理を行っておったのですが、Vulsには以下の課題がありました。

  1. スキャンユーザーでのSSHログイン設定が必要、もしくはローカルスキャンの環境作成が必要、ディープスキャンを行うには特権が必要
  2. Vulsはパッケージのドキュメント(changelog)をパースして、 CVE-xxxxxxxの文字列を拾っているだけで、必ずしも脆弱性の有無をチェックしているわけではない

追記
vulsはv4.0でバージョンでの比較にも対応しているようです!@kotakanbeさん有難うございます!

メール画像
引用元: https://github.com/future-architect/vuls/blob/master/README.ja.md#fast-scan

特に、複数サービスを運用するペパボではサーバの権限管理の観点から共有ユーザーに特権を与えるような運用は厳しい現状がありました。それを解消すべく、今回はクライアントサーバ方式を採用しています。

またVeetaのスキャン方式は取得したパッケージのバージョンとCVEデータベースの情報を全件チェックしているため、Vulsと比べて脆弱性の検知の精度が高い設計です。まだサービス導入期なのでサーバ台数は比較的少ない状態ですが、今後の利用者増加に合わせてスケールアウト可能な構成にしています。

追記
VulsはOVALの対応も行われていたため、いま時点ではVulsのほうが検出精度が高い場合が多いです。この機能はVeetaでも実装したいと思います。

余談的には極めて個人的な話ではあるのですが、ペパボではかねてより広報している通り、社内のサーバはOpenStackで構築された、プライベートクラウドNyahで運用しています。この場合、OpenStackに触れ合うことでクラウドサービスが何たるかを学ぶことはできるのですが、AWSが提供しているマネージドサービスや、アーキテクチャに対する知見を得にくい環境であるということが言えます。その点においてペパボのホスティング事業部の技術責任者の立場として非常に危機感を感じておったため、自己学習のために自分でサービスを立ち上げるという選択をしました。そして、そのバックエンドにAWSを利用することで学習機会を強制的に作ったという経緯です。

やっていきたいこと

パッケージ情報が集まり、どの脆弱性を人々が対応し、対応しないのかということが見えてくると思うので、そこにマシーンラーニングや、統計のロジックを入れて脆弱性の対応可否をある程度自動的に判別できるようにすることや、人々が脆弱性対応で疲弊しないような何かを考えていけたらよいなとボヤっと考えていますが、まだまだ足りない機能もたくさんあるので、息を切らさずやっていきたいなと思っています。内部の実装などは11/08に自社イベント、11/11にOFFTOKYOで話しますのでぜひ会場に足を運んでいただければと思います。

最後に

正直どれくらい世間のユーザーに利用されるか見えていないところではありますが、今後もサービスを育てながら運用してみたいなという気持ちがあります。運用資金など全く考えていないので、そのあたりはこれからというところではありますが、ぜひ皆さん利用していただいてフィードバックいただけたら嬉しいです!