# マルウェア耐性 {#malware-resistance}

ソフトウェア更新を狙うサプライチェーン攻撃に対して、Takumi Images は構造的な耐性を持ちます。
攻撃を見つけて止める仕組みだけでなく、ビルドの成り立ちそのものが、侵害の入り込む余地を狭くしています。

## 密閉ビルドと全ソースの把握 {#hermetic-builds}

Takumi Images のビルドは、**密閉ビルド**（hermetic build）です。
Nix は derivation ごとにサンドボックスを作ってビルドし、宣言された入力以外（ネットワークや、宣言していないファイル）へのアクセスを遮断します。
外部ソースの取得は**固定出力導出**（fixed-output derivation、FOD）に限られ、コンテンツハッシュによってあらかじめ固定されます。

この性質により、イメージに入る全ソースの上流 URL、リビジョン、ハッシュを、ビルドツールのソースまで含めて機械的に列挙できます。
検査対象を列挙できなければ差分検査の対象範囲も定義できないため、この網羅性が、次に述べる検査の前提になります。
仕組みの詳細は[Nix のビルド入力の導出](/docs/ja/t/images/reference/nix-derivations)を参照してください。

## 上流ソースの差分検査 {#upstream-source-review}

Takumi Images は、各ビルドで、取り込んだ上流ソースの全量差分を検査します。

列挙した全ソースについて、前回のビルドから今回までの差分を取得し、悪意ある変更の兆候がないかを分析します。
公開前には、これとは別に、既知のパッケージマルウェアが含まれていないかの検査もあわせて実施します。
仕組みの詳細は[上流のマルウェア検知](/docs/ja/t/images/architecture/upstream-malware-detection)を参照してください。

## 検知の限界 {#detection-limits}

この検査は、完全ではありません。
悪意ある変更かどうかの判定には、原理的に見逃しがあり得ます。
検査を通過したことは、その差分に悪意がないことの証明ではなく、現時点の検査で兆候が見つからなかったという結果に留まることに留意する必要があります。
