web-dev-qa-db-ja.com

Debianパッケージの信頼性はどのように保証されていますか?

悪意のあるサードパーティがDebianミラーのコードのセキュリティをハッキング/侵害するのを防ぐため、または取得したパッケージが実際にメンテナが考えているものであることを確認するために、どのようなセキュリティシステムとプロセスが導入されていますか?

8
emf

パッケージの確認

ミラーの内容は、PGPキーを使用して直接または間接的に署名されます。 Debianディストリビューションの「ルート」から始めます。

  • ReleaseRelease.gpg で切り離された署名で署名され、すべてのパッケージインデックスとインストーラーのハッシュ(MD5、SHA1、SHA256)が含まれていますハッシュ( InRelease 2つを組み合わせる);
  • パッケージインデックス(例:binary-AMD64 )には、パッケージのハッシュ(MD5およびSHA256)が含まれます。

ハッシュと署名は、システムに保存されているPGPキー(apt-getによって管理されている)を使用して、apt-keyなどのツールによってチェックされます。受信システムが正常である限り、デフォルトでは、アーカイブPGPキーによって(間接的に)署名されていない場合、Debianアーカイブからパッケージをインストールすることはできません。ミラー上の侵入者は、関連するPGPキーも制御できない場合、バイナリを置き換えることはできません。

ミラーの制御

これは、アーカイブを危険にさらすだけでは、エンドユーザーシステムを実際に危険にさらすのに十分ではないことを意味します。また、それらのシステムがすでに信頼しているPGP鍵を危険にさらす必要があります。 (これの当然の結果として、Debianシステムにキーを追加することは軽視されるべきものではありません。)アーカイブのセキュリティはそれほど重要ではないので、これはある程度最初の質問に対処します。それにもかかわらず、重要なシステム(署名が行われる場所)は厳密に監視および監視されており、それらにアクセスできる人はほとんどいません。

メンテナの期待

パッケージが「実際にメンテナが考えているもの」であることを確認することは、もう少し複雑です。これは、パッケージがたどるパスです。

  • パッケージはメンテナによって準備され、Debianキーリングのキー(ieDebianキーリングにアップロードされたDebian開発者またはDebianメンテナに属するキーで署名されますサーバーとキーリング保守チームによってマージされました);
  • 署名されたパッケージはアーカイブにアップロードされ、そこで検証されます(特に、使用されるキーは現在のキーリングにあり、有効期限が切れていない必要があります。署名は有効である必要があります。パッケージがDMによって署名されている場合は、 DMパッケージに関連する権限が必要です);
  • アップロードされたバイナリはそのまま最終アーカイブにプッシュされます(ここでは少し簡略化していますが、それが効果です)。
  • 欠落しているバイナリはすべて buildd によってビルドされ、builddのPGPキーによって署名され、最終アーカイブにプッシュされます(どのビルドキーが有効であるかを認識し、それらに対してファイルを検証します)。
  • これらの更新はすべて、適切なインデックス更新(上記のように署名されている)とともに、最終的にミラーネットワークにプッシュされます。

メンテナがパッケージソースと一緒にバイナリをアップロードする場合、これらは最終的に提供されるファイルです(当面の間)。バイナリのアップロードはオプションになっているため、それらをスキップすることがますます一般的になり、最終的にアップロードされたバイナリは削除されます。 (これはUbuntuでは常に当てはまります。)他のバイナリがメンテナの期待に一致するかどうかは、構築されたネットワークによって異なります。そのため、ビルドも重要なシステムであり、厳密な監視下にあり、人間のアクセスはほとんどありません。すべてのアーティファクトが署名されているため、ファイルの整合性を常に検証できます。最初にメンテナのキーに対して、次にビルドのキーに対して、最後にアーカイブのキーに対してです。

plugwash で指摘されているように、元の署名はミラーで使用できず、どのDDでも欠落しているバイナリをアップロードできます。元の署名は debian-devel-changes アーカイブから取得できます。

要約すると、現在のシステムは完全ではありませんが、ミラーからダウンロードできるすべてのファイルのトレーサビリティを提供します。状況を改善するための多くの取り組みがあります: 再現可能なビルド (公開されたソースへのバイナリの対応の独立した検証を可能にします)、メンテナ提供のバイナリを削除します...

13
Stephen Kitt