2026年03月28日の技術動向

Web Install API — PWAインストールをJavaScriptから直接トリガーできる標準APIがOrigin Trialへ

Web Install APIがMicrosoft EdgeとChromeのOrigin Trialとして公開された。核心はnavigator.install()メソッドだ。これまでPWAのインストール誘導はbeforeinstallpromptイベントに依存していた。このイベントはChrome独自の仕様で、他ブラウザとの互換性がなく、アドレスバーのインストールアイコンに気づかないユーザーへのリーチも限られていた。

navigator.install()はPromiseを返す。インストール完了時はmanifest_idで解決し、ユーザー拒否はAbortError、マニフェスト未検出はDataErrorで棄却される。シークレット・プライベートモードでの呼び出しも棄却される。エラーハンドリングが明示的な設計になっており、インストール結果をアプリ内フローに組み込みやすい。

動作確認にはChrome・Edge 143以降が必要だ。139〜142ではabout:flagsから有効化できる。SafariとFirefoxはnavigator.installを実装していないため、既存の「ホーム画面に追加」動作にフォールバックする。

現在のOrigin Trialで対応しているのは「same-document installation」のみだ。クロスサイトインストール(他サイトのPWAを別サイトから誘導してインストールする)はWICGで議論が続いており、仕様には含まれていない。

この提案の起点はMicrosoft EdgeチームのDiego Gonzalezだ。MicrosoftはPWABuilderを通じてPWA普及に長年投資してきた経緯があり、今回の提案もその延長線上にある。AppleはiOS上のPWAサポートで後退的な姿勢を取り続けてきた。EU規制の圧力を受けて改善が進んだ部分もあるが、SafariはW3C WebApps WGでの「same-document installation」の議論には参加しているものの、実装コミットメントは明言していない。

クロスサイトインストールの標準化が次の焦点になる。これが実現するとアプリストア的なWebサイトから他ドメインのPWAをインストール誘導できるようになり、App StoreとGoogle Playに集中している配布モデルが根本的に変わる可能性がある。Gonzalezが「各実装者の判断次第(last word is on each implementor)」と明言している通り、普及速度はSafariとFirefoxの実装判断次第だ。

Redox OS — 名前空間とCWDをケイパビリティとして扱う新アーキテクチャが実装

Redox OSにおいて、名前空間とカレントワーキングディレクトリ(CWD)をケイパビリティとして扱う新しいアーキテクチャが実装された。カーネルが文字列ベースで管理していたリソースアクセス制御を、ファイルディスクリプタベースのケイパビリティモデルへ移行するものだ。NLnet / NGI Zero Commonsの資金援助を受けたプロジェクトの一環として、Ibuki Omatsu氏が実装を進めている。

移行前のRedoxでは、名前空間はカーネル内に存在し、整数IDでプロセスに紐付けられていた。ファイルアクセスの流れはこうだ。アプリケーションがopen("/home/user/some_file")を呼ぶと、relibc(redox-rt)がパスを/scheme/file/home/user/some_fileに変換し、カーネルがスキーム名fileを文字列として抽出してプロセスの名前空間を検索し、登録済みであればリクエストをスキームにルーティングする。CWDも文字列として管理されており、相対パスが与えられるたびにCWD文字列と結合して絶対パスを再構築していた。この方式ではO_RESOLVE_BENEATHのようなディレクトリ境界制限を適用することが困難だった。

新設計の鍵はopenat(dir_fd, path)システムコールだ。指定したディレクトリファイルディスクリプタを起点としてファイルを開き、パスをそのディレクトリ以下に限定する。プログラムがopenatのみを使うよう制限すると、dir_fd自体がサンドボックスとして機能し、ディレクトリ外のリソースには一切アクセスできなくなる。

この原理を応用し、名前空間をユーザースペースのデーモンnsmgr(Namespace Manager)として実装した。nsmgrはアプリケーションと他のスキームの間に位置するスキーム型サービスだ。名前空間は整数IDではなく、redox-rtが管理するファイルディスクリプタとして表現される。

