📃

「セキュアなライブラリ開発 〜OpenSSFで始めるOSSセキュリティの実践と活用〜」スピーカーノート@第一回ライブラリ開発について考える会

2024/05/24に公開

スピーカーノート

「セキュアなライブラリ開発」というテーマで発表させていただきます。

よろしくお願いします。

自己紹介

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

普段は、株式会社アイリッジでモバイルアプリ開発支援キットの開発保守運用をしています。

リンク

趣味: npm ライブラリ開発

私は、趣味で ts-graphviz という npm ライブラリを開発して OSS で公開しています。

ライブラリについて簡単に説明すると、TypeScript フレンドリーな Graphviz のラッパで、グラフの可視化をしたいときなどに使うライブラリです。

マイナーですが、さまざまな OSS に依存されており、ありがたいことに毎月 200 万ダウンロード程度の規模にまで成長しました。

リンク

「依存関係の脆弱性」

自分の作ったものが使われるようになってうれしい反面、少し不安になってきました。

というのも、図のように現代のアプリケーションは多くのライブラリに支えられています。

私が開発しているような無名のライブラリでも、何かのきっかけで脆弱性を生んでしまうと、多くのシステムに影響を与えてしまう可能性があります。

ライブラリ開発だからこそセキュリティが重要かと思います。

リンク

ライブラリのセキュリティ対策の悩み

とはいえ、私もセキュリティの専門家ではありませんので、何をしてよいかわかりませんでした。

具体的には、「自分のライブラリのセキュリティは大丈夫なんだっけ?」だったり、
「セキュリティ対策って何から始めればいいんだっけ?」といった悩みがありました。

おそらく「セキュリティに関する知識がなかったため、自力で評価できない」といった状態だったと思います。

OpenSSF との出会い

調べていく中で OpenSSF と出会いました。

OpenSSF は、Open Source Security Foundation の略で、Linux Foundation 傘下として 2020 年に設立された組織です。

名前の通りオープンソースの開発、保守、使用の持続的な安全確保を容易にすることを目指して活動しており、オープンソース自体とそのサプライチェインを安全にするための取り組みを推進しています。

リンク

ts-graphviz で実施した OpenSSF セキュリティ対策 3 選

本 LT では、ts-graphviz プロジェクトで実施した OpenSSF のセキュリティ施策から、他のプロジェクトでもセキュリティ向上のきっかけとなるような施策を 3 つ紹介します。

OSS 利用者としても、今回の発表で OSS のセキュリティ対策への理解を深めることにより、よりセキュアなソフトウェア開発をできるようになると思いますので、最後までお付き合いお願いします。

1. OpenSSF ガイド

1 つ目が、OpenSSF ガイドです。

オープンソースの安全性を高めるための資料集として、さまざまなガイドラインが用意されています。

OSS 開発者・利用者向けの簡潔なガイドをはじめとし、
「npm」や「C/C++のコンパイラオプション」のような特定の技術に関するもの、
「ソースコード管理プラットフォームの設定」や「脆弱性公開のプロセス」などのニッチなものまで多くのコンテンツが用意されています。

OSS 開発者だけでなく、利用者向けにとっても参考になる内容となっています。

リンク

2. OpenSSF ベスト プラクティス バッジ

2 つ目は、OpenSSF ベストプラクティスバッチです。

OSS 開発者は、プロジェクトがベストプラクティスにしたがっていることをいくつかのセキュリティに関する質問に答えて証明できるというものです。

評価基準が公開されているので、それを満たすように取り組むことでパッケージをより安全にできます。

OSS 利用者はプロジェクトがベストプラクティスにしたがっていることを検索して評価できます。

利用したいプロジェクトが安全かを確認することにより、安全な OSS を選択できます。

リンク

3. OpenSSF スコアカード

3 つめは、OpenSSF スコアカードです。

スコアカードは、CLI ツールとして提供されており、実行するとセキュリティリスクを包括的に自動チェックして評価してくれます。

また、GitHub Actions をはじめとする CI に組み込むと、スコアがレポートとして公開され、パッケージを継続的に評価できます。

リンク

他にもさまざまなプロジェクトを推進

OpenSSF は今回紹介したプロジェクト以外にもさまざまなプロジェクトを推進しています。

まとめ

まとめです。

OpenSSF の取り組みを活用することで、自信を持って ts-graphviz のセキュリティ対策を進めることができました。

また、利用者にとって、より安全なライブラリを提供できるようになりました。

今後も OpenSSF の取り組みを活用して、よりセキュアなソフトウェアを作ろうと思います。

以上です。
ご清聴ありがとうございました。

発表外スライド

資料について 〜 もっと学びたい方のために〜

Q&A

Q. OSS 開発者は具体的などのような対策をするのですか?

たとえば、デフォルトブランチの保護や CI でのテスト、静的解析、Fuzzing、2 段階認証の設定など 多岐に渡ります

ここでは紹介しきれないため、今回紹介したベストプラクティスバッチの取得などに取り組みながら対策していくのがお勧めです。OSS 開発者でない方は、「より安全なソフトウェア開発のための簡潔なガイド」などのガイドを読むと理解が深まるかと思います。

Q. ts-graphviz プロジェクトのセキュリティ対策の取組状況・進捗はどのくらいですか?

セキュリティに関してはゴールを設定するのが難しいため道半ばだと思います。
セキュリティ対策は一度で完了するものではなく 継続的な取り組み が必要です。
たとえば、ts-graphviz プロジェクトでは、現在もセキュリティ対策を進めていますが、セキュリティは常に進化する脅威に対応するため、絶えず更新と改善をすることが必要です。
OpenSSF のガイドラインやツールを利用してセキュリティを強化していますが、完璧なセキュリティというものは存在せず、 リスクを管理し適切に対応する能力を持続的に向上させる ことが大切だと考えています。

付録:「サプライチェインの脅威」

リンク

サポートのお願い

リポジトリ

プロジェクトの開発のお手伝いやスターをつけて応援するにはこちらからリポジトリにアクセスしてください。

https://github.com/ts-graphviz/ts-graphviz

Open Collective

スポンサーになってこのプロジェクトを支援してください。

Sponsors

Sponsor になるとあなたのロゴとウェブサイトへのリンクがここに表示されます。

Backers

Backer になるとあなたのロゴとウェブサイトへのリンクがここに表示されます。

https://opencollective.com/ts-graphviz

GitHub Sponsor

https://github.com/sponsors/ts-graphviz

Discussion