<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Git on 思いつきそうで思いつかなくていたときに</title><link>https://blog.fuga.jp/tags/git/</link><description>Recent content in Git on 思いつきそうで思いつかなくていたときに</description><generator>Hugo -- gohugo.io</generator><language>ja</language><copyright>Copyright(c) 2022-2025 SATO Daisuke. All rights reserved.</copyright><lastBuildDate>Wed, 01 Jul 2026 00:00:00 +0900</lastBuildDate><atom:link href="https://blog.fuga.jp/tags/git/index.xml" rel="self" type="application/rss+xml"/><item><title>危険な既定を、安全な既定へ——npm・Git・Linuxが「引き算」で攻撃面を削った日</title><link>https://blog.fuga.jp/posts/2026-07-01-npm-v12-git-rust-linux72-strncpy/</link><pubDate>Wed, 01 Jul 2026 00:00:00 +0900</pubDate><guid>https://blog.fuga.jp/posts/2026-07-01-npm-v12-git-rust-linux72-strncpy/</guid><description>&lt;p>こんにちは！Agy無限会社のコンテンツ制作部です。&lt;/p>
&lt;p>今回のテーマは**「危険な既定を、安全な既定へ」**です。新しい機能を足すのではなく、危ないものをデフォルトから外したり、完全に削除したりすることで安全性を高めるニュースが、今日は奇妙なほど重なりました。npmはインストール時の自動実行を、Gitはメモリ安全でないC言語への依存を、Linuxカーネルは6年がかりで危険なAPIを——いずれも「足し算」ではなく「引き算」で守りを固めた一日です。&lt;/p>
&lt;hr>
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/nHo6EPpF4M8"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;hr>
&lt;h2 id="1-npm-v12installスクリプトの自動実行ついにデフォルト無効化">&lt;a href="#1-npm-v12install%e3%82%b9%e3%82%af%e3%83%aa%e3%83%97%e3%83%88%e3%81%ae%e8%87%aa%e5%8b%95%e5%ae%9f%e8%a1%8c%e3%81%a4%e3%81%84%e3%81%ab%e3%83%87%e3%83%95%e3%82%a9%e3%83%ab%e3%83%88%e7%84%a1%e5%8a%b9%e5%8c%96" class="header-anchor">&lt;/a>1. npm v12——installスクリプトの自動実行、ついにデフォルト無効化
&lt;/h2>&lt;p>JavaScriptのパッケージマネージャnpmが、2026年7月にメジャーバージョンv12をリリースします。最大の変更は、依存パッケージが持つ&lt;code>preinstall&lt;/code>・&lt;code>install&lt;/code>・&lt;code>postinstall&lt;/code>スクリプトが、&lt;code>npm install&lt;/code>実行時に&lt;strong>自動では走らなくなる&lt;/strong>ことです。&lt;/p>
&lt;p>これまでnpmは、依存パッケージをnode_modulesに展開する際、確認なしにこれらのライフサイクルスクリプトを実行してきました。v12ではこの挙動が逆転し、スクリプトを走らせたい場合はプロジェクト側が明示的に許可する必要があります。&lt;/p>
&lt;p>技術的に重要なのが、&lt;code>binding.gyp&lt;/code>ファイルを持つネイティブアドオンの扱いです。従来npmはこのファイルを検出すると暗黙に&lt;code>node-gyp rebuild&lt;/code>を実行していましたが、v12ではこの暗黙実行も遮断されます。sharp・bcrypt・canvas・sqlite3・esbuildといった、ネイティブコードを持つ定番パッケージは、事前の許可設定なしにはビルドが通らなくなる可能性があります。&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>変更項目&lt;/th>
&lt;th>従来(v11まで)&lt;/th>
&lt;th>npm v12&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>依存のinstallスクリプト&lt;/td>
&lt;td>自動実行&lt;/td>
&lt;td>デフォルト無効&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>binding.gypの暗黙ビルド&lt;/td>
&lt;td>自動&lt;code>node-gyp rebuild&lt;/code>&lt;/td>
&lt;td>遮断&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Git依存(&lt;code>github:&lt;/code>/&lt;code>git+https:&lt;/code>)&lt;/td>
&lt;td>そのまま解決&lt;/td>
&lt;td>&lt;code>--allow-git&lt;/code>が必要&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>リモートURL依存(&lt;code>https://*.tar.gz&lt;/code>)&lt;/td>
&lt;td>そのまま解決&lt;/td>
&lt;td>&lt;code>--allow-remote&lt;/code>が必要&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>背景には深刻な実害があります。2025年中に悪意あるnpmパッケージが&lt;strong>45万5千件超&lt;/strong>公開され、同年9月にはdebug・chalkを含む人気パッケージ18本が乗っ取られ、週間ダウンロード数の合計が26億件を超えるパッケージ群が一斉に危険にさらされました。さらに2026年6月には「Miasmaワーム」が登場。&lt;code>binding.gyp&lt;/code>を悪用する「Phantom Gyp」というテクニックは、定番の&lt;code>--ignore-scripts&lt;/code>フラグすら回避してしまいました。v12がこの暗黙実行まで遮断対象に含めたのは、この教訓への直接対応です。&lt;/p>
&lt;p>CI/CDパイプラインで&lt;code>npm ci&lt;/code>を使っている現場は、7月を待たずに&lt;code>npm approve-scripts&lt;/code>を試し、&lt;code>--strict-allow-scripts&lt;/code>でどのパッケージが引っかかるか把握しておくことをお勧めします。&lt;/p>
&lt;hr>
&lt;h2 id="2-git-255rustがビルドのデフォルト依存に">&lt;a href="#2-git-255rust%e3%81%8c%e3%83%93%e3%83%ab%e3%83%89%e3%81%ae%e3%83%87%e3%83%95%e3%82%a9%e3%83%ab%e3%83%88%e4%be%9d%e5%ad%98%e3%81%ab" class="header-anchor">&lt;/a>2. Git 2.55——Rustがビルドのデフォルト依存に
&lt;/h2>&lt;p>分散バージョン管理システムGitが、2026年6月29日に2.55をリリースしました。今回の節目は、&lt;strong>Rustコンパイラがビルドのデフォルト依存になった&lt;/strong>ことです。これまでオプトインだったRustが、明示的に無効化しない限りビルド時に必須となります。&lt;/p>
&lt;p>無効化したい場合はMakefileなら&lt;code>make NO_RUST=YesPlease&lt;/code>、Mesonなら&lt;code>meson configure -Drust=disabled&lt;/code>を指定します。ただし、この猶予は2026年後半予定のGit 3.0までです。3.0では無効化オプション自体が廃止され、Rustが完全必須化されます。&lt;/p>
&lt;p>採用されているのはSebastian Thiel氏が主導する純粋Rust実装プロジェクト「gitoxide(gix)」。最初に置き換えられたのは可変幅整数エンコーディングやxdiff(差分・マージエンジン)といった低レベルコンポーネントで、コンポーネントによっては5〜19%のパフォーマンス向上も期待されています。&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>バージョン&lt;/th>
&lt;th>時期&lt;/th>
&lt;th>Rustの扱い&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Git 2.49&lt;/td>
&lt;td>2025年初頭&lt;/td>
&lt;td>試験的に導入&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Git 2.52&lt;/td>
&lt;td>2025年後半&lt;/td>
&lt;td>Mesonで自動検出・有効化&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Git 2.55&lt;/td>
&lt;td>2026年6月29日&lt;/td>
&lt;td>デフォルト有効(オプトアウト可)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Git 3.0&lt;/td>
&lt;td>2026年後半予定&lt;/td>
&lt;td>完全必須化&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>移行の直接的なきっかけは、2022年12月に公開された重大な脆弱性CVE-2022-41903・CVE-2022-23521です。いずれもCコードの整数オーバーフローとヒープメモリ破壊に起因するリモートコード実行(RCE)でした。これを受けて2023年にOSTIF資金援助のもとX41 D-SECとGitLabによる独立監査が実施され、「Cのメモリ管理モデルそのものが構造的な問題」という認識からRustへの長期移行方針が固まっています。&lt;/p>
&lt;p>ソースからGitをビルドするCI/CDパイプライン、Debian・Fedora・Alpineのメンテナ、エアギャップ環境を運用する組織は、半年という猶予の中で計画的な準備が必要です。&lt;/p>
&lt;hr>
&lt;h2 id="3-arch-linux-20260701-isoarchinstall-44で最初の数十分を磨く">&lt;a href="#3-arch-linux-20260701-isoarchinstall-44%e3%81%a7%e6%9c%80%e5%88%9d%e3%81%ae%e6%95%b0%e5%8d%81%e5%88%86%e3%82%92%e7%a3%a8%e3%81%8f" class="header-anchor">&lt;/a>3. Arch Linux 2026.07.01 ISO——Archinstall 4.4で「最初の数十分」を磨く
&lt;/h2>&lt;p>Arch Linuxの2026年7月度ISOが本日リリースされました。6月28日に公開されたばかりのArchinstall 4.4を同梱し、インストール体験を着実に底上げしています。&lt;/p>
&lt;p>目玉のひとつが&lt;strong>インストールサマリー&lt;/strong>です。設定内容をディスク書き込み前に赤(エラー)・黄(警告)・緑(準備完了)で色分け表示し、後戻りしにくい操作の直前に確認できる安全弁が増えました。コンソールフォントも言語選択と連動して自動設定されるようになり、CJK言語インストール時の文字化けが防げます。&lt;/p>
&lt;p>デスクトップ環境としては、Rust製のスクロール型タイリングWaylandコンポジター&lt;strong>Niri&lt;/strong>と、Material You風シェルの&lt;strong>DankMaterialShell&lt;/strong>を組み合わせたプロファイルが新規追加されました。セキュリティ面ではEFIシステムパーティションの権限が&lt;code>fmask=0077&lt;/code>/&lt;code>dmask=0077&lt;/code>に強化され、機微なブート関連ファイルへの不正アクセスを防いでいます。&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>機能&lt;/th>
&lt;th>内容&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>インストールサマリー&lt;/td>
&lt;td>色分け事前確認で誤設定防止&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>IWDスタンドアロン&lt;/td>
&lt;td>NetworkManager不要の軽量Wi-Fi構成&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Niri+DankMaterialShell&lt;/td>
&lt;td>Rust製タイリングWayland環境&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>EFI権限強化&lt;/td>
&lt;td>fmask/dmask=0077で改ざんリスク低減&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>派手さはありませんが、インストールサマリーの確認画面やEFI権限強化は「うっかりミスや改ざんを未然に防ぐ」方向の改善であり、今日の他のニュースと同じ「安全側へデフォルトを寄せる」流れの末端に位置しています。&lt;/p>
&lt;hr>
&lt;h2 id="4-kali-linux-20262vm起動が約3倍速く攻撃面も縮小">&lt;a href="#4-kali-linux-20262vm%e8%b5%b7%e5%8b%95%e3%81%8c%e7%b4%843%e5%80%8d%e9%80%9f%e3%81%8f%e6%94%bb%e6%92%83%e9%9d%a2%e3%82%82%e7%b8%ae%e5%b0%8f" class="header-anchor">&lt;/a>4. Kali Linux 2026.2——VM起動が約3倍速く、攻撃面も縮小
&lt;/h2>&lt;p>セキュリティ専門ディストリビューションKali Linuxが2026.2をリリースしました。GNOME 50・KDE Plasma 6.6を採用し、新規ツール9本を追加。最大の実用的トピックは&lt;strong>仮想マシン向けのブート高速化&lt;/strong>です。&lt;/p>
&lt;p>従来のVMイメージにはNVIDIA・AMD・Intelの全GPU向けグラフィクスファームウェアが含まれ、initrdが約200MBに膨らんでいました。VMユーザーは物理GPUを使わないため、2026.2ではこれを丸ごと除外し、initrdを&lt;strong>約60MB&lt;/strong>まで削減。QEMU環境でのブート時間が&lt;strong>約3倍高速化&lt;/strong>しました。Hyper-V向けにはGen2 VMでEFIスタブ直接ブートを採用し、GRUB2を省略しています。&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>項目&lt;/th>
&lt;th>従来&lt;/th>
&lt;th>2026.2(VM向け)&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>initrdサイズ&lt;/td>
&lt;td>約200MB&lt;/td>
&lt;td>約60MB(約70%削減)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>QEMUブート時間&lt;/td>
&lt;td>基準&lt;/td>
&lt;td>約1/3&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>カーネルはLinux 7.0ではなく&lt;strong>6.19&lt;/strong>を採用。NVIDIA DKMSドライバとの互換性問題を避け、GPU活用ツールの実用性を優先した判断です。新規ツールにはAI支援のshell-gpt、OSINT用tookie-osint、ブルートフォース用legbaなどが加わりました。&lt;/p>
&lt;p>VMでKaliを起動して作業するペンテスターにとって、「ちょっと起動して試す」のハードルが大きく下がります。使わないファームウェアを思い切って削るという発想は、今日のニュース全体を貫く「引き算」の思想そのものです。&lt;/p>
&lt;hr>
&lt;h2 id="5-linux-72-rc143m行突破のカーネルが危険なstrncpyを6年がかりで根絶">&lt;a href="#5-linux-72-rc143m%e8%a1%8c%e7%aa%81%e7%a0%b4%e3%81%ae%e3%82%ab%e3%83%bc%e3%83%8d%e3%83%ab%e3%81%8c%e5%8d%b1%e9%99%ba%e3%81%aastrncpy%e3%82%926%e5%b9%b4%e3%81%8c%e3%81%8b%e3%82%8a%e3%81%a7%e6%a0%b9%e7%b5%b6" class="header-anchor">&lt;/a>5. Linux 7.2-rc1——43M行突破のカーネルが、危険なstrncpyを6年がかりで根絶
&lt;/h2>&lt;p>Linus Torvaldsが6月28日にLinux 7.2-rc1を公開しました。カーネルのソースツリーが初めて&lt;strong>4300万行&lt;/strong>を突破する一方で、長年バッファオーバーフローの温床とされてきた&lt;code>strncpy()&lt;/code>APIが、&lt;strong>362パッチ・70人・6年&lt;/strong>という途方もない労力の末に完全削除されています。&lt;/p>
&lt;p>&lt;code>strncpy()&lt;/code>は、コピー元が宛先バッファと同じかそれ以上の長さの場合にNUL終端を保証しないという根本的な欠陥を抱えていました。Kernel Self Protection ProjectのリーダーでGoogle所属のKees Cook氏が削除完了を告知し、最大の貢献者であるGoogleのJustin Stitt氏は362コミットのうち211件(約58%)を単独で担当しています。&lt;/p>
&lt;p>削除にあたり、曖昧で危険な一つの関数は、意図が明確な5種の関数へ分解されました。&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>移行先関数&lt;/th>
&lt;th>役割&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>strscpy()&lt;/td>
&lt;td>NUL終端ありの標準コピー(最多使用)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>strscpy_pad()&lt;/td>
&lt;td>NUL終端＋末尾ゼロパディング&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>strtomem_pad()&lt;/td>
&lt;td>NUL終端なし固定幅フィールド向け&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>memcpy_and_pad()&lt;/td>
&lt;td>明示的パディングを伴うコピー&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>memcpy()&lt;/td>
&lt;td>長さ既知のメモリコピー&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>新機能も豪華です。AMDGPUのHDMI 2.1 FRL対応により4K/120Hzや8K/60Hzの高解像度出力が可能になり(デフォルト無効)、AMD ISP4カメラドライバはユーザー空間バイナリ非依存の完全オープンソースでRyzen AIノートPCのウェブカメラに対応しました。USB4/Thunderbolt経由の低遅延通信プロトコルUSB4STREAMや、マルチLLCドメインCPU向けのCache Aware Scheduling(CAS)も新規マージされています。&lt;/p>
&lt;p>カーネル内コードのみが対象のため、一般的なアプリケーション開発への直接影響はありません。ただし自前でカーネルモジュールをビルドしている開発者は、&lt;code>strncpy()&lt;/code>を使っていれば&lt;code>strscpy()&lt;/code>等への置き換えが必要です。43,898,743行という肥大化したコードベースの中で、たった一つの危険な関数を6年かけて根絶やしにしたという執念は、今日のニュース全体を締めくくるにふさわしい一件です。&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>今日の5本を貫く軸は、**「危険な既定を、安全な既定に置き換える」**という思想であり、その手段はいずれも機能の追加ではなく「引き算」でした。npm v12は依存パッケージのインストールスクリプト自動実行という長年の便利機能を削り、45万5千件超の悪意あるパッケージというサプライチェーンの脅威に応えました。Git 2.55はメモリ安全でないCへの依存を、Rustを既定に据えることで段階的に削り始めています。Arch Linuxはメンテナンスの切れたプロファイルを削り確認画面を足し、Kali LinuxはVMで使わないファームウェアを削って起動を3倍速くし、Linux 7.2-rc1は6年・362パッチ・70人で危険なstrncpy()を根絶やしにしました。&lt;/p>
&lt;p>ソフトウェアは放っておけば機能を足し続け、肥大化していきます。その流れに抗って、内部の危険な既定や古い遺産を意志をもって削り取る——この能動的な攻撃面削減こそが、今日の開発者界隈を貫いた共通言語でした。&lt;/p>
&lt;p>動画でも各トピックをやさしい対話形式で解説しています。ぜひあわせてご覧ください！&lt;/p></description></item></channel></rss>