We hebben net een zaak waarin het vinden van de uitgang van de script-bestanden in / tmp of / var / tmp of andere wereld beschrijfbare mappen, kon worden symlinks geschreven door een onbevoegde gebruiker schade veroorzaken.
Het is niet eenvoudig te exploiteren als gevolg van het output bestand niet hoeft te bestaan en de gebruiker ook weten wat de naam zal zijn, maar het is mogelijk.
bv
Als user1 (normale gebruiker) schreef een symlink in / tmp / etc / passwd
user1 # ln-s / tmp / script.out / etc / passwd
Toen kwam een script draait als root en creëerde output of debuggen of iets naar / tmp / script.out dan zou het overschrijven / etc / passwd en uiteraard problemen veroorzaken aan het systeem.
Zoals gezegd de gebruiker zou moeten weten wat scripts zou worden liep als root en waar de output maar mensen vergeten soms tot 750 ot 700 bepaalde scripts chmod.
Als dus na een output bestand ik ga maken als volgt: --
Code:
output_security()
{
# Check any file to be used is not a symlink elswhere.
# If exceptions are needed dont call this function
# This is an e.g so doesn't include checking $@
for FILE in $@
do
if [ -h ${FILE} ];then
print "ERROR: File [${FILE}] is a sym link and not a regular file" >&2
print "Potential Security Risk so exiting" >&2
exit 2
}
outputfile=/tmp/$(basename $0).out
tmpfile=/tmp/$(basename $0).tmp
output_security "${outputfile} ${tmpfile}"
....blah blah