Executive brief
w3m is a text-based web browser used to view websites in a terminal environment. A vulnerability in how it processes certain HTML tags allows a remote attacker to crash the browser by tricking a user into opening a specially crafted web page. This results in a denial-of-service, potentially disrupting the user's workflow or terminal session.
Technical details
A vulnerability exists in the w3m text-based browser due to the use of uninitialized values within the HTMLtagproc1 function in file.c. Specifically, when processing <dd> tags, the application may attempt to access environment variables or stack values that have not been properly set if the tag is not preceded by a proper <dl> (definition list) context. An attacker can exploit this by providing a maliciously crafted HTML file that triggers a conditional jump or move based on these uninitialized values, leading to an application crash (Denial of Service). The issue was identified using Valgrind and fixed by ensuring a proper environment is pushed when encountering <dd> tags. Patch availability is confirmed in the 0.5.3+git20161009 release.
Affected products
- tats w3m before 0.5.3+git20161009
Timeline
- 2016-08-17: disclosed: Issue reported on GitHub with Valgrind logs
- 2016-10-09: patched: Fix committed to w3m repository
- 2017-01-20: advisory: NVD advisory published
References
- http://lists.opensuse.org/opensuse-updates/2016-12/msg00084.html
- http://www.openwall.com/lists/oss-security/2016/11/18/3
- http://www.securityfocus.com/bid/94407
- https://github.com/tats/w3m/commit/33509cc81ec5f2ba44eb6fd98bd5c1b5873e46bd
- https://github.com/tats/w3m/issues/16
- https://security.gentoo.org/glsa/201701-08