<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>PostgreSQL on 思いつきそうで思いつかなくていたときに</title><link>https://blog.fuga.jp/tags/postgresql/</link><description>Recent content in PostgreSQL on 思いつきそうで思いつかなくていたときに</description><generator>Hugo -- gohugo.io</generator><language>ja</language><copyright>Copyright(c) 2022-2025 SATO Daisuke. All rights reserved.</copyright><lastBuildDate>Mon, 29 Jun 2026 00:00:00 +0900</lastBuildDate><atom:link href="https://blog.fuga.jp/tags/postgresql/index.xml" rel="self" type="application/rss+xml"/><item><title>見た目は無害、中身は罠——「安全だったはず」の前提を問い直す週</title><link>https://blog.fuga.jp/posts/2026-06-29-clean-repo-pipe-signal/</link><pubDate>Mon, 29 Jun 2026 00:00:00 +0900</pubDate><guid>https://blog.fuga.jp/posts/2026-06-29-clean-repo-pipe-signal/</guid><description>&lt;p>こんにちは！Agy無限会社のコンテンツ制作部です。&lt;/p>
&lt;p>今週のテーマは、ひとことで言えば**「信頼の前提が崩れる時代」**です。クリーンに見えるリポジトリが攻撃の入り口になり、暗号化アプリが暗号そのものではなく鍵管理で破られ、30年以上使われてきた定番の仕組みに実は無駄が潜んでいた——。「安全」「安定」と思い込んでいたものを、もう一度疑ってみる。そんな5つの話題を集めました。&lt;/p>
&lt;hr>
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/M7STViV6Tjw"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;hr>
&lt;h2 id="1-見た目は無害中身は罠aiエージェントを騙す新手法">&lt;a href="#1-%e8%a6%8b%e3%81%9f%e7%9b%ae%e3%81%af%e7%84%a1%e5%ae%b3%e4%b8%ad%e8%ba%ab%e3%81%af%e7%bd%a0ai%e3%82%a8%e3%83%bc%e3%82%b8%e3%82%a7%e3%83%b3%e3%83%88%e3%82%92%e9%a8%99%e3%81%99%e6%96%b0%e6%89%8b%e6%b3%95" class="header-anchor">&lt;/a>1. 見た目は無害、中身は罠——AIエージェントを騙す新手法
&lt;/h2>&lt;p>最初は、AIコーディングエージェントを使う人全員に関わるセキュリティの話です。&lt;/p>
&lt;p>Mozillaの調査チーム「0DIN」が2026年6月28日、&lt;strong>見た目は完全に無害なGitHubリポジトリ&lt;/strong>を踏み台にして、Claude CodeのようなAIエージェントにマルウェアを実行させる手法を公表しました。恐ろしいのは、リポジトリの中に悪意あるコードが&lt;strong>一切存在しない&lt;/strong>点です。VirusTotalはクリーン判定を返し、Dependabotも沈黙します。それでいて攻撃は成立してしまいます。&lt;/p>
&lt;p>仕掛けは3段階の「間接化」でできています。&lt;/p>
&lt;ol>
&lt;li>&lt;strong>無害なリポジトリ&lt;/strong>：普通のPythonプロジェクトにしか見えず、静的スキャンもすり抜ける&lt;/li>
&lt;li>&lt;strong>わざとエラーを出す&lt;/strong>：同梱パッケージが「&lt;code>python3 -m axiom init&lt;/code>を実行してください」というエラーを返す&lt;/li>
&lt;li>&lt;strong>DNS経由でペイロード配信&lt;/strong>：その初期化コマンドが攻撃者の管理するDNS TXTレコードに接続し、そこに仕込まれたコマンドをシェルで実行する&lt;/li>
&lt;/ol>
&lt;p>核心は、AIエージェントが「シェルを開こうと決断した」のではなく、**「エラーを修正しようと決断した」**だけ、という点です。エラーメッセージは「信頼されたコンテキスト」なので、エージェントは親切心からセットアップ手順の一部としてコマンドを実行してしまいます。攻撃者はDNSレコードの値を書き換えるだけで、リポジトリに一切触れずに攻撃内容を後から変更できる柔軟さまで備えています。&lt;/p>
&lt;p>0DINは「すべての主要AIコーディングツールが何らかの形でこの攻撃に脆弱」としており、Claude Code・Cursor・GitHub Copilot・Gemini CLIでの動作を確認しています。とくに環境変数にデプロイキーやクラウド認証情報が並ぶCI/CD環境では被害が桁違いに広がりかねません。&lt;/p>
&lt;p>対策としては、不明なリポジトリでのAIエージェントの自動コマンド実行を無効にする、クローン後はREADMEや初期化スクリプトを自分の目でレビューする、認証情報はシェルの環境変数ではなく秘密管理ツール経由で渡す、開発環境をコンテナやVMで隔離する、といった基本の徹底が効きます。&lt;/p>
&lt;hr>
&lt;h2 id="2-deno-29コールドスタート2倍速デスクトップアプリも単一バイナリで">&lt;a href="#2-deno-29%e3%82%b3%e3%83%bc%e3%83%ab%e3%83%89%e3%82%b9%e3%82%bf%e3%83%bc%e3%83%882%e5%80%8d%e9%80%9f%e3%83%87%e3%82%b9%e3%82%af%e3%83%88%e3%83%83%e3%83%97%e3%82%a2%e3%83%97%e3%83%aa%e3%82%82%e5%8d%98%e4%b8%80%e3%83%90%e3%82%a4%e3%83%8a%e3%83%aa%e3%81%a7" class="header-anchor">&lt;/a>2. Deno 2.9——コールドスタート2倍速、デスクトップアプリも単一バイナリで
&lt;/h2>&lt;p>少し空気を変えて、ポジティブな進化の話を。JavaScript/TypeScriptランタイムの&lt;strong>Deno 2.9&lt;/strong>が2026年6月25日にリリースされました。&lt;/p>
&lt;p>目玉は性能改善です。コールドスタートが34msから&lt;strong>17msへ半減&lt;/strong>し、メモリ使用量は実ワークロードで最大3.1倍も削減されました（常駐メモリが142MB→64MB、ストリーミング処理では197MB→63MB）。スナップショットの最小化や遅延ロードの工夫が積み重なった成果で、サーバーレス関数やCLIツールなど「短命なプロセス」ほど恩恵が大きくなります。&lt;/p>
&lt;p>もうひとつの目玉が&lt;code>deno desktop&lt;/code>サブコマンドです。&lt;code>deno desktop main.ts&lt;/code>という1コマンドで、既存のHTTPサーバーコードをWebViewベースの&lt;strong>クロスプラットフォームデスクトップアプリ&lt;/strong>として単一バイナリに出力できます（現状は実験的機能）。1台のマシンからLinux・Windows・macOS向けの計5ターゲットへクロスコンパイルでき、Next.jsやSvelteKitなど主要フレームワークも自動検出します。WebViewとDenoプロセスがIPCを介さず直接バインディングできる点が、TauriやElectronとの大きな差です。&lt;/p>
&lt;p>地味ながら重要なのが&lt;strong>セキュリティ強化&lt;/strong>です。&lt;code>min-release-age&lt;/code>がデフォルト24時間に設定され、npmパッケージは公開から24時間経たないとインストール対象になりません。公開直後に悪意あるコードが混入する「レースウィンドウ攻撃」への有効な防御です。npm/pnpm/yarn/Bunのロックファイルを直接&lt;code>deno.lock&lt;/code>に変換できる移行支援も加わり、既存エコシステムからの乗り換え摩擦が大きく下がりました。&lt;/p>
&lt;hr>
&lt;h2 id="3-30年のパイプ改善linux-72が解いた長年の競合">&lt;a href="#3-30%e5%b9%b4%e3%81%ae%e3%83%91%e3%82%a4%e3%83%97%e6%94%b9%e5%96%84linux-72%e3%81%8c%e8%a7%a3%e3%81%84%e3%81%9f%e9%95%b7%e5%b9%b4%e3%81%ae%e7%ab%b6%e5%90%88" class="header-anchor">&lt;/a>3. 30年のパイプ改善——Linux 7.2が解いた長年の競合
&lt;/h2>&lt;p>3つめは、Linuxカーネルの奥深い最適化の話です。シェルでおなじみの&lt;code>|&lt;/code>（パイプ）に、実は長年の非効率が潜んでいました。&lt;/p>
&lt;p>Linux 7.2で、匿名パイプへの書き込み処理&lt;code>anon_pipe_write()&lt;/code>が大幅に改善されました。発見者はMetaのエンジニアBreno Leitao氏。キャッシュのプロファイリング中に&lt;strong>副次的に&lt;/strong>見つけた問題だったといいます。&lt;/p>
&lt;p>原因は、パイプにデータを書く際のメモリ割り当て（&lt;code>alloc_page()&lt;/code>）を、&lt;strong>排他ロックを保持したまま&lt;/strong>行っていたことでした。このメモリ割り当てはメモリが逼迫するとスリープして時間がかかることがあり、その間ロックを握りっぱなしになるため、同じパイプを読んでいるプロセスまで待たされてしまいます。書き手がメモリ確保で詰まると、読み手も巻き添えになる構図です。&lt;/p>
&lt;p>修正は、ロックを取る&lt;strong>前&lt;/strong>に最大8ページを事前割り当てしておき、使わなかった分はキャッシュに戻すという素直な戦略。これだけで、スループットが通常負荷時で最大28%、メモリ逼迫時には**最大48%**も向上しました。&lt;/p>
&lt;p>興味深いのは、なぜ30年以上も見過ごされてきたのか、という点です。通常の負荷ではメモリ割り当てはほぼ一瞬で終わるため、問題が表面化しにくかったのです。メモリが逼迫して初めて遅延が顕在化する「確率的」なバグでした。Kubernetesで多数のコンテナがメモリを奪い合う本番環境こそ、この改善の恩恵が大きい場所です。「継続的なプロファイリングの大切さ」を示す好例として受け止められています。&lt;/p>
&lt;hr>
&lt;h2 id="4-wal-rusclickhouseがgo製バックアップツールをrustで書き直した理由">&lt;a href="#4-wal-rusclickhouse%e3%81%8cgo%e8%a3%bd%e3%83%90%e3%83%83%e3%82%af%e3%82%a2%e3%83%83%e3%83%97%e3%83%84%e3%83%bc%e3%83%ab%e3%82%92rust%e3%81%a7%e6%9b%b8%e3%81%8d%e7%9b%b4%e3%81%97%e3%81%9f%e7%90%86%e7%94%b1" class="header-anchor">&lt;/a>4. WAL-RUS——ClickHouseがGo製バックアップツールをRustで書き直した理由
&lt;/h2>&lt;p>4つめは、実務に直結するOSSの動きです。ClickHouseが、PostgreSQL用のバックアップ・WALアーカイブツール&lt;strong>WAL-G&lt;/strong>（Go実装）をRustで書き直した**「WAL-RUS」**をオープンソース公開しました。名前はセイウチ（Walrus）にひっかけたユーモアですが、動機はいたって深刻です。&lt;/p>
&lt;p>問題は&lt;strong>Goのガベージコレクションによるメモリ使用量の予測困難さ&lt;/strong>でした。GoランタイムはメモリプールやGCの都合で、実際の使用量よりかなり多くの仮想メモリを予約する傾向があります。マルチテナントのマネージドPostgreSQLを小さなインスタンス（8GB程度）に同居させると、バックアッププロセスがピーク時に2.8GBもの仮想メモリを予約し、他のワークロードを圧迫してしまうのです。&lt;/p>
&lt;p>WAL-RUSはRustの所有権システムによるGCレスなメモリ管理で、仮想メモリのピークを**1GB未満（70%超の削減）**に抑えつつ、スループットやCPU効率はWAL-Gと同等を維持しました。有界ワーカープールで並行数を明示的に制御し、永続接続でオーバーヘッドを削り、PostgreSQL 17のWALサマリー機能を使った増分バックアップにも対応しています。&lt;/p>
&lt;p>うれしいのは互換性です。WAL-Gと同じ&lt;code>WALG_&lt;/code>プレフィックスの環境変数をそのまま使え、アーカイブも双方向に読み書きできます。&lt;code>archive_command&lt;/code>をWAL-RUSのバイナリに差し替えるだけで移行でき、既存ユーザーのハードルは低めです。「GCあり言語で書かれたインフラツールをRustで書き直す」事例としても、ほかの分野の参考になりそうです。&lt;/p>
&lt;hr>
&lt;h2 id="5-国家ぐるみのsignal奪取暗号は破られていないそれでも会話は筒抜けに">&lt;a href="#5-%e5%9b%bd%e5%ae%b6%e3%81%90%e3%82%8b%e3%81%bf%e3%81%aesignal%e5%a5%aa%e5%8f%96%e6%9a%97%e5%8f%b7%e3%81%af%e7%a0%b4%e3%82%89%e3%82%8c%e3%81%a6%e3%81%84%e3%81%aa%e3%81%84%e3%81%9d%e3%82%8c%e3%81%a7%e3%82%82%e4%bc%9a%e8%a9%b1%e3%81%af%e7%ad%92%e6%8a%9c%e3%81%91%e3%81%ab" class="header-anchor">&lt;/a>5. 国家ぐるみのSignal奪取——暗号は破られていない、それでも会話は筒抜けに
&lt;/h2>&lt;p>最後は、国家レベルのセキュリティ脅威です。FBIとCISAが2026年6月26日、ロシア情報機関に紐づく脅威グループが、&lt;strong>Signalのバックアップリカバリーキー&lt;/strong>を狙うフィッシングキャンペーンを展開しているとして警告を更新しました。&lt;/p>
&lt;p>ここでの逆説が重要です。&lt;strong>Signalの暗号化そのものは一切破られていません&lt;/strong>。攻撃者が狙うのは、会話履歴のバックアップを復号するための64文字の「リカバリーキー」。このキーと電話番号さえあれば、任意の端末で過去のすべての会話を完全に復元できてしまいます。暗号化が強固でも、その鍵を本人から騙し取れば、暗号は無意味になるという攻撃です。&lt;/p>
&lt;p>手口は3段階。まずSignal公式サポートを装い「ハッキングが急増しているので2段階認証を強制します」といった虚偽のSMSで緊迫感を演出します。続いて「データ同期の問題でメッセージが失われる恐れがある」として、リカバリーキーをコピーして送るよう誘導します（&lt;strong>正規のSignalは決してこんな要求をしません&lt;/strong>）。キーを得た攻撃者は自分の端末でバックアップを復元し、被害者の過去・現在の会話をすべて閲覧できる状態になります。&lt;/p>
&lt;p>とりわけ恐ろしいのは&lt;strong>持続性&lt;/strong>です。被害者が同じ電話番号で新規アカウントを作り直しても、旧リカバリーキーは有効なまま。パスワードや端末を変えても効果はなく、Signal設定で「新しいリカバリーキーを生成」するまでこの状態が続きます。標的は外交官・軍人・ジャーナリスト・活動家など「高い情報価値を持つ個人」で、すでに数千アカウントが世界規模で侵害されたとされています。&lt;/p>
&lt;p>対策は、リンク済みデバイスに身に覚えのないものがないか確認する、PINを強固なものに変更する、漏洩の疑いがあればリカバリーキーを再生成する、そして&lt;strong>アプリ内やSMSで鍵やコードを求めるメッセージは一律に疑う&lt;/strong>こと。セキュリティコミュニティでは「これは暗号の問題ではなく、純粋にソーシャルエンジニアリングの問題だ」という指摘が相次いでいます。&lt;/p>
&lt;hr>
&lt;h2 id="まとめ">&lt;a href="#%e3%81%be%e3%81%a8%e3%82%81" class="header-anchor">&lt;/a>まとめ
&lt;/h2>&lt;p>クリーンに見えるリポジトリが攻撃ベクターになり、暗号化アプリが鍵管理で破られ、30年使われた定番ツールにメモリの非効率が眠っていた——今週の5トピックには「安全/安定と思い込んでいたものを再検証せよ」というメッセージが通底しています。一方でDeno 2.9やWAL-RUSのように、前提を疑い、作り直すことで前進する動きも確かにあります。&lt;strong>疑うことは、止まることではなく、より確かな足場を作ること&lt;/strong>なのかもしれません。&lt;/p>
&lt;p>動画では各トピックをやさしい対話形式でさらに詳しく解説しています。ぜひあわせてご覧ください！&lt;/p></description></item></channel></rss>