pub struct DynamicProcInfo {
    pub pgid: u32,
    // 名前空間はファイルディスクリプタとして保持される
}

CWDも同様に、文字列ではなくディレクトリファイルディスクリプタとして保持するよう変更された。相対パスの解決は文字列結合ではなくopenatへの委譲になる。

RedoxはマイクロカーネルベースのOSであり、ファイルシステムやプロセスマネージャといったシステムコンポーネントをユーザースペースのサービス(スキーム)として動かす設計を採用している。

【補足】ケイパビリティベースセキュリティとは、リソースへのアクセス権を「ケイパビリティ(capability)」と呼ぶ権限付きトークン(ここではファイルディスクリプタ)として表現し、そのトークンを持つプロセスだけがリソースにアクセスできるモデルだ。従来のUNIX系OSが採用するACL(アクセス制御リスト)やUID/GIDベースの権限管理と異なり、プロセスが保持するトークン自体がアクセス権の証明となるため、最小権限の原則を細粒度で実現しやすい。スキームへのアクセスは/scheme/{scheme-name}/{resource-name}形式のパスで行われ、名前空間がどのスキームを見えるかを制御する。ケイパビリティベースセキュリティはPOSIXの世界でも長年議論されてきたが、実用的なOS実装への組み込みは難しかった。今回の実装はその具体的な一歩だ。

Betterleaks — Gitleaks作者がAIコーディング時代向けに再設計した秘密情報スキャナーをリリース

Gitleaksの作者Zach RiceがBetterleaksをリリースした。AIコーディング時代における秘密情報漏洩リスクの増大を受け、検出アプローチを再設計した後継ツールだ。

Gitleaksは2018年にRiceが個人プロジェクトとして開始した。当時はPython製のTruffleHogが主流だったが、RiceはGoで書き直し、ユーザーが制御できる設定システムを加え、速度を改善した。その結果、GitHubで25,000スター・2,600万ダウンロードを達成し、GitLabやRed Hatが内部システムに組み込むまでに普及した。

Betterleaksが前作から変えた点は4つある。検出アプローチの再設計、より柔軟なバリデーション、スキャン速度の向上、そして開発への主体的なコントロールの回復だ。スポンサーはAikidoというセキュリティスタートアップで、OSSツール群への幅広い支援を行っている。

なぜ今このタイミングなのか。Riceは「LLMが秘密情報の漏洩リスクを確実に高めている」と明言している。具体的なパターンとして、開発者がテスト目的で実際のクレデンシャルをコードに一時的に埋め込み、AIアシスタントの警告を「無視して続けろ」と指示して上書きするケースを挙げた。「ほとんどの人がそうしている。秘密情報を適切に管理する手間をかけるより」とRiceは言い切っている。

バイブコーディング(出力を精査せず受け入れながら高速に反復する開発スタイル)の普及が、この問題を構造的に悪化させている。AIが生成するコードの量が増えるほど人間によるレビューの密度は下がり、クレデンシャルが意図しない場所に紛れ込む確率が上がる。エージェント型AIが環境変数やAPIキーを扱う場面が増えるほど、それらが意図せずログやコードベースに記録されるリスクも高まる。

Betterleaksが「Gitleaksの後継」として登場した背景には、既存ツールの開発方向性への不満もある。Riceが「創造的なコントロールを取り戻したかった」と述べていることから、Gitleaksがエンタープライズ統合を経て設計の自由度を失ったという側面が読み取れる。

TeamPCP / Trivy — セキュリティスキャナー自体を武器にしたサプライチェーン攻撃が連鎖

2026年3月以降、OSSのCI/CDパイプラインを標的にしたサプライチェーン攻撃が急増している。その震源地となったのが、Aqua SecurityのTrivyスキャナーへの侵害だ。

攻撃グループ「TeamPCP」は2026年3月19日、Trivyのリポジトリを掌握し、バイナリとGitHub Actionsをトロイの木馬化した。その後、NPMパッケージ数十件への「CanisterWorm」攻撃、LiteLLMへの侵害、さらにCheckmarxへの攻撃と連鎖した。TeamPCPが侵害したプロジェクト群の合計ダウンロード数は月間1億件を超える。

