Upgrade to Pro — share decks privately, control downloads, hide ads and more …

セキュアなライブラリ開発〜 OpenSSFで始めるOSSセキュリティの実践と活用〜

セキュアなライブラリ開発〜 OpenSSFで始めるOSSセキュリティの実践と活用〜

スライド内のリンクにアクセスしたい方はGoogle スライド版 をご利用ください。

概要

現代社会のITシステムはOSSに広く依存しており、ライブラリ開発も例外ではありません。
OSSを活用することでコスト削減や迅速な開発といったメリットを享受できますが、一方で脆弱性の影響は広範囲に及びます。
特にライブラリ開発は多くのアプリケーションに影響を与えるため、依存するOSSのセキュリティ対策が重要です。

また、OSSプロジェクトのセキュリティ対策は、そのプロジェクトの健全性を示す重要な要素でもあります。
私の作成しているOSSライブラリ( ts-graphviz )で行ったセキュリティ向上の取り組みをもとに、 Open Source Security Foundation(OpenSSF) が推進するセキュリティ向上の取り組みをいくつかご紹介します。

備考

2024年5月24日に実施した「Nextbeat Tech Bar:第一回ライブラリ開発について考える会」 のLTで使用されたスライドです。

発表で使用したスピーカーノートはこちらからアクセスできます。

Yuki Yamazaki

May 24, 2024
Tweet

More Decks by Yuki Yamazaki

Other Decks in Technology

