実行中のOSSが、公開されたソースコードから改ざん/変更されていないことを保証する仕組み


オープンソースソフトウェア（以下、OSS）について質問です。  
OSSとして公開されているソースコードには悪意が含まれていないことは、ソースコードを読めば確認できるとしても、  
クライアントもしくはサーバで実行中のコードが、公開されているソースコードから改ざんされるリスクがあるように思います。  
OSSに限らず、実行中のソフトウェアが、ある状態から改ざん/変更されていないことを保証する仕組みは、存在するのでしょうか？




Q1. 「作者が公開しているソースコードが、攻撃者の手で改変されていること」を、作者ないしは第三者がいかにして知るか  
A1. 既にあるとおり sha256 等のアルゴリズムでハッシュ値を調べることができる

のではありますが、作者が公開しているソースコードアーカイブファイルを攻撃者が入れ替えてしまえるということはすなわち、攻撃者は別のところに掲載しているハッシュ値を書き換えることができるということです。なのでハッシュ値の比較で改ざんのチェックとするのはほぼまったく無意味で、ハッシュ値チェックはダウンロード中のデータ化けをチェックする程度の意味しかないです。

複数のミラーサイトにミラーされているほどの有名プロジェクトであれば、ミラーサイト上のアーカイブファイルを全部入れ替えることはまず不可能であろうから、掲載されているハッシュ値を複数のミラーサイトで確認して一致をみるとか、同じアーカイブファイルを複数のミラーサイトからダウンロードして一致をみるとかすれば改ざんチェックと呼んでもよさそうです。

Q2. 公開されている OSS をコンパイルしたバイナリがあなたの手元にあるとき、そのバイナリを攻撃者が改変したことを知ることができるか  
A2. これも先と状況は同じで、攻撃者は既にあなたのサーバに侵入しているので以下略

> 実行中のソフトウェアが、ある状態から改ざん/変更されていないことを保証する仕組みは、存在するのでしょうか？

改ざんの定義をしないことには「保証する」もないのでまずはそこへんから。改ざんされている＝すでに侵入されている＝各種ログファイルなども書き換え済み、であろうことから普通には「ない」です。オフラインにできるテープ類にログ取っておいて、それをマウントするにはサーバに物理的接触が不可欠であるような状況を作り、そのオフラインログと現状を比較するくらいしか思いつかないです。




Q1. 「作者が公開しているソースコードが、攻撃者の手で改変されていること」を、作者ないしは第三者がいかにして知るか  
A1. 既にあるとおり sha256 等のアルゴリズムでハッシュ値を調べることができる

のではありますが、作者が公開しているソースコードアーカイブファイルを攻撃者が入れ替えてしまえるということはすなわち、攻撃者は別のところに掲載しているハッシュ値を書き換えることができるということです。なのでハッシュ値の比較で改ざんのチェックとするのはほぼまったく無意味で、ハッシュ値チェックはダウンロード中のデータ化けをチェックする程度の意味しかないです。

複数のミラーサイトにミラーされているほどの有名プロジェクトであれば、ミラーサイト上のアーカイブファイルを全部入れ替えることはまず不可能であろうから、掲載されているハッシュ値を複数のミラーサイトで確認して一致をみるとか、同じアーカイブファイルを複数のミラーサイトからダウンロードして一致をみるとかすれば改ざんチェックと呼んでもよさそうです。

Q2. 公開されている OSS をコンパイルしたバイナリがあなたの手元にあるとき、そのバイナリを攻撃者が改変したことを知ることができるか  
A2. これも先と状況は同じで、攻撃者は既にあなたのサーバに侵入しているので以下略

> 実行中のソフトウェアが、ある状態から改ざん/変更されていないことを保証する仕組みは、存在するのでしょうか？

改ざんの定義をしないことには「保証する」もないのでまずはそこへんから。改ざんされている＝すでに侵入されている＝各種ログファイルなども書き換え済み、であろうことから普通には「ない」です。オフラインにできるテープ類にログ取っておいて、それをマウントするにはサーバに物理的接触が不可欠であるような状況を作り、そのオフラインログと現状を比較するくらいしか思いつかないです。

