A heap-based buffer overflow was found in the way vncviewer rendered certain screen images from a vnc server. If a user could be tricked into connecting to a malicious vnc server, it may cause the vncviewer to crash, or could possibly execute arbitrary code with the permissions of the user running it.
This issue was tracked to an issue in the ZRLE_DECODE() function which perform RLE decoding. The function already contained boundary checks inside assert(). Those checks were, however, disabled in builds with NDEBUG, such as tigervnc packages in Fedora.
The tigervnc packages in Red Hat Enterprise Linux 6, and the vnc packages in Red Hat Enterprise Linux 5, were not built with NDEBUG and have those checks enabled. Therefore, they are not affected by this issue.
Tim Waugh prepared a patch that:
- replaces relevant asserts with explicit checks that raise exception
- changing build configuration to not use NDEBUG
Patch is attached as attachment 859269 [details]
The issue is now fixed upstream in TigerVNC 1.3.1:
Upstream commits (applying patch mentioned in commnet 14):
Not vulnerable. This issue did not affect the tigervnc packages as shipped with Red Hat Enterprise Linux 6, and the vnc packages as shipped with Red Hat Enterprise Linux 5.
tigervnc-1.3.0-14.fc20 has been pushed to the Fedora 20 stable repository. If problems still persist, please make note of it in this bug report.
tigervnc-1.3.0-10.fc19 has been pushed to the Fedora 19 stable repository. If problems still persist, please make note of it in this bug report.