説明
tmpnam 系のAPIは、予測可能な一時ファイル名を生成する場合があります。名前の生成とファイルの作成が分かれているため、その間に競合状態が生じます。
想定される影響
- シンボリックリンクを使った攻撃、任意のファイルの上書き、情報漏えい
対処方法
mkstemp のように、ファイルをアトミックに作成するAPIを使ってください。
例
変更前
c
char name[L_tmpnam];
tmpnam(name);
変更後
c
char name[] = "/tmp/app.XXXXXX";
int fd = mkstemp(name);
説明:
- 変更前: 一時ファイル名だけを生成するため、その後のファイル作成までの間に競合が生じます。
- 変更後: 名前の選択とファイルの作成をアトミックに行います。