0

重複の可能性:
プログラムでルート権限を取得する方法は?

Linux を介して C でユーザーにプログラムでルート アクセスを要求する方法はありますか?

私は raw ソケットを使用しているため、root アクセスが必要です。

4

1 に答える 1

0

慣用的な方法は、プログラムを suid-root にし、最初の 2 行でmainraw ソケットを開いて root を削除することです。

これは、次の理由から、セキュリティの観点からはまだ理想的ではありません。

  1. プログラムの後半で妥協すると、攻撃者は生のソケットにアクセスできるようになり、多くの悪意のある目的に使用される可能性があり、特権を昇格するのに十分な情報を取得する可能性があります。

  2. すべての suid-root バイナリは、ダイナミック リンカーまたはmain. これらはますますまれになっていますが、昨年でさえ、glibc のリンカを使用するLD_AUDITもので再び発見されました。多くのセキュリティ意識の高いシステム (Openwall Linux など) は、この理由で suid-root バイナリを完全に禁止しています。

より安全ですが、より複雑なアプローチは、プログラムを昇格された (ただし最小限の) 特権を持つデーモンとして実行し、CLI インターフェイスを、UNIX ソケットを介してデーモンと通信する単純なラッパーにすることです。脆弱性を機械的にチェックします。

于 2012-06-17T16:50:50.417 に答える