90221


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


CC BY-SA 4.0
2022-07-26T14:36:19.393
90211
2022-07-27T04:45:02.253
36365
question
oss
実行中のOSSが、公開されたソースコードから改ざん/変更されていないことを保証する仕組み


ご質問の意図を正しく理解できているかわかりませんが、ハッシュ値で改ざんの有無を判断できます。

[【Windows 11対応】MD5／SHA-1／SHA-256ハッシュ値を計算してファイルの同一性を確認する：Tech TIPS -
＠IT](https://atmarkit.itmedia.co.jp/ait/articles/0507/30/news017.html)

>
> 大きなデータやプログラムなどを配布しているサイトでは、ファイルのチェックサムやハッシュ値などの情報も同時に掲載していることが少なくない。ユーザーは、ダウンロードしたファイルのハッシュ値を計算して、Webサイト上の記述と比較することにより、ダウンロードの成功／失敗、改ざんの有無を容易に判断できる。


CC BY-SA 4.0
2022-07-26T19:04:12.207
90219
2022-07-26T19:04:12.207
4982
90211
answer


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

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

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

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

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

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


CC BY-SA 4.0
2022-07-27T00:31:59.870
90221
2022-07-27T00:31:59.870
8589
90211
answer


「ソースコードが公開されている」プログラムも大きく分けて二通りがあり、ソースコードをそのまま実行するもの (いわゆるスクリプト)
は中身をそのまま検証すればいいのでここでは除外して、「ソースコードからコンパイルするもの」については、第三者による改ざんだけでなく、コンパイルの段階で悪意のあるコードが混入される可能性もゼロではありません。

配布ファイルの正当性については既に他の回答でも「ハッシュ値のチェック」する方法が書かれていますが、ひとまず **信頼できるサイトからのみダウンロードする**
を心掛けるくらいでしょうか。

* * *

システムにインストール後の改ざんをチェックするのであれば、Linux の主要なディストリビューションではコマンドを使って確認することができます。

**参考:**

[インストールされているファイルをオリジナルと比較するには -
@IT](https://atmarkit.itmedia.co.jp/flinux/rensai/linuxtips/627chksumrpm.html)

> システムのクラックやウイルス感染、操作ミスなどによって、システムにとって重要なファイルが変更されている可能性があるときは、`rpm` コマンドを
> `-V` オプション付きで実行することにより、インストールされているファイルがインストール直後と異なっているかどうかを比較できる。

[ パッケージの検証と修復 -
ArchWiki](https://wiki.archlinux.jp/index.php/Pacman/%E6%AF%94%E8%BC%83%E8%A1%A8#.E3.83.91.E3.83.83.E3.82.B1.E3.83.BC.E3.82.B8.E3.81.AE.E6.A4.9C.E8.A8.BC.E3.81.A8.E4.BF.AE.E5.BE.A9)  
[Can dpkg verify files from an installed package? - Server
Fault](https://serverfault.com/questions/322518/can-dpkg-verify-files-from-an-
installed-package)


CC BY-SA 4.0
2022-07-27T04:45:02.253
90226
2022-07-27T04:45:02.253
3060
90211
answer