Executive brief
w3m is a text-based web browser used to view websites in a terminal environment. A vulnerability exists where the browser fails to properly handle certain HTML tags, such as the italics tag. An attacker could use a specially crafted web page to cause the browser to crash, resulting in a denial of service for the user.
Technical details
A vulnerability exists in the `parse_tag` function within `parsetagx.c` of w3m due to the use of uninitialized values. Specifically, the application fails to properly initialize the `tagname` buffer or associated state when encountering certain HTML tags, such as the `<i>` tag. A remote 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 AFL-fuzz and is addressed by ensuring proper initialization (e.g., setting `tagname[0] = '\0'`) in the parser. This was patched in the git commit 33509cc81ec5f2ba44eb6fd98bd5c1b5873e46bd.
Affected products
- tats w3m before 0.5.3+git20161009
Timeline
- 2016-08-17: disclosed: Issue reported on GitHub by user kcwu
- 2016-10-09: patched: Fix committed to w3m repository
- 2017-01-20: advisory: NVD publication date
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