OSS開発者は今何をするべきか?ソフトウェアサプライチェーン侵害対策を考える
https://gyazo.com/62cba01886ad8dc47dff433f1b2799f3
OSS開発者は今何をするべきか?ソフトウェアサプライチェーン侵害対策を考える - connpass
スポンサーセッション:LayerX コーポレートエンジニアリング室におけるサプライチェーンセキュリティへの取り組み
竹山雄也 / LayerX コーポレートエンジニア @yuya_takeyama
https://speakerdeck.com/yuyatakeyama/supply-chain-security-at-layerx-corporate-engineering
権限管理をモノレポ上で行う
SmartHRのデータをTerraformで行う
https://tech.layerx.co.jp/entry/psuedo-abac-system-using-smarthr
脆弱なライブラリ・ソフトウェアは速やかに対処
いつの間にか中身が毒入りにならないようにする
DependabotはSecurity fixのみをupdate
GitHub Actionsで自動update & push
依存関係はpinしている
pinactで実行
aquaによってchecksumを検証
Cooldownも導入
今後目指すこと
仮に毒入りバージョンが入ってもすぐ検知
ネットワークレベルで遮断
eBPFを使ったアプローチを検討
少ない技術の組み合わせで多くのことを実現したい
Security fix やアップデートに関わる作業の最小化
コーディングエージェントの出力を安定しやすく
スコープを狭めることで人間の理解をより深く
セッション①:PRを取り込むのが怖くなった理由と今後
Kyohei @labelmake
https://docs.google.com/presentation/d/1EMiRnX8vaoUwNm_wtnqDL5gQfcUWRFPL/edit?usp=sharing&ouid=109946883236323618418&rtpof=true&sd=true
PRを取り込むのが怖くなった理由
pdfme作者
牧歌的に楽しかった(過去)
朝起きたらリバプールのOSS共同者が対応してくれて
自分のOSSによって加害者にならないか?
サプライチェーンの攻撃経路が多い
開発者アカウントの乗っ取り
OSS作者が狙われている印象
GitHubはPRでコミュニケーション
マージで取り組むがこれは実質publishボタン
レビューしているのはコード差分だけではない
コントリビューターがどこのものなのか
ソーシャルエンジニアリングも学ぶ必要性を感じている
botが大量にPR作ってくることもある
配布経路が狙われている
PR→cache→merge→OIDC→publish
release経路につながると、PRはpublishまで届く
意外と知られていない、いろんなOSSの運営方法
Ladybird: コード提案を受け取らない
https://ladybird.org/posts/changing-how-we-develop-ladybird/
SQLite: パッチをそのまま取り込まない
QuickJS: 小さく保ち、forkが育つ
https://github.com/quickjs-ng
Typora: コードではなく、場を開く
OSSではなく商業ソフトウェア
Issueで透明性のある運営を行う
Postmortem: TanStack npm supply-chain compromise | TanStack Blog
TanStackはポストモーテムを公開
pdfmeはどうしていくか
フォーク歓迎していく
失敗も、運用も、判断基準も公開できる
CVEでセキュリティが自分ごとになった
セッション②:Honoでのサプライチェーン侵害対策 〜 3つのライブラリに学ぶ
Yusuke Wada @yusukebe
https://speakerdeck.com/yusukebe/honodenosapuraitienqin-hai-dui-ce-3tunoraiburarinixue-bu
Hono
依存関係 4,393
https://astro.build/blog/astro-7/ Astroにも搭載
Mastraにも依存
axios
アカウント乗っ取り
偽のオンライン会議を提案
ソーシャルエンジニアリングによるハッキング
TanStack
GitHub Actionsのキャッシュを悪用
pull_request_targetによるトリガー
キャッシュデータを不正なものにすり替える
OIDCトークンを取得、そこからnpm publish
アカウントは乗っ取られてないしprovenanceの保証もある
Mastra
外部コントリビューターのアカウントをハッキング
@mastra/*の書き込み権限を持っている
easy-day-jsという偽パッケージを作成
dayjsに似せる
タイポスクワッティングの手法
依存関係を利用して広範囲で伝わる
セッション③:Hardening npm Publishing
azu @azu_re
https://azu.github.io/slide/2026/hardening-npm-publishing/slide.html
なぜ公開フローを守るのか
npmは依存が深い
トークンを盗むところからCI/CDに移る
脆弱性があるGitHub Actionsが増えている
侵害されてもレジストリに公開されないようにする
攻撃者は一番弱いところを狙う
どこか1つだけ守っても他で抜かれるかもしれない
1. ローカルのToken管理
大前提としてローカルには置くな
1Password/Bitwardenなど多要素認証をしないと取り出せないところへ保存
GitHubはclassic PAT(Personal Access Token)を常用しない
orgを跨ぐ場合はめんどくさい
fine-grained PATは用途ごとに分ける
1つの強いトークンを使い回さず、用途ごとに発行する
read-onlyのトークンしか発行していない
Checks APIがfine-grained未対応
参考: https://github.com/orgs/community/discussions/129512
2. npm
アクセストークンを0個にする
OIDC Trusted Publishing
https://github.com/azu/setup-npm-trusted-publish
code:yml
permissions:
contents: write
id-token: write # OIDC
steps:
- uses: actions/setup-node@v5
with:
registry-url: 'https://registry.npmjs.org'
- run: npm publish --access public
OIDCでの公開ではprovenance(来歴の署名)が自動付与される
build中に何が起きたかまでは保証しない
3. GitHub Actions の構成
https://gyazo.com/e12c0da823c098ed1c5e1ea90b73e655
environment: npmを参照させて、jobの実行を待機させる
https://gyazo.com/6c9d03d562bc429b2addb7c81fbfd8de
4. npm staged publishing
Approve待ちにする
https://docs.npmjs.com/staged-publishing
課題
Approveが1パッケージずつしかできない
CLIからapproveするにはnpmトークンが要る
攻撃が成功するには、GitHubとnpmのアカウントを同時に侵害する必要がある
GitHubはTOTPが削除できないバグがある
2026-06-23