[go: nahoru, domu]

この記事は Google オープンソース セキュリティ チーム、Brandon Lum、Oliver Chang による Google Security Blog の記事 "SBOM in Action: finding vulnerabilities with a Software Bill of Materials" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

昨年は、ソフトウェア部品表(Software Bills of Materials、SBOM)を採用しようという機運が業界全体で高まりました。SBOM とは、ソフトウェアをビルドするために必要なコンポーネント、ライブラリ、モジュールをすべて列挙したものです。2021 年のサイバーセキュリティに関する米国大統領令を受けて、私たちが使うソフトウェアが何でできているのかを理解する手段として、このソフトウェア部品表が注目されています。基本的な考え方は、他者が作ったものも含め、すべての部品について把握していなければ、特定のソフトウェアに含まれるリスクは判断できないというものです。SBOM への関心の高まりは、米国国立標準技術研究所(NIST)がソフトウェアの SBOM 情報の提供を必須としたセキュア ソフトウェア開発フレームワークを公開したことで、さらに押し上げられることになりました。しかし、業界で SBOM を生成して共有する手法が進展しつつある今、SBOM をどのように活用すればよいのでしょうか。

SBOM を生成するだけでは、まだ道半ばです。あるソフトウェアの SBOM が準備できたら、それを既知の脆弱性リストにマッピングして、脅威を及ぼしかねないのはどのコンポーネントかを確認する必要があります。この 2 つの情報源を結びつけることで、利用者はソフトウェアに含まれているものだけでなく、そのリスクや修正すべき問題があるかどうかも把握できます。

このブログ投稿では、大規模で重要なプロジェクトである Kubernetes から SBOM を取得し、オープンソースのツールを使ってそこに含まれる脆弱性を特定するプロセスを示します。私たちの例の成功は、完全な SBOM が作られるのを待たなくても、SBOM と一般的な脆弱性データベースとのマッピングを始められることを示しています。2 つのデータソースを結びつける際の現在の制限に対処するために SBOM 作成者が少しの更新を行うだけで、このプロセスは、平均的なソフトウェア利用者が簡単に使えるものになります。

OSV: SBOM と脆弱性を結びつける

以下の例では、Kubernetes を取り上げます。大規模プロジェクトである Kubernetes では、SBOM 情報を伝達するためのオープンな国際基準(ISO)である Software Package Data Exchange(SPDX)形式で SBOM が提供されています。SBOM を提供しているすべてのプロジェクトにも、同じ考え方が当てはまるはずです。SBOM を提供していないプロジェクトでは、Kubernetes が作成した同じ bom ツールを使って独自の SBOM を生成できます。

今回は、この SBOM を Open Source Vulnerabilities(OSV)データベースにマッピングすることにしました。このデータベースでは、オープンソース パッケージのバージョンやコミット ハッシュとマッピングできる形式で脆弱性が記述されています。OSV データベースはこの点でも優秀で、標準形式が提供され、複数のエコシステム(Python、Golang、Rust など)やデータベース(Github Advisory Database(GHSA)Global Security Database(GSD)など)からの情報が集約されています。

SBOM とデータベースを結びつけるために、SPDX の spdx-to-osv ツールを使います。このオープンソース ツールは SPDX の SBOM ドキュメントを受け取り、OSV 脆弱性データベースに照会をし、ソフトウェアで宣言されているコンポーネントに含まれる脆弱性の一覧を返します。
例 : Kubernetes の SBOM

最初の手順は、Kubernetes の SBOM をダウンロードすることです。Kubernetes の SBOM は公開されており、プロジェクト、依存関係、バージョン、ライセンスについての情報が含まれています。次に示す簡単な curl コマンドで、誰でもダウンロードできます。

# Kubernetes SPDX ソース ドキュメントをダウンロードする

$ curl -L https://sbom.k8s.io/v1.21.3/source > k8s-1.21.3-source.spdx


次の手順では、SPDX の spdx-to-osv ツールを使って Kubernetes の SBOM と OSV データベースを結びつけます。

# SPDX SBOM 情報を受け取り、それを OSV 脆弱性にマッピングする spdx-to-osv ツールを実行する

$ java -jar ./target/spdx-to-osv-0.0.4-SNAPSHOT-jar-with-dependencies.jar -I k8s-1.21.3-source.spdx -O out-k8s.1.21.3.json


# 出力された spdx-to-osv ツールの OSV 脆弱性を表示する

$ cat out-k8s.1.21.3.json

