何がdllファイルを保護するための最良の方法です

C ++ビルダーに大規模なアプリケーションビルドがあり、起動時にフォルダを参照して現在のすべてのdllファイルをロードします。私はこれがあまりいいことではないと思って、ウェブブラウザを起動したdllを作成して私の考えを試してみた。

Anyway, it worked. So the system could be compromised in any way by a dll being switched out or a new one added. Remote admin access, format drives, you name it.

だから私の考えはこの穴を塞ぐことに向かった。これのベストプラクティスは何ですか?私はある種の dllの署名を考えていました。 .exeが有効なdllの名前のリストを保持することは、dllが置き換えられる可能性があるため実際には解決しません。 名前とチェックサムのリストは機能しますが、オートローディング機能を維持して正しく署名されたdll のみを読み込むとよいでしょう。

編集:私は仕事をするように見える signtool.exe を使用して探しています。しかし、私は実際に C ++でdllの署名をチェックする方法のような良いリファレンスは見つけられません。リンクがある人は誰ですか?

2
しかし、私たちのプログラムですべてのバイナリファイルに署名することにした場合、そうでない場合よりもシステムを少しだけ保護することができます。証明書を使用して実行可能ファイルとDLLに署名するには、セキュリティの余分な層に少なくとも必要です。それが自分のものであるために何かをしないというアプローチは、私の本に100%安全なものがないということをしません。アプリケーションの安全性を確保するために、いくつかのレベルの保護を実装する方がよいでしょう。さもなければ、私たちはすべてセキュリティをドアから出して降伏させることができます;)
追加された 著者 inquam,
あなたはあなたの時間を無駄にしています。攻撃者は、あなたが署名を検証するために書いたコードを置き換えることはありません。あるいは、あなたのexeを彼のものに置き換えるだけです。
追加された 著者 Hans Passant,

2 答え

dllに脆弱であるようですハイジャックの悪用は、基本的にWindows用に書かれたすべてのものに影響を与えました。マイクロソフトはこの欠陥の緩和のための推奨事項を持っています。

0
追加された

DLLを含むフォルダを保護して、管理者権限を持つユーザーだけが書き込むことができるようにする必要があります。

それを超えると、そのようなフォルダに書き込むことができる人は、自分が欲しいと思っていることばかりでなく、あなたができることはあまりありません。

0
追加された