説明
セキュリティ上重要なファイルにグループや他のユーザーの書き込み権限を与えると、その権限を持つ信頼できないユーザーが内容を変更できます。
想定される影響
- 設定の改ざん、権限昇格、コードやデータの置き換えにつながる可能性があります。
対処方法
機密ファイルは最小権限で作成し、通常は0600か、さらに制限したモードを使ってください。ファイルの所有者と、親ディレクトリを変更できる主体も確認してください。
例
変更前
c
open("/var/app/config", O_CREAT | O_WRONLY, 0666);
変更後
c
open("/var/app/config", O_CREAT | O_WRONLY, 0600);
変更前は、新しいファイルにグループと他のユーザーの書き込みビットを指定します。実際の権限はumaskやACLにも左右されます。変更後は、所有者の読み書きだけを指定します。
openのモード引数は既存ファイルの権限を変更しません。既存ファイルの所有者と実際の権限は別途確認してください。例では、ディレクトリとパスが信頼できることを前提とします。