Background
WordNet is a large lexical database of English.
Description
Jukka Ruohonen initially reported a boundary error within the searchwn() function in src/wn.c. A thorough investigation by the oCERT team revealed several other vulnerabilities in WordNet:
- Jukka Ruohonen and Rob Holland (oCERT) reported multiple boundary errors within the searchwn() function in src/wn.c, the wngrep() function in lib/search.c, the morphstr() and morphword() functions in lib/morph.c, and the getindex() in lib/search.c, which lead to stack-based buffer overflows.
- Rob Holland (oCERT) reported two boundary errors within the do_init() function in lib/morph.c, which lead to stack-based buffer overflows via specially crafted βWNSEARCHDIRβ or βWNHOMEβ environment variables.
- Rob Holland (oCERT) reported multiple boundary errors in the bin_search() and bin_search_key() functions in binsrch.c, which lead to stack-based buffer overflows via specially crafted data files.
- Rob Holland (oCERT) reported a boundary error within the parse_index() function in lib/search.c, which leads to a heap-based buffer overflow via specially crafted data files.
Impact
- In case the application is accessible e.g. via a web server, a remote attacker could pass overly long strings as arguments to the βwmβ binary, possibly leading to the execution of arbitrary code.
- A local attacker could exploit the second vulnerability via specially crafted βWNSEARCHDIRβ or βWNHOMEβ environment variables, possibly leading to the execution of arbitrary code with escalated privileges.
- A local attacker could exploit the third and fourth vulnerability by making the application use specially crafted data files, possibly leading to the execution of arbitrary code.
Workaround
There is no known workaround at this time.
Resolution
All WordNet users should upgrade to the latest version:
# emerge --sync
# emerge --ask --oneshot --verbose ">=app-dicts/wordnet-3.0-r2"