Issue #2: Software Supply Chain Security 周辺の動向を多めに追う
1 月第 2 週は Log4j の一件や faker.js の一件など、引き続き OSS エコシステムに関する話題が席巻していた印象のある週でした。そういうわけで Issue #2 では Supply Chain Security に関する世の中の動向を多めに紹介していきたいと思います。
Written by Takashi Yoneuchi
Published at January 16, 2022
Share this article with:
こんにちは、もっと楽にセキュアなプロダクト開発/運用を実現できるようにしたい米内(@lmt_swallow)です。個人的には 1 月第 2 週は、Log4j の一件や faker.js の一件など、OSS エコシステムに関する話題が席巻していた印象のある週でした。そういうわけで、Issue #2 では Supply Chain Security に関する世の中の動向をやや多めに紹介していきたいと思います。
📶 Tech
⚒️ Application Security
Research Report “Exploiting URL Parsing Confusion” by Claroty and Snyk
Claroty のリサーチチーム(Team82)と Snyk のリサーチチームが合同で、URL パーサーの実装やそれを利用する処理への攻撃手法に関するリサーチペーパーを公開しています。
Exploiting URL Parsing Confusion Vulnerabilities
ざっと要約すると、このリサーチペーパーは (1) URL 処理に関する脆弱性が生まれてしまう 2 つの背景と (2) URL パーサの実装間に存在する inconsistency の類型 5 つ、そして (3) URL を取り扱う開発者に対する Recommendation を、具体的かつ詳細なリサーチに基づいて提示するものです:
- URL 処理に関する脆弱性が生まれてしまう 2 つの背景
- URL パーサの実装間に存在する inconsistency の類型
- URL を取り扱う開発者に対する Recommendation
個人的には「Recommendation の部分を励行するのは現代においては難しくないかい???」感を覚えもしますが、具体的な事例に関するリサーチは一見に値するものです。ぜひ PDF を上記のページからダウンロードして、より技術的な詳細の部分を確認してみてください。
以下は細かいことが気になる方向けの余談です:
- この手のリサーチは Orange Tsai 氏による “A New Era of SSRF - Exploiting URL Parser in Trending Programming Languages!” を始めとした、既存の URL に関する仕様/URL パーサーの実装に関する研究の系譜に位置づけられるものです。興味のある方はそれらの先行研究もざっと眺めてみるとよいでしょう。筆者(米内)も二年前くらいにセキュリティ・キャンプの講義で仕様間や実装間の inconsistency が脆弱性を生みがちという議論を展開したり(その際講義資料はこちら)、CTF の問題として複数のアプリケーション/処理系がある同一の値を inconsistent な形で解釈する脆弱性の例を出したり(”pasta”; 問題ファイルや解説はこちら)もしてたので、よければこれらもどうぞ。
- 今回取り上げたレポートのように複数の仕様や実装の間の inconsistency が問題になっていくことというのは、ソフトウェア領域が成長していき、どんどんすべてを完全に理解するのが難しくなっていくことを考えると自然なことにも思えます。この手の「よく使う仕様/実装の間の inconsistency を探し、それを利用した攻撃を検討する類のリサーチ」のリサーチ的な面白みはもうしばらくありそうですね。あくまで “リサーチ的な” 面白みはありそう、という話で、現実のクソデカ脅威につながるリサーチになるかは全く分からないですが……。
☁️ Platform Security
Amazon SNS now supports Attribute-based Access Control (ABAC)
小さなニュースですが Amazon SNS の ABAC 対応がアナウンスされてました。逆に今まで ABAC サポートなかったんですね。SNS ほぼ使ってないので知らなかったです。
Amazon SNS now supports Attribute-based access controls (ABAC)
Top GitOps Tactics to Build Secure Cloud Native Infrastructure
とくにクラウドインフラに関して GitOps プラクティスを適用するときの戦略を、具体的な技術スタックベースというよりは行動指針的なレイヤで説明する記事が CNCF から出ていました:
- Specification Incompatibility: そもそも URL に関する仕様やそれぞれに対応するパーサ実装が複数存在してしまっている状況があるために、そもそもパーサ実装間の consistency が当然のように生まれてしまう状況であること
- Multiple Parsers in Use: (先述のように consistency が生まれやすい状況にある)複数の URL パーサ実装を、仕方ない場合も不注意の場合もあるにせよ、開発者が使ってしまうこと
- Scheme Confusion: 欠損した/不正な形式の URL scheme に関する inconsistency
- Slash Confusion: スラッシュ(
/
)のイレギュラーな用法に関する inconsistency - Backslash Confusion: バックスラッシュを含む URL に関する inconsistency
- URL Encoded Data Confusion: URL-encoded な部分を含む URL に関する inconsistency
- Scheme Mixup: ある scheme を持つ URL 固有の仕様(例: LDAP に関する RFC2255)/それに関するパーサ実装と、他 schema を持つ URL 固有の仕様/それに関するパーサ実装との間の inconsistency
- 利用する URL パーサの種類を可能な限り少なくする
- マイクロサービス環境においては、URL 文字列よりも、パース済の構造化された URL データを受け渡すこと(例:
http://example.com:3939
を持ちまわさず、{”scheme”: “http”, “host”: “example.com”, “port”: 3939}
のようなデータを持ちまわす) - URL パーサ間のアプリケーションロジックに関連しそうな仕様を正しく理解する
- URL の canonicalize 処理をパース前に励行する
Top GitOps tactics to build secure cloud native infrastructure | Cloud Native Computing Foundation
最近いろんなところで Policy-as-Code という文字列を目にしますね。まあこの記事は Magalix というその辺やってる会社さんの guest post だから、というのはあるのですが……。
👥 Security-Aware Team/Culture Building
“The Values Behind Scaling Cloud Native Security at Grafana Labs” from Thomas Owen
以下は Grafana Labs がその内部でどうプロダクトセキュリティに向き合う組織づくりをしているかを解説する記事です:
The values behind scaling cloud native security at Grafana Labs
ざっくりと要約すると、この記事は「“security manifesto” というバリュー/行動指針的なものを定義して運用しているよ」というもので、面白いのはそのバリュー/行動指針の中身です。筆者の独断と偏見ですが、とりわけ以下のような要素が、近年のセキュリティを頑張っていこうとしているテック系企業のセキュリティに対する価値観をよく表しているような気がします:
- ”Serve the user where they live” や “Beautiful experiences”、 “Share openly and default to transparency” のような、組織の分断を生まずに全員がセキュリティに向かい合えるようにするための指針
- ”Security is a product function” や “Operational benefit drives compliance” のような、監査のための・監査を最優先としたセキュリティへの向き合い方から、いいプロダクトを作るためのセキュリティへの向き合い方へシフトすることを推奨する指針
セキュアな Web 開発のための e-learning サービス KENRO がピクシブ株式会社様における利用事例を公開
筆者(米内)の所属している株式会社 Flatt Security ではセキュアな Web 開発を、テキストで学び・実際に Web アプリケーションを攻撃して学び・脆弱なソースコードを実際に修正してみて学ぶための e-learning サービス「KENRO」を提供しています。今週はこの KENRO の、ピクシブ株式会社様における、チームメンバー育成での活用事例を公開しました:
新卒エンジニアのセキュアコーディング研修でKENROを活用。「今後活用できるか」「来年の新卒に勧めたいか」の質問に対し全員が高評価 | KENRO
とりわけ以下の引用箇所のような、セキュアな開発のできるチームを作っていく上での課題や漠然とした不安があるテックリードの方は他にもおられるのではと思います。KENRO はこういう課題にはうまくフィットするプロダクトです。
吉見圭司さん(以下、吉見さん):ピクシブには一芸があるというか、何かしらの分野で秀でた技術を持つエンジニアが集まっています。セキュアに開発する技術に関しては採用の際に一定の基準を設けていますが、メンバーが多くなり、スキルにバラつきが出てきました。運営するサービスが増えていることもあり、セキュリティ技術について学び全体のレベルを底上げできるサービスがほしいと思っていたときに「KENRO」を知りました。
実はこのサービス、フリートライアルが期間無制限で・いますぐ利用できるので、ぜひ以下のページから試してみてください:
KENRO (ケンロー) | セキュアコーディングを当たり前にするエンジニアの学習プラットフォーム
🛣️ Supply Chain Security
”What an SBOM Can Do for You” by Chainguard
最近 Supply Chain Security をやるぞと言ってシード投資を受けた US スタートアップ Chainguard のブログにおいて、Software Bill of Materials (SBOM) とは何のための何で、今後の利活用への著者の見解を説明する記事が公開されていました:
What an SBOM Can Do for You
限りなく雑に表現するなら、SBOM とは「あるソフトウェアが、どのような部品(ライブラリやパッケージ)に依存して作られているか」を示す情報のことです。OSS の利活用が当たり前のように進む昨今だからこそ、セキュリティ的には「あるソフトウェアを構成する部品の中に悪意のあるものや既知の脆弱性をもったものが存在しないか」を知りたくなりますが、例えばそういう目的で SBOM は役に立ちます。
ちなみに、最近は種々の OSS において SBOM 系機能の開発や議論が進んでいますし(例: SBOM 生成ツールである anchore/syft, trivy における関連 issue (1) (2))、この辺をいい感じに扱おうとする商用サービスも増えつつありますし(例: Black Duck, Cybellum, anchore, ...)。また、身近な日本企業の中にも SBOM の利活用を進めている企業もあります(参考: OSS の利活用及びそのセキュリティ確保に向けた管理手法に関する事例集)。具体的に SBOM とかいう情報はどう作るんや / 使うんや、というのが気になる方はこの辺も見てみてください。
Software Provenance Explained by Greg Poirier
Software Provenance に関するいい記事が出ていました:
Die Softwareherkunft (Software Provenance): An opera in two acts
この記事は Software Provenance を利活用するモチベーションや、とりわけ Sigstore プロジェクトのようなコード署名におけるトラストチェーンを構築するための基盤の成長や、SPDX や in-toto 方面の Software Attestation に関する動きがどうソフトウェアの開発運用やソフトウェアサプライチェーンの安全性担保に寄与するのかを (やや文学的な感じで)説明してくれます。
特に “Signatures are all well and good, but that’s only the I of IAM” というのはいい表現だと感じました。「Artifact に署名を付けられます!」という “this artifact is good to go” を表現するためだけの情報が Artifact に乗る世界を更に拡張して、「その Artifact が経た過程が Attestation の形で Artifact に添えられます!」という世界まで到達することができれば、確かに Artifact の(とりわけセキュリティ的な視点での)管理がよりプログラマブルに行えるようになるでしょう。すると、そのころにはソフトウェアサプライチェーンに対するいい体験での管理が行えるようになりそうです。
実際既に Tekton がこの辺に向き合おうとしていますが、他の CI/CD 領域のプレイヤーもこの手の領域に積極的に参入していってほしいですね。
The Number of Entries in Public Rekor Instance by Sigstore Has Reached 1M
コード署名界の Let’s Encrypt を目指す Sigstore プロジェクトというのがあります。そのプロジェクトの中で、Signature Transparency Log (Let’s Encrypt でいう Certificate Transparency Log 的なもの) を記録・提供するコンポーネントとして開発されている “Rekor” の Sigstore 公式インスタンスに、1M のエントリ(Signature Transparency Log)が溜まりましたという報告エントリが上がっていました。めでたい。
Celebrating 1,000,000 entries in Rekor
この記事の中に https://token.actions.githubusercontent.com
という GitHub Actions が提供している OIDC プロバイダ の URL が登場するのは注目すべき点です。なぜなら、この URL が登場する背景には「GitHub Actions 上ではコンテナイメージへの署名と Rekor への Signature Transparency Log の記録が keyless で行えるようになっている」という事実があるから(なはず)です。もう結構いい感じめに使えるフェーズに来ているわけですね。
ちなみに、更に掘り下げると、GitHub Actions 上での keyless な署名が可能になっているのは、以下のような構図があるから(なはず)です:
- 同じく Sigstore プロジェクトの一つである Fulcio の Sigstore 公式インスタンスとのフェデレーション設定がしてある(参考: 設定ファイル)
- このフェデレーション設定により、GitHub Actions 上のワークフローでは (1) GitHub Actions が提供している OIDC プロバイダから ID トークンをもってきて (2) Fulcio の公式インスタンスに投げつけることでコード署名用の short-lived なx509 証明書がもらえるようになっている
- そのため、GitHub Actions 上ではコンテナイメージへの署名と Rekor への Signature Transparency Log の記録が keyless で行えるようになっている
詳しくは以下の記事に書いてあるので、この辺が気になったら是非読んでみてください:
Zero-friction "keyless signing" with Kubernetes
Rekor Sidekick: Continuous Signature Transparency Monitoring with Rego
Rekor にストックされた Signature Transparency Log を拾ってきつつ、その Log を OPA/Rego を使って監査する、的なプロジェクトが生えていました:
GitHub - nsmith5/rekor-sidekick: 🔍 Rekor transparency log monitoring and alerting
Purdue University がやってる rekor-monitor とかとかち合ったりしないのかなと思いましたが、rekor-monitor が何なのかを詳しく追っていないので分からず。来週までにちゃんと追ってみようと思います。
“sigstore/k8s-manifest-sigstore”
Kubernetes マニフェストにも Sigstore のもろもろで署名を付けられるようにしようプロジェクトを見つけました。これもここまでアンテナ外だったので、少し追ってみることにします:
GitHub - sigstore/k8s-manifest-sigstore: kubectl plugin for signing Kubernetes manifest YAML files with sigstore
⚙️ Security(-Aware) Components for Products
今週はこの方面ほぼウォッチできてないです><
Authzed Announced Product Update of December, 2021
個人的に応援している Permission as a Service プラットフォーム Authzed のリリースノートが出ていました。1 月に入ってからは既に SpiceDB 1.4.0 が出たりもしてますし、12 月も相変わらず活発ですね。引き続き頑張ってほしいな~。
Product Update: December
🧪 Security Research / Vulnerability Disclosure
“BreakingFormation: Orca Security Research Team Discovers AWS CloudFormation Vulnerability”
Orca Security が CFn の(影響度がしれっとデカい)脆弱性を見つけたという話を公開しています:
Orca Discovers AWS CloudFormation Vulnerability - Orca Security
“SOK: On the Analysis of Web Browser Security”
Web ブラウザのセキュリティを体系的に整理することを試みた文献が arxiv に投げられていました。まだ細かくは読めてないので、ここでは存在だけを紹介するに留めますが、拙著『Webブラウザセキュリティ』で言及していない低めのレイヤの話も厚めに書かれていそうな気配を感じているので後日じっくり読んでみるつもりです:
SOK: On the Analysis of Web Browser Security
“msrkp/electron-research”
Electron 方面の気になるリサーチが流れてきました:
GitHub - msrkp/electron-research: Electron Research
まだ詳細は公開されてないですが、このリサーチの関係者一覧を見るにおそらく面白い結果が公開されるのだろうと予想しているので、とりあえずここにメモっておきます。
“10 Real-world Stories of How We’ve Compromised CI/CD Pipelines”
NCC さんの CI/CD 叩く話が出てました。読み物として面白かったです:
10 real-world stories of how we've compromised CI/CD pipelines
📶 Market
🏢 Startup
SoSafe Raised $73M in Series B Funding
セキュリティ意識を高めるための教育プラットフォーム事業や、関連する教育/コンサルティングサービス事業を手掛ける SoSafe がシリーズ B での $73M の資金調達をリリースしました:
Germany's SoSafe raises $73M Series B led by Highland to address human error in cyber
非技術者も含めた広め対象に向けて Security Awareness を作るための教育事業をやっているとなると、例えば KnowBe4 等が競合にあたりそうです。この辺と SoSafe の差分は勉強がてらリサーチしておかねば。
以下は余談です:
- 技術者向けにメイン市場を絞って教育プラットフォーム事業をやっているプレイヤーとしては SecureCodeWarrior や ImmersiveLabs がいますが、彼らもシリーズ B の調達額オーダーは大体このくらいでしたね。だいたいそういう感じなのでしょう。
- そこを追う RangeForce は 2020 夏ごろに Series A で $16M くらい調達してましたが、最近はどうなんだろう。
Eureka Secured $8M For Its Data Cloud Security Platform
Eureka というデータセキュリティ系のスタートアップが YL Ventures をリードに $8M のシード調達を実施しています:
Eureka raises $8M for its data cloud security platform
YL Ventures は US x Israel のセキュリティ領域スタートアップの(大きめの)シード投資を主としている VC らしいです。ポートフォリオが面白い。
🗺️ Public Sector
White House Held Open Source Security Summit
ホワイトハウスが OpenSSF や Linux Foundation, RedHat を始めとした OSS セキュリティ/サプライチェーンセキュリティに取り組んでいるステークホルダーを集めて OSS のセキュリティについての会議を実施したという話が流れてきました:
The OpenSSF and the Linux Foundation Address Software Supply Chain Security Challenges at White House Summit - Open Source Security Foundation
Red Hat Statement on White House Open Source Security Summit
直近では Log4j の話や faker.js, color.js の話が記憶に新しいですが、そもそも OSS の利活用の背後にある(セキュリティ文脈に限らない)問題は、たびたび議論を巻き起こしているところですし、かねてより大統領令を始めとした公的な動きもありました。なのでこのニュースは決して突拍子がないものではなく、どんどんサプライチェーン頑張るぞ~の気持ちが各方面で高まっている、というくらいに受け取るべきでしょう。
ここからは個人的な雑感ですが、最近「このプラクティスを一通り実践すれば、ソフトウェアのサプライチェーンがいい感じになっている開発運用を実現できるぜ!」といえるようなプラクティスが成熟しきってないのを感じています。SLSA フレームワークなどはあるけどまだまだ粗削り / プラクティスがついていってないですよね。個人的にはこれから、個人的に or 所属組織で、この領域をいい感じにするのに取り組めないかな~と思ってます。
NIST Published Some Drafts on Cybersecurity: NISTIR 8389 & NISTIR 8403
NIST からいくつかセキュリティ関連の Draft が出ていました。ななめ読みした感じではこの辺の話が気になる人はいそうだったので、ひとまず存在だけ紹介しておきます:
Cybersecurity Considerations for Open Banking Technology and Emerging Standards: Draft NISTIR 8389 Available for Comment
Blockchain for Access Control Systems: Draft NISTIR 8403 Available for Comment
✅ Wrapping Up
今週も色々ありましたね。こうやってインプットしているとセキュリティ領域の他のプレイヤーの進むスピードには驚かされるばかりです。皆々様、次の週も張り切っていきましょう!!!!!!!