サービス ハーデニングを実践しませんか?

突然ですが、あなたが作成した サービス は、どのアカウントで動かすようにしていますか?

LocalSystem

えっ!?ほんとに?
なんで、そんなに強い権限が必要なのですか?

いや、過去のバージョンがそうだったので、なんとなく…

こんな会話、ふつーにありそうです(もちろん、無ければよいのですが)。
しかし、セキュリティに関わることも本当にそれでよいのでしょうか。

LocalSystem アカウントで動いている サービスが悪意のあるプログラムに利用されたら…

ぞっとしませんか?
自分の書いたプログラムが悪意あるプログラムの媒介に利用されたらって考えると怖くないですか?

今まで多くの製品を見てきましたが、LocalSystem ほどの強力な権限が必要ないにも関わらず
LocalService/NetworkService を利用している サービスにお目にかかったことが、あまりありません。
この手の開発者は、”すべての権限” か “ほぼ何も無しの権限” 以外の権限を考えていないことが原因です。

ケースバイケースになると思いますが、Windows 7 & 2008 R2 対応する際に思い切って、

サービスハーデニング

を実践してみませんか?

サービスですが、理想的には LocalSystem 権限を与えないことが望ましいです。
もちろん、対象の NT サービスが特権への動作を必要としないこと、レジストリキーとドライバオブジェクトの
ACL の変更が必要なことが前提になります。
つまり、この前提が当てはまらないサービスは、サービスハーデニングが実践できると思います。
具体的には、機能を次のように分割します。

  • 主たるサービスを ”より低い権限” で動かす(LocalService/NetworkService)
  • 特権で動作するべき機能だけを別のサービスで実装する

こうすることで、権限を分離することができます。
これらの 2 つの間の権限の妥当性を管理・把握できることが重要です。
Windows Vista 以降、多くの SVCHOST は、LocalService/NetworkService を使うように変更されました。
OS だけがセキュリティ攻撃の対象というわけではありません。

これを機会に今一度、サービスの権限を見直してみませんか?

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。