ユーザーがアップロードしたテキストファイルから読み取って変数値を取得する必要があります。
私はシステムのスクリプトからやっています:
resourceVersion=`cat userFile.txt`
mkdir $resourceVersion
...
後で他のコマンドの引数として$resourceVersion
変数を使用すると、このファイルの内容がシステムに悪影響を与える可能性がありますか?
安全なコードを書くためのルール1 ユーザー入力をサニタイズする必要があります。
スイッチの操作を防ぐために、少なくとも--
をmkdir句に渡してください。
現在、任意の権限で任意の場所にディレクトリを作成するために使用できます。
それ自体では、おそらく違反にはなりませんが、次のようなものを渡すことができます。
-m 0777 /var/lib/mysql/newdb
新しいmysqlデータベースを作成するには、誰でも書き込むことができます。
また、各スペースが新しいディレクトリとして扱われるため、ここではサービス拒否攻撃が発生します。したがって、処理する32760の新しいパスを渡すことができます。
最後に、一部の疑似ファイルシステムは、予期しない方法で新しいディレクトリに敏感です。たとえばFedoraでは、/sys/fs/cgroup/newcgroup
のようなディレクトリが新しいcgroupを作成する可能性があります。また、LIOサブシステムでは、ディレクトリを/sys/kernel/config/target
に書き込むことで、iscsiネットワークを介してブロックデバイスをエクスポートできます(その後、デバイスのコンテンツ全体をコピーできます)。
だから、これをしないでください。
現時点では、userFile.txtに-m 777 /.secretstorage
が含まれている場合は、誰でも書き込み可能なフォルダーを追加できます。
私の意見では、そのような構成を使用しないほどすでに悪いです。
投稿した現在のスクリプトでは、別のコマンドを挿入できないのは正しいことです。
ただし、この変数を使用する他のコマンドによっては、さらに悪化する可能性があります。
たとえば、プログラムの最後にこの変数とrm
..を使用してクリーンアップする予定の場合.