{

  "id": "GHSA-w73w-5m7g-f7qc",

  "published": "2021-05-18T21:08:21Z",

  "modified": "2021-06-28T21:32:34Z",

  "aliases": [

    "CVE-2020-26160"

  ],

  "summary": "Authorization bypass in github.com/dgrijalva/jwt-go",

  "details": "jwt-go allows attackers to bypass intended access restrictions in situations with []string{} for m[\"aud\"] (which is allowed by the specification). Because the type assertion fails, \"\" is the value of aud. This is a security problem if the JWT token is presented to a service that lacks its own audience check. There is no patch available and users of jwt-go are advised to migrate to [golang-jwt](https://github.com/golang-jwt/jwt) at version 3.2.1",

  "affected": [

    {

      "package": {

        "name": "github.com/dgrijalva/jwt-go",

        "ecosystem": "Go",

        "purl": "pkg:golang/github.com/dgrijalva/jwt-go"

      },




ツールの出力から、Kubernetes の v1.21.3 には、脆弱性 CVE-2020-26160 があることがわかります。この情報は、このソフトウェアを運用するリスクを管理するために追加のアクションが必要かどうかを判断する際に役立つ可能性があります。たとえば、ある組織が Kubernetes の v1.21.3 を使っている場合、会社のポリシーに基づいてデプロイされたソフトウェアを更新するという対策をとることが考えられます。そうすれば、この脆弱性を悪用した攻撃から組織を守ることができます。

SBOM ツールの改善提案

spdx-to-osv ツールを動作させるには、いくつかの小さな変更を行い、SBOM が提供する情報のあいまいさを排除する必要がありました。
  • 現在の bom ツールの実装では、バージョンがパッケージ名の中に含まれています(gopkg.in/square/go-jose.v2@v2.2.2)。SPDX 形式ではバージョン番号が別のフィールドに格納されているため、この接尾辞を取り除かないと、照合させることができませんでした。
  • この bom ツールで作成した SBOM では、エコシステムが特定できません。エコシステムがないと、どのライブラリやパッケージが影響を受けるかを確実に自動判定することはできません。エコシステムによって影響の有無が異なる場合、脆弱性スキャナが誤判定を引き起こす可能性があります。SBOM でライブラリやパッケージのバージョンが区別されていれば、利便性がさらに高まります。
ただし、これらは比較的小さなハードルで、手動で多少の調整をするだけで、うまくツールを実行できました。今後、このプロセスを簡単に実行できるように、次の提案により SBOM 生成ツールを改善したいと考えています。

  • SBOM ツールの作成者は、ソフトウェアに含まれるすべてのパッケージについて、Purl などの識別スキームによる参照を追加すべきです。この種の識別スキームがあれば、エコシステムを特定できるとともに、前述の接尾辞のようなパッケージ記述子の小さな揺れに対するスキームの柔軟性が向上するので、パッケージの識別も容易になります。SPDX ではこれをサポートするために、Purl の外部参照やその他のパッケージ識別スキーマの外部参照を使用しています。
SBOM の未来

SBOM の当初の目的である「ソフトウェアの脆弱性リスク管理を支援する」が実現されつつあることは明らかです。今回の例では OSV データベースを照会しましたが、近いうちに、他の脆弱性データベースに SBOM データをマッピングしたり、VEX などの新しい標準を使ったりすることもできるようになるでしょう。VEX では、ソフトウェアの脆弱性が軽減されているかどうかについての追加情報が提供されます。

SBOM の採用が広がり、ツールの改善が続けば、そう遠くないうちに、すべてのソフトウェアで SBOM のリクエストやダウンロードができるようになるでしょう。さらに、利用するソフトウェアの脆弱性も把握できるようになるかもしれません。今回の例を通して、SBOM と脆弱性データベースを結びつけるうえでの問題が解消されたときに、SBOM で何が実現できるかを垣間見ることができました。それこそ、使うソフトウェアのリスクに関する不安が軽減された新たな日常です。
 
spdx-to-osv ツールの作成者で、このブログ投稿に貢献いただいた Source Auditor 社の Gary O'Neall 氏に深く感謝いたします。


Posted by Eiji Kitamura - Developer Relations Team


9 月 14 日(火)から 4 日間にわたり Open Cloud Summit を開催いたします。
アプリを高速に開発、改善することが重要な時代になってきています。Kubernetes やサーバーレス プラットフォームを利用した、モダンなシステム構築や開発、最新の運用管理について、わかりやすくお伝えします。
そして、お客様セッションでは、デンソー、日本経済新聞社、日本総合研究所、ビザスク、ブレインパッド、みんなの銀行にご登壇いただき、現場目線での Google Cloud 活用事例をお話しいただきます。

最終日の 17 日(金)には Open Cloud Summit で取り上げられる内容に合わせたハンズオンを Qwiklabs を用いてエンジニアの解説付きで開催いたします。

ご登録いただいた方から抽選で 100 名様に Google Cloud オリジナルのサニタイザー ケースをプレゼントいたします。
ぜひ、この機会にご登録ください。


お申込み受付中 : https://goo.gle/OCS_gcbg


開催概要

名 称 Open Cloud Summit 
日 程 9 月 14 日(火)~ 9 月 16 日(木)14:00 - 18:30
    (Cloud Study Jam ハンズオン は 9 月 17 日(金) 14:00-17:00 に開催)
対 象 開発エンジニア、インフラエンジニア、運用エンジニア
参加費 無料(事前登録制)
登 録 https://goo.gle/OCS_gcbg



ピックアップ セッション
■  Anthos & GKE は何を解決するのか ~ その価値を最大化する  3 つのヒント ~
  中丸 良
  Google Cloud アプリケーション モダナイゼーション スペシャリスト

■ Cloud Ops で踏み出す Cloud Run 本番運用への第一歩
  岩成 祐樹 
  Google Cloud カスタマー エンジニア

■ Apigee で作るオープン API エコノミー
  関谷 和愛 
  Google Cloud Apigee カスタマーエンジニアリング Japan リード



Google Cloud Japan は 2020 年 1 月 30 日 (水)、開発エンジニア、インフラ エンジニア、運用エンジニア向けに「Google Cloud Anthos Day - Kubernetes を使った最新の開発アプローチを学ぶ」を開催いたします。

マイクロ サービス、DevOps、コンテナの利用やクラウドネイティブなアプリケーションの先進事例について学ぶエンジニア向けイベントです。

実際に Kubernetes 環境でアプリやサービスの開発を実践する先進企業をお迎えし、それぞれのアプリケーションのモダナイゼーションや、Kubernetes の事例についてお話しいただきます。また、深い専門知識をもつ Google Cloud のエンジニアが、Google Kubernetes Engine (GKE) をはじめとした Google Cloud Platform を利用し、どのようにアプリやサービスのコンテナ化を行うのか、開発、運用の実際にについて解説します。

Kubernetes を使った最新の開発アプローチを学ぶ絶好の機会です。マイクロ サービス、DevOps、コンテナの利用やクラウドネイティブなアプリケーションの先進事例に興味をお持ちのエンジニアの方はぜひご参加ください。


お申し込みはこちら

https://goo.gle/anthosdaysn2


◆ 開催概要 ◆

名称: Google Cloud Anthos Day
日程: 2020 年 1 月 30 日(木)
時間: 13:00 - 18:30
対象: 開発エンジニア、インフラ エンジニア、運用エンジニア
定員: 700 名
会場: ベルサール渋谷ファースト
    〒150-0011 東京都渋谷区東 1-2-20 住友不動産渋谷ファーストタワー


登壇企業(予定):
  • アサヒプロマネジメント株式会社
  • 株式会社イーシーキューブ
  • 株式会社NTTドコモ
  • 株式会社コロプラ
  • 株式会社日本経済新聞社
  • ふくおかフィナンシャルグループ
  • 株式会社プレイド
  • 株式会社ユーザベース

※ 参加費 無料、事前登録制

多数の皆様のお申し込みをお待ちしております。



Posted by Takuo Suzuki - Developer Relations Team


Google Cloud Japan は 9 月 3 日 (火)、開発エンジニア、インフラエンジニア、運用エンジニア向けに「Google Cloud Kubernetes Day」を開催いたします。

実際に Kubernetes 環境でアプリやサービスの開発を実践されている先進的な企業を迎え、それぞれのアプリケーションのモダナイゼーションや、Kubernetes の事例についてお話しいただきます。
また、深い専門知識をもつ Google Cloud のエンジニアが、Google Kubernetes Engine (GKE) をはじめとした Google Cloud Platform を利用し、どのようにアプリやサービスのコンテナ化を行うのか、開発、運用の実際について解説します。

セミナー終了後は同会場にて懇親会を開催いたします。
ぜひ、Google Cloud Kubernetes Day にご参加ください。

申し込みはこちら
https://goo.gle/k8sdaybg

◆ 開催概要 ◆
名称: Google Cloud Kubernetes Day
日程: 2019 年 9 月 3 日(火)
時間: 14:00 - 20:00 / 受付開始 13:00
対象: 開発エンジニア、インフラエンジニア、運用エンジニア
定員: 700 名
会場: ベルサール渋谷ファースト
    〒150-0011 東京都渋谷区東1-2-20 住友不動産渋谷ファーストタワー
締切: 2019 年 8 月 30 日(金)締切
※ 参加費 無料、事前登録制

◆ アジェンダ ◆
【トークセッション】
◇ 14:00 - –14:40
 『失敗しないアプリケーションモダナイゼーションの考え方 
  〜 アセスメントから開発アプローチ 〜』
  Google Cloud Japan 北瀬 公彦、村上 大河
  株式会社フリークアウト 西口 次郎 氏
  富士フイルムソフトウエア 株式会社 ムサヴィ ジャハン アバディ セイド モハマド氏

◇ 14:40 - –15:00 休憩

◇ 15:00 - –15:40
 『Anthos で実現するモダンなアプリケーション管理プラットフォーム』
  Google Cloud Japan 篠原 一徳、長谷部 光治

◇ 15:40 - –16:20
 『ユーザからみた Anthos GKE On-Prem の利用について』
  NTT 国際通信株式会社 桑山 純弥 氏

◇ 16:20 - –16:40 休憩

◇ 16:40 - –17:20
 『GCP で実現する CI / CD 最前線』
  Google Cloud Japan 岩成 祐樹

◇ 17:20 - –18:00
 『kubemci を用いたカナリヤリリース 
  〜 グローバルチームにおける GKE の監視事例 〜』
  株式会社LOB 片平 健太郎 氏、高橋 辰徳 氏

【懇親会】
◇ 18:10–19:50


Posted by Takuo Suzuki - Developer Relations Team