攻撃の起点は、Trivyのpull_request_targetワークフローの設定ミスだ。

【補足】pull_request_targetはフォークからのPRに対してもリポジトリの秘密情報(Secrets)へのアクセス権を持つコンテキストで実行されるGitHub Actionsのイベントトリガーだ。通常のpull_requestと異なり、外部コントリビューターのコードがリポジトリ権限で動作するため、適切なスコープ制限なしに使用するとPATやSecretsが外部から窃取可能になる。AIボット「hackerbot-claw」がこの脆弱な設定を突いてPersonal Access Tokenを窃取し、リポジトリを完全掌握した。Aqua Securityが修正を試みたが不完全で、残存した認証情報がその後の侵害に使い回された。

Palo Alto Networksが分析した攻撃チェーンは5フェーズで構成される。

フェーズ1では、窃取した認証情報でAqua Botサービスアカウントを乗っ取り、悪意のあるタグv0.69.4をTrivyリポジトリにプッシュした。これが自動リリースプロセスを起動し、バックドア入りバイナリがGitHub Releases・Docker Hub・GHCR・Amazon ECRに配布された。

フェーズ2では、aquasecurity/trivy-actionの76件中75件のバージョンタグを強制更新した。@v0.28.0のようにタグ固定しているワークフローが、ワークフロー定義を変えることなくサイレントに攻撃者制御のコードを取り込む状態になった。発覚を避けるため、悪意のあるコミットには元のAuthorメタデータとタイムスタンプがコピーされた。

【警告】タグ固定(例:uses: aquasecurity/trivy-action@v0.28.0)はSHA固定(例:uses: aquasecurity/trivy-action@<commit-sha>)とは異なり、タグ自体が書き換えられると追従してしまう。GitHub Actionsで改ざんリスクを排除するには、タグではなく不変のコミットSHAをピン留めすることが推奨される。

フェーズ3では3段階の認証情報窃取が実行された。GitHub Actionsランナーのメモリから直接読み取ることでログのマスキングを回避し、AWS・GCP・AzureのクラウドクレデンシャルやKubernetesトークン、TLS秘密鍵、暗号資産ウォレットデータを収集した。収集データはAES-256-CBCで暗号化後にRSA-4096でラップされ、タイポスクワッティングドメインscan.aquasecurtiy[.]orgに送信された。送信失敗時のフォールバックとして、被害者のGitHub PATを使ってtpcp-docsという公開リポジトリを作成し、GitHubのインフラ上にデータを保存した。

フェーズ4では、侵害されたTrivyバイナリを実行した開発者マシンにsysmon.pyというsystemdサービスとして永続バックドアがインストールされた。このサービスはInternet Computer(ICP)ブロックチェーン上のキャニスターに約50分ごとに接続する設計になっている。ブロックチェーンをC2インフラとして使うことで、従来のドメインブロッキングやIPレピュテーションによる検知を回避する。

【補足】ICP(Internet Computer Protocol)はDFINITY財団が開発する分散型ブロックチェーンで、「キャニスター」と呼ばれるスマートコントラクト上でWebアプリケーションを動作させられる。C2(Command & Control)インフラとしてブロックチェーンを使う手法は、通信先が特定のIPやドメインに紐付かないため、従来のネットワークレベルのブロッキングが機能しない点が攻撃者にとっての利点となる。

DreamFactory CTOのKevin McGaheyが指摘するように、攻撃の進行は意図的かつ戦略的だ。「CI/CDパイプラインで高い権限で動作するセキュリティスキャナーを最初に侵害し、認証情報を収集し、その認証情報でダウンストリームのインフラを汚染する」という設計になっている。

OpenAI Codex — プラグイン機能追加でコーディング前後のフェーズまでカバー

OpenAIがCodexにプラグイン機能を追加した。最大の変化は、コーディング支援ツールだったCodexが、計画・調査・チーム連携といったコーディング前後のフェーズまでカバーし始めた点だ。