Transcript

  1. 自己紹介 Yamazki Yuki と申します。よろしくおねがいします。 GitHub や Twitter では kamiazya というアカウント名で活動しています。

    普段は、株式会社アイリッジでモバイルアプリ開発支援キットの開発保守運用をしています。 - https://github.com/kamiazya - https://x.com/kamiazya
  2. 趣味: npm ライブラリ開発 私は、趣味で ts-graphviz という npm ライブラリを開発して OSS で公開しています。

    ライブラリについて簡単に説明すると、TypeScript フレンドリーな Graphviz のラッパで、グラフの可視化をしたいときなどに使うライブラリです。 マイナーですが、さまざまな OSS に依存されており、ありがたいことに毎月 200 万ダウンロード程度の規模にまで成長しました。 - https://github.com/ts-graphviz/ts-graphviz - https://opencollective.com/ts-graphviz - https://www.npmjs.com/package/ts-graphviz - https://www.typescriptlang.org/ - https://graphviz.gitlab.io/
  3. OpenSSF との出会い 調べていく中で OpenSSF と出会いました。 OpenSSF は、Open Source Security Foundation

    の略で、Linux Foundation 傘下として 2020 年に設立された組織です。 名前の通りオープンソースの開発、保守、使用の持続的な安全確保を容易にすることを目指して活動しており、オープンソース自体とそのサプライチェインを安全にするための取り組みを推進しています。 - https://openssf.org/ - https://github.com/ossf - https://x.com/openssf - https://www.linuxfoundation.jp/
  4. ts-graphviz で実施した OpenSSF セキュリティ対策 3 選 本 LT では、ts-graphviz プロジェクトで実施した

    OpenSSF のセキュリティ施策から、他のプロジェクトでもセキュリティ向上のきっかけとなるような施策を 3 つ紹介します。 OSS 利用者としても、今回の発表で OSS のセキュリティ対策への理解を深めることにより、よりセキュアなソフトウェア開発をできるようになると思いますので、最後までお付き合いお願いします。
  5. 1. OpenSSF ガイド 1 つ目が、OpenSSF ガイドです。 オープンソースの安全性を高めるための資料集として、さまざまなガイドラインが用意されています。 OSS 開発者・利用者向けの簡潔なガイドをはじめとし、 「npm」や「C/C++のコンパイラオプション」のような特定の技術に関するもの、

    「ソースコード管理プラットフォームの設定」や「脆弱性公開のプロセス」などのニッチなものまで多くのコンテンツが用意されています。 OSS 開発者だけでなく、利用者向けにとっても参考になる内容となっています。 - https://www.linuxfoundation.jp/resources/openssf-guides-jp - https://github.com/ossf/wg-best-practices-os-developers - https://www.linuxfoundation.jp/concise-guide-for-developing-more-secure-software-jp/ - https://www.linuxfoundation.jp/package-manager-best-practices-jp/ - https://www.linuxfoundation.jp/scm-bestpractices-jp/ - https://www.linuxfoundation.jp/maintainer-guide-jp/ - https://www.linuxfoundation.jp/concise-guide-for-evaluating-open-source-software-jp/ - https://www.linuxfoundation.jp/openssf/2023/12/compiler-options-hardening-guide-for-c-and-cpp-jp - https://repos.openssf.org/principles-for-package-repository-security - https://www.linuxfoundation.jp/finder-guide-jp/ - https://repos.openssf.org/principles-for-package-repository-security
  6. 2. OpenSSF ベスト プラクティス バッジ1 2 つ目は、OpenSSF ベストプラクティスバッチです。 OSS 開発者は、プロジェクトがベストプラクティスにしたがっていることをいくつかのセキュリティに関する質問に答えて証明できるというものです。

    評価基準が公開されているので、それを満たすように取り組むことでパッケージをより安全にできます。 - https://www.bestpractices.dev/ja - https://github.com/coreinfrastructure/best-practices-badge - https://www.bestpractices.dev/ja/criteria/0#0.know_secure_design - https://www.bestpractices.dev/ja/projects/8396
  7. 2. OpenSSF ベスト プラクティス バッジ2 OSS 利用者はプロジェクトがベストプラクティスにしたがっていることを検索して評価できます。 利用したいプロジェクトが安全かを確認することにより、安全な OSS を選択できます。

    - https://www.bestpractices.dev/ja - https://github.com/coreinfrastructure/best-practices-badge - https://www.bestpractices.dev/ja/criteria/0#0.know_secure_design - https://www.bestpractices.dev/ja/projects/8396
  8. 3. OpenSSF スコアカード 3 つめは、OpenSSF スコアカードです。 スコアカードは、CLI ツールとして提供されており、実行するとセキュリティリスクを包括的に自動チェックして評価してくれます。 また、GitHub Actions

    をはじめとする CI に組み込むと、スコアがレポートとして公開され、パッケージを継続的に評価できます。 - https://securityscorecards.dev/ - https://github.com/ossf/scorecard - https://scorecard.dev/viewer/?uri=github.com/ts-graphviz/ts-graphviz
  9. Q&A Q. OSS開発者は具体的などのような対策をするのですか? A. 例えば、デフォルトブランチの保護や CIでのテスト、静的解析、Fuzzing、2段階認証の設定など多岐に渡 ります。 ここでは紹介しきれないため、今回紹介した ベストプラクティスバッチの取得などに取り組みながら対策し ていくのがおすすめです。OSS開発者でない方は、「より安全なソフトウェア開発のための簡潔なガイド

    」 などのガイドを読むと理解が深まるかと思います。 Q. ts-graphvizプロジェクトのセキュリティ対策の取組状況・進捗はどのくらいですか? A. セキュリティに関してはゴールを設定するのが難しいため道半ばだと思います。 セキュリティ対策は一度で完了するものではなく 継続的な取り組みが必要 です。 例えば、ts-graphvizプロジェクトでは、現在もセキュリティ対策を進めていますが、セキュリティは常に進 化する脅威に対応するため、絶えず更新と改善をすることが必要です。 OpenSSFのガイドラインやツールを利用してセキュリティを強化していますが、完璧なセキュリティというも のは存在せず、リスクを管理し適切に対応する能力を持続的に向上させる ことが大切だと考えています。
  10. 付録:「サプライチェーンの脅威」 ソース パッケージ ビルド 依存する ソフトウェア レビューの迂回 開発者 利用者 侵害された

    依存関係を使用 ソースリポジトリの侵害 ソースの 改ざん パッケージの 改ざん パッケージの 乗っ取り/改ざん (侵害されたパッケージを使用する ) ソースの脅威 ビルド・配布の脅威 依存の脅威 ビルドプロセスの 侵害 パッケージレジストリの侵害 参考: SLSA 1.0 (Supply chain threats) https://slsa.dev/spec/v1.0/threats-overview セキュリティに直接関係ないようなソフトウェアでも、サプライチェーンを含めると利用者に届くまでに 様々な脅威がある。プロセスとしてもソフトウェアを保護することが大切。 18 bit.ly/secure-lib-20240524