権限の低いユーザーが高い権限でカスタムスクリプトを実行できるようにする従来のCコードがあります。これにはSUIDビットがセットされています。このコードはPATH環境を特定のフォルダに制限し、system()
apiを使用して制限付きシェルを介してスクリプトを実行します。
/bin/bash -r -c "script <arg>"
パスが制限されているため、特定のフォルダでのみスクリプトを実行できます。
これでAPIコマンドインジェクションのすべてのトラップがわかりましたsystem()
。これはさまざまなスクリプトなど、さまざまな場所で使用されるため、回帰を避けるためにまったく新しい実装を作成したくありません。
ベストアンサー1
正しく書くのは難しいので、コードからSUIDを削除することをお勧めします。を使用するようにCコードを変更してくださいsudo
。セキュリティシステムプログラミングの難しい側面は、sudoを使用して行われます。
その後、visudoを使用して、タスクを実行するために必要な最小限のタスクを実行し、必要なユーザー/グループに制限するsudo設定を慎重に構築できます。 sudoを設定したら、他の人にテストを依頼して、予想される制限を破るようにしてください。