Box、Figma、Linear、Notion、Sentry、Slack、Gmail、Hugging Faceなどのサードパーティサービスとのインテグレーションが、MCPサーバー・再利用可能なワークフロー・アプリコネクタをひとまとめにした「インストール可能なバンドル」として提供される。

【補足】MCP(Model Context Protocol)はAnthropicが提唱したオープン仕様で、AIモデルが外部ツールやデータソースと標準化されたインターフェースで通信するためのプロトコルだ。OpenAI・Google等も採用しており、AIコーディングツール間でのプラグイン互換性の共通基盤になりつつある。ローンチ時点で20以上のプラグインが利用可能で、Codexアプリ・CLI・VS Code拡張の3つで横断的に使える。

注目すべきは、既存のMCPサーバーを個別に設定・組み合わせる作業がなくなる点だ。チーム全員が同じプラグインを一発でインストールして標準化できる。「build web app」プラグインはその典型例で、Stripe・Supabase・VercelのMCPサーバーをまとめ、デプロイ手順・フロントエンド構築・ベストプラクティスまでをひとつのバンドルに封じ込めている。

CLIからは/pluginsコマンドでターミナル経由のインストールが可能だ。UIでは「New Thread」ボタン直下に専用タブが配置され、キュレーションされたディレクトリが開く。セルフサービスでの公開はまだできないが、近日対応予定とされている。

AnthropicのClaude Codeは今年の早い段階からほぼ同等のプラグイン機能を持っており、リポジトリレベルや個人マーケットプレイスへの公開にも対応している。GoogleのGemini CLIとAntigravity(AI特化IDE)も「extensions」という名称で同様の仕組みを提供し、インストール時にAPIキーを求めてシステムキーチェーンに保存する設定機能まで追加済みだ。

3社のアーキテクチャはほぼ収束している。MCPサーバー・カスタムコマンド・エージェントスキル・フック・テーマをGitHubまたは組み込みレジストリで配布するという構造が共通化されつつある。OpenAIは他エコシステムのプラグインをそのままCodexに取り込める@plugin-creatorを明示的に提供しており、乗り換えコストを意図的に下げている。

Codexを「スーパーアプリ」として位置づける戦略が鮮明になってきた。Slackでのコミュニケーション・Notionでのドキュメント管理・Linearでのチケット管理まで取り込むことで、開発ワークフロー全体をCodexで完結させようとしている。

今日の傾向

TeamPCPがpull_request_targetの設定ミスを突いてTrivyリポジトリを掌握し、v0.69.4タグ経由でバックドア入りバイナリを配布した。aquasecurity/trivy-actionの75バージョンタグを強制更新し、タグ固定しているワークフローがサイレントに侵害コードを取り込む状態になった。セキュリティスキャナー自体を侵害の起点にするという設計は、CI/CDパイプラインにおける「信頼されたツール」への依存が攻撃面になることを示している。

Zach RiceがBetterleaksをリリースし、「LLMが秘密情報の漏洩リスクを確実に高めている」と明言した。バイブコーディングの普及でAIが生成するコードの量が人間のレビュー速度を上回り、クレデンシャルが意図しない場所に紛れ込む確率が上がっている。TeamPCPがTrivyを通じて開発者マシンにsysmon.pyを永続インストールし、ICPブロックチェーンをC2インフラとして使ったことと合わせ、開発ツールチェーン全体が攻撃対象として成熟していることが分かる。

OpenAIがCodexにBox・Figma・Linear・Notion・Slack等20以上のプラグインを追加し、Claude Codeが先行していたエコシステム競争に本格参入した。@plugin-creatorで他エコシステムからの移植を明示的にサポートしたことで、MCPサーバーを共通基盤とするプラグインのポータビリティが現実的になりつつある。

Web Install APIがChrome・Edge 143以降でOrigin Trialに入り、navigator.install()によるPWAインストールの標準化が具体的な段階に進んだ。Redox OSではNLnet資金援助のもとIbuki Omatsu氏が名前空間とCWDをファイルディスクリプタベースのケイパビリティとして再実装し、nsmgrデーモンによるユーザースペース名前空間管理が動作する状態になった。

参照記事

記録日: 2026-03-28