web-dev-qa-db-ja.com

RAMのデータを保護することの影響

誰かが彼の会社がすべてのアプリケーションデータ(少なくとも私が推測する機密データ)をRAMセキュリティのために)に保存していると言いました。彼らのアプリケーションは長期間実行されるため、データはメモリに残ります。長い時間。

ディスクではなくRAMに保存すると、どのように安全になりますか? RAMアクセス/悪用するのは難しいですか、それとも単に揮発性であるためですか?

6
user19833

情報をRAMに保持すると、適切に実行され、要件で許可されている場合、セキュリティを強化できます。データをRAMに保持する2つのセキュリティアーキテクチャを示します。 =はセキュリティ上の利点を提供します。これらはかなり具体的なシナリオです。ほとんどの場合、RAMでデータを保持することは役に立ちません。

ファイルダンプ攻撃に対する保護

サーバー上のファイルを操作するWebアプリケーションについて考えてみます。この脆弱性の1つの種類は、リモートで公開することを想定していないファイルをユーザーがダウンロードできるようにすることです。重要なデータの一部が一部のプロセスのメモリにのみ保存されている場合(ここでは関係ありませんRAM関係ありますが、ファイルシステムではなく仮想メモリです)、それはファイル公開の脆弱性によって明らかにされました。

もちろん、データは他の脆弱性を介して明らかになる可能性があります。たとえば、最初に機密データをファイル(何らかのエラーダンプなど)に書き込んでから、ダンプファイルを公開するように調整する攻撃チェーンがあります。

データをメモリに保持することは、そもそもファイルから読み込まれていない場合にのみ役立ちます。起動後、どこでデータを取得しますか?データは暗号化して保存できますが、再起動後に誰かが復号化キーを入力する必要があります。ダウンタイムを許容できないため、これはほとんどのWebアプリケーションに適していません。データは、Webサーバーにはない追加の権限が必要なファイルに保存できます。Webサーバープロセスは、昇格された権限で起動し、ファイルを読み取ってから、権限を削除します。攻撃者が足場を与えたリモートの脆弱性に加えて、ローカルの権限昇格の脆弱性を見つける必要があるため、これは攻撃者の基準を引き上げます。攻撃者に非特権のローカルアクセスを与える多くの攻撃は、アクティブなプロセスのメモリを検査する方法も提供するため、利点は小さいままです。

物理的なアクセスによる一部の攻撃に対する防御

RAMの情報は、RAMの電源がオフの場合に表示されなくなります。したがって、攻撃者がターゲットシステムの電源をオフにすることでしか把握できない場合、 RAMのみにある場合、データへのアクセスに問題が発生します。ただし、RAMにデータを保存しても、 RAMは数秒から数分の一部のデータ残留も参照)RAM PCがオフになっていますか? )これは、攻撃者が制御するオペレーティングシステムでコンピュータを再起動するか、RAMスティックを別のコンピュータに転送するのに十分です。( も参照してください)電源を切った後もデータを保持しない揮発性メモリチップはありますか?

データの暗号化は役立ちますが、暗号化キーをどこかに保存する必要があります。データを暗号化する場合は、とにかくこれをディスク上で実行できます。ほとんどの機密データを暗号化すると、攻撃者が運が悪ければキーを紛失してもデータは安全です。

したがって、データをRAMに保存してセキュリティを強化するには、物理​​的なセキュリティ対策を追加する必要があります。RAMが改ざん防止ケース内にある場合開くと電源がオフになる原因となりますが、RAMの残留磁気を超えるのに十分な場合があります。より良い結果を得るには、改ざんを試みてマザーボードの電源をオフにする前にRAM (これは、マザーボードには小さなバッテリーが必要であることを意味します。データを暗号化すると、キーのみをゼロにする必要があるため、時間がかかりません。改ざん対策が十分なツールで無効にできる場合でも、単純なパスアンドスナッチよりも攻撃が困難です(携帯電話のケース内に回路基板を持つ攻撃者よりも、ボルトカッターを備えた侵入者が目立ちます)。

さらに、RAMを暗号化して、キーがプロセッサキャッシュまたは registers に保持されていることを確認することは価値があります。攻撃者は通常、キーを取得するために再起動する必要があります。元のキャッシュを見つけるのに十分な速さで再起動し、キャッシュを壊さないで再起動するのは難しく、CPUを取り外すのはRAMを取り外すよりも困難です。

もちろん、データがどこから読み込まれるか(または、暗号化されている場合は、キーが格納される場所)の問題は常にあります。一部のユースケースは、可用性よりも機密性を重視し、再起動のたびに誰かが来てキーを入力するように要求する余裕があります(たとえば、大規模なデータセンターでは、侵入者が遠くまで行った場合に備えて、24時間体制で誰かがそれを実行できる場合があります)。このセキュリティ対策は、データを処理するが保存しないシステムにもメリットがあります。

彼らは曖昧さによる誤った安心感に慰められている

誰かがあなたのマシンへのrootアクセス権を取得すると、アプリケーションが実行できるすべての内容をすべて見ることができます。アプリケーションがキーをどこかに保存する必要があるため、アプリケーションがプレーンテキストで動作する必要がある場合、暗号化は役に立ちません。これらのキーを隠すことは、あいまいさによるセキュリティの源であり、最終的に侵入者はそれらを見つけてコピーします。

上記にもかかわらず、すべてのデータをRAMに保持しておくと、電源の喪失はデータの喪失を意味するため、物理的な安全性の指標になります。ただし、そのデータがRAMそして、メモリスワップ操作などによって永続ストアに移動すると、すべての賭けがオフになります。また、ソルトに値するすべてのデータセンターには、侵入に対する保険がかけられているため、強固な物理的セキュリティ計画が実施されます。無意味なの。

もちろん、パフォーマンス上の理由から高速アクセスのためにデータをRAMに保持することは完全に有効ですが、結果としてセキュリティが何らかの形で強化されているとは考えないでください。

6
Gary Rowe

コアファイルの危険性について誰も指摘していないことに驚いています。ほとんどのUnixまたはLinuxバリアントは、プロセスがクラッシュしたときに「コア」ファイルをディスクに書き込むのに役立ちます。コアファイルには通常、クラッシュ時にそのプロセスのRAMの内容が含まれているため、問題の原因となっているデータまたは状態を見つけることができます。後で、適切な権限を持つユーザーがこのファイルにアクセスして、デッドプロセスがメモリに保持していたデータの残骸。この理由だけで、メモリに保持されているデータは、ディスクに格納されているデータよりも実際には安全ではないと思います。これについて何か追加することはありますか?

2
Luke

マシンの電源を切ると消えるので、少し難しいです。ハードドライブ/ラップトップを盗むだけでなく、誰かが実行中にマシンにアクセスする必要があります。

つまり、メモリはどこかから入力する必要があります。それがリモートマシンである場合、大部分のシナリオでデータをディスクに保持するよりも通常はリスクが高い攻撃の道を開いたことになります。

1
Telastyn

メモリはディスクよりも機密情報を取得するのが難しいかもしれませんが、可能性はまだ存在しています。データも暗号化されていない場合、侵害される可能性があります。このため、最近PowerShellで安全な文字列を調査しました。はい、それはいつかプレーンテキストである必要がありますが、使用されるのを待っている間は必要ありません。 RAMからのデータは、強制クラッシュダンプから取得できます。これは、RAMにあるからといって、ページング操作中にディスクにアクセスしないという意味ではありません。 。

1
Bratch

これはほとんどばかげていると思います。攻撃者がハードドライブのデータにアクセスできる場合、攻撃者はほぼ確実にメモリにもアクセスできます(そしてまたはその逆)。データがどこにあるかに関係なく、暗号化する必要があります。それがこの問題の真の解決策です。

さらに、すべてのデータをメモリに保持すると、アプリケーションにいくつかの悪影響(メモリの膨張、より複雑なコードなど)が生じる可能性があります。これは、問題を解決するための「正しい」方法ではありません。

0
Oleksi

役立つのは、ハードウェアの信頼のルートに依存するIntelのSGXやAMDのSEVのような新しいメモリ暗号化技術です。 Intel SGXの場合、アプリケーションのデータは、CPUのみがアクセスできるキーを使用してメモリ内で暗号化され、特定のコードに固定できるため、他のアプリケーション(rootユーザーも含む)はアクセスできません。データ。さらに、CPU固有のキーを使用して(保存されている)保存データを暗号化することが可能で、前述の攻撃の一部を防ぐことができます。

0
crcat