web-dev-qa-db-ja.com

デジタル署名によってCCleanerの侵害が防がれたでしょうか?

今日は CCleaner hack と、コードがバイナリにどのように注入されたかについて読みました。人々は会社が気付く前に侵害されたソフトウェアをダウンロードしてインストールすることができました。

これはデジタル署名の目的ではありませんか?バイナリに署名するか、チェックサムを提供することで、これを防ぐために何かしましたか?

混乱を増すために、 このロイターニュース記事 で、研究者はデジタル署名があったと主張します。

「ユーザーが気づいたことは何もない」とウィリアムズ氏は述べ、最適化ソフトウェアには適切なデジタル証明書があり、他のコンピューターがプログラムを自動的に信頼していることを指摘した。

OSは無効な署名を持つソフトウェアのインストールをどのように受け入れますか?または、攻撃者はバイナリおよびを変更して署名を偽造できますか?

60
user47894

これまでにリリースされた不完全な詳細に基づいて、悪意のあるコードがコンパイルおよび署名の前に挿入されました(たとえば、開発者のマシンまたはビルドサーバー)。その結果、侵害されたバージョンは、妥協のないバージョンで使用されるのとまったく同じプロセスによって署名されました。欠陥が導入されましたbeforeバイナリの署名が行われました。

同様に、チェックサムはコンパイルの結果に基づいて計算されていましたが、その時点で、悪意のあるコードはすでに存在していました。

これは、すべての署名アーキテクチャの弱点です。署名前のプロセスが危険にさらされている場合、それを検出する実際の方法はありません。これは、それらが役に立たないという意味ではありません。署名が適用されるまで攻撃者がシステムにアクセスできなかった場合、署名が一致していなかったため、改ざんが簡単に検出されたはずです。

94
Matthew

信頼できる証明書によって署名されることと、コードの公開ハッシュ/チェックサムを持つことは異なります。

証明書は、ソフトウェアが信頼できる発行元からのものであることを通知します(すべきです)が、それだけです。

ハッシュまたはチェックサムを使用すると、バイナリが最初に計算されたハッシュと一致することを確認できます。ただし、この場合、悪意のあるコードがソースコードに存在している間にハッシュが計算されたため、偽の安心感が追加されない限り、この特定の保護手段がレンダリングされました。

パブリックハッシュまたはチェックサムを提供する場合(ソースコードが危険にさらされていないと想定)、そのハッシュがサードパーティのドメインから提供されるようにする必要があります。攻撃者がサイトを侵害し、正規のバイナリを悪意のあるバイナリに交換し、サイトに表示している公開ハッシュを変更する状況を想像してみてください。少なくともそれがサードパーティから提供された場合、攻撃者はハッシュを変更するためにそのサードパーティを危険にさらす必要があります。

この特定の攻撃は明らかにハッキングされた開発者マシンの結果だったので、これらのハッシュ/チェックサムまたはコード署名コントロールはいずれにしても使用されなかったでしょう。

4
Trickycm