929
Likelihood Of Exploit
High
Common Consequences
Scope Impact Likelihood
Confidentiality Read Application Data
If the temporary file can be read by the attacker, sensitive
information may be in that file which could be revealed.
Authorization
Other
Other
If that file can be written to by the attacker, the file might
be moved into a place to which the attacker does not
have access. This will allow the attacker to gain selective
resource access-control privileges.
Integrity
Other
Other
Depending on the data stored in the temporary file,
there is the potential for an attacker to gain an additional
input vector which is trusted as non-malicious. It may be
possible to make arbitrary changes to data structures, user
information, or even process ownership.
Potential Mitigations
Phase: Requirements
Many contemporary languages have functions which properly handle this condition. Older C
temp file functions are especially susceptible.
Phase: Implementation
Ensure that you use proper file permissions. This can be achieved by using a safe temp file
function. Temporary files should be writable and readable only by the process that owns the file.
Phase: Implementation
Randomize temporary file names. This can also be achieved by using a safe temp-file function.
This will ensure that temporary files will not be created in predictable places.
Demonstrative Examples
Example 1:
In the following code examples a temporary file is created and written to. After using the temporary
file, the file is closed and deleted from the file system.
Example Language: C (Bad)
FILE *stream;
if( (stream = tmpfile()) == NULL ) {
perror("Could not open new temporary file\n");
return (-1);
}
// write data to tmp file
...
// remove tmp file
rmtmp();
However, within this C/C++ code the method tmpfile() is used to create and open the temp file.
The tmpfile() method works the same way as the fopen() method would with read/write permission,
allowing attackers to read potentially sensitive information contained in the temp file or modify the
contents of the file.
CWE Version 4.14
CWE-379: Creation of Temporary File in Directory with Insecure Permissions
CWE-379: Creation of Temporary File in Directory with Insecure Permissions