system() API の使用を避けてください。

system() API の使用を避けてください。

権限の低いユーザーが高い権限でカスタムスクリプトを実行できるようにする従来のCコードがあります。これにはSUIDビットがセットされています。このコードはPATH環境を特定のフォルダに制限し、system()apiを使用して制限付きシェルを介してスクリプトを実行します。

/bin/bash -r -c "script <arg>"

パスが制限されているため、特定のフォルダでのみスクリプトを実行できます。

これでAPIコマンドインジェクションのすべてのトラップがわかりましたsystem()。これはさまざまなスクリプトなど、さまざまな場所で使用されるため、回帰を避けるためにまったく新しい実装を作成したくありません。

ベストアンサー1

正しく書くのは難しいので、コードからSUIDを削除することをお勧めします。を使用するようにCコードを変更してくださいsudo。セキュリティシステムプログラミングの難しい側面は、sudoを使用して行われます。

その後、visudoを使用して、タスクを実行するために必要な最小限のタスクを実行し、必要なユーザー/グループに制限するsudo設定を慎重に構築できます。 sudoを設定したら、他の人にテストを依頼して、予想される制限を破るようにしてください。

おすすめ記事