7

Linux を実行しているデバイスがあり、これで信頼できないアプリケーションを実行する必要があります。私たちは、次のセキュリティ上の懸念を軽減しようとしています -

  1. 信頼されていないアプリケーションがコア OS データとバイナリに悪影響を与えることはできません。
  2. 信頼されていないアプリケーションが、別のアプリケーションのデータとバイナリに悪影響を与えることができないようにする必要があります
  3. 信頼できないアプリケーションは、CPU、メモリ、またはディスクを過剰に消費して、コア OS または他のアプリケーションに DoS/リソース不足のような状況を引き起こすことができないようにする必要があります。

信頼されていないアプリケーションの観点からは、独自のディレクトリと、おそらくマウントされた USB ドライブに対して読み書きできる必要があるだけです。

次のいずれかのアプローチを使用することを考えています -

アプローチ 1 - SELinux をサンドボックスとして使用する

  • これは可能ですか?SELinux を少し読んだことがありますが、ポリシー ファイルの設定や実行時の強制など、少し複雑に見えます。クォータ制限を設定しますか?

アプローチ 2 - 自分で新しいサンドボックスを作成する

  • インストール時間中

    • 信頼されていないアプリケーションごとに新しいアプリ ユーザーを作成する
    • アプリケーション ユーザーのみが読み書きできるように、アプリケーション ディレクトリとファイル全体にアクセス許可をスタンプします。
    • ulimit/quota を使用してアプリケーション ユーザーのクォータを設定する
  • 実行時に、次を使用して信頼できないアプリケーションを起動します

    • 開いているすべてのファイル記述子/ハンドルを閉じます
    • chroot を使用して、ルートをアプリケーション ディレクトリに設定します。
    • アプリケーション ユーザーのコンテキストでアプリケーションを起動する

上記についての考え?どちらのアプローチが他のアプローチよりも安全ですか? よりうまくいくかもしれない別のアプローチはありますか?何らかの理由で Android を移動する選択肢がないため、Android がネイティブで提供するサンドボックス機能を使用できません...

お知らせ下さい

ありがとう、

4

2 に答える 2

1

SELinux は、さらに複雑なユーザー権限と同様に適用される一連のルールです。各プロセスに使用して、そのプロセスのドメインを設定し、ほぼすべてのアクセスを許可または拒否できます。これは、ファイル、ネットワーク、またはプロセス/スレッドへのアクセスを意味します。そうすれば、一種のサンドボックスとして使用できます。ただし、プロセスごとにルール セットを用意するか、サンドボックス アプリケーションの前に実行する必要があるスクリプトを作成して、ルール自体を準備することができます。

CPU の消費を制御したい場合、SELinux には CPU プランナーがありません。これは、どのルールも 2 つの論理結果「許可」または「拒否」のいずれかしか持たないためです。CPU の消費を制御するには、「cgroups」をお勧めします。

于 2013-06-13T08:24:04.263 に答える
1

legato プロジェクトは、より高いレベルのサンドボックスを使用しています。chroot とバインド マウントを使用して、アプリケーションを格納します。その重要な機能は正式な宣言型 API であるため、アプリケーション コンポーネントは、管理されたセキュリティ構成の下でシステム サービス コンポーネントと通信できます。サービスとアプリケーションは、必要に応じて追加および削除したり、無線で更新したりできます。アプリケーションのメモリ使用量、プロセッサ シェア、ストレージなども厳密に管理されます。アプリケーション開発が容易になると主張しています。

于 2016-10-23T03:06:17.787 に答える