|
Message-ID: <20200604140959.GA436@f195.suse.de> Date: Thu, 4 Jun 2020 16:09:59 +0200 From: Matthias Gerstner <mgerstner@...e.de> To: oss-security@...ts.openwall.com Subject: xawtv: CVE-2020-13696: v4l-conf setuid-root program allows file existence tests and open(..., O_RDRW) on arbitrary files Hallo, xawtv [1] contains a setuid-root program called `v4l-conf` that is supposed to allow regular users to configure v4l devices. xawtv is pretty old code but it is stilled shipped on some distributions like Debian and openSUSE. Vulnerability Description ========================= While checking the source code of `v4l-conf` I noticed that it allows regular users to perform arbitrary file existence tests and also to perform `open(..., O_RDWR)` and `fstat()` system calls on arbitrary files. The issue is found in the `dev_open()` function which only contains a naive security check: ``` if (strncmp(device, "/dev/", 5)) { fprintf(stderr, "error: %s is not a /dev file\n", device); exit(1); } ``` This check is not safe against relative path components or symlinks in /dev/shm. Example: ``` # in this case the file does not exist user $ v4l-conf -c /dev/../root/.bashrc VT_GETSTATE is not supported: Inappropriate ioctl for device mode: 0x0, depth=0, bpp=0, bpl=0, base=unknown can't open /dev/../root/.bashrc: No such file or directory # in this case the file exists user $ v4l-conf -c /dev/../root/.bash_history VT_GETSTATE is not supported: Inappropriate ioctl for device mode: 0x0, depth=0, bpp=0, bpl=0, base=unknown /dev/../root/.bash_history: wrong device ``` Some devices in /dev might also trigger code paths upon open() in the kernel that are usually not reachable to regular users. Bugfix ====== Upstream added two fixes in their Git repository [2]: - commit 31f31f9cbaee7be806cba38e0ff5431bd44b20a3 - commit 36dc44e68e5886339b4a0fbe3f404fb1a4fd2292 The fix is still incomplete though. It avoids to perform an `open()` on unintended files. But it still allows the file existence test to be performed. Attached is a small patch that fixes also that. Timeline ======== 2020-05-14: I privately reported the finding to mchehab+samsung@...nel.org, one of the xawtv maintainers denoted in [3]. 2020-05-14 - 2020-05-29: various discussions with the maintainer about the fix. He published the partial fixes in the Git repository right away. 2020-05-29 I reported to the maintainer that the fix is still incomplete but did not hear back since then. 2020-05-29 I requested and obtained a CVE from Mitre for this issue. [1]: https://www.linuxtv.org/wiki/index.php/Xawtv [2]: https://git.linuxtv.org/xawtv3.git [3]: https://www.linuxtv.org/wiki/index.php/Media_Maintainers#XawTV Cheers Matthias -- Matthias Gerstner <matthias.gerstner@...e.de> Dipl.-Wirtsch.-Inf. (FH), Security Engineer https://www.suse.com/security Phone: +49 911 740 53 290 GPG Key ID: 0x14C405C971923553 SUSE Software Solutions Germany GmbH HRB 36809, AG Nürnberg Geschäftsführer: Felix Imendörffer View attachment "0001-v4l-conf-use-the-same-error-messages-for-stat-and-ty.patch" of type "text/x-diff" (1205 bytes) Download attachment "signature.asc" of type "application/pgp-signature" (834 bytes)
Powered by blists - more mailing lists
Please check out the Open Source Software Security Wiki, which is counterpart to this mailing list.
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.