Hi,

FWIW, here are two releases from Marco that might shed more light:

https://techblog.mediaservice.net/2020/01/local-privilege-escalation-via-cde-dtsession/

https://github.com/0xdea/advisories/blob/master/2020-02-cde-dtsession.txt

which includes a link to the Solaris POC.

-jon

On 1/14/20 5:37 PM, Jon Trulson wrote:
> Hi,
>
> This is a quick release of CDE 2.3.2.  It is the same as CDE 2.3.1,
> except that a patch has been applied to correct some potentially
> exploitable buffer overruns in dtsession and DtSvc.  dtsession runs
> SUID root.
>
> This release of CDE was timed to occur after the embargo period
> defined by the release of related patches by Oracle for their version
> of CDE, which was to have occurred at 1PM today (Jan 14).
>
> The currently unreleased POC (Proof of Concept) exploit code only
> works on the Oracle version of CDE.  It exploits stack based buffer
> overflows in dtsession to provide a root shell to a local unprivileged
> user.
>
> Oracle is using the v1.x source base, where we are using the 2.x
> base.  In the Solaris version, these overflowed variables reside on
> the stack.  In our CDE, they reside on the heap, which makes things
> somewhat more difficult to exploit.
>
> There are 3 vulnerabilities, of which only two would apply to us.
>
> For this reason, a patch has been pushed to master that should address
> these issues.  Since master is not yet stable enough for a release, we
> (Peter and I) decided a 2.3.2 release with this patch was warranted
> just to be overly cautious.
>
> To be clear: Current opensource CDE is not vulnerable to the POC, and
> of the 3 issues, only two could be exploited in previous versions with
> a significant amount of work.  However for someone with the skills and
> the time...
>
> Here is a link to the master commit if you are curious:
>
> https://sourceforge.net/p/cdesktopenv/code/ci/6b32246d06ab16fd7897dc344db69d0957f3ae08/
>
> The real horror here is that the original programmers clearly did not
> understand how strncat() works :)
>
> What follows is the text of the commit:
>
>    dtsession, DtSvc: fix CVE-2020-2696/VU#308289
>    
>     Marco Ivaldi <marco.iva...@mediaservice.net> has identified 3
>     vulnerabilities in CDE.
>    
>     Two of them could affect our CDE (open-source version), while the 3rd
>     (sdtcm_convert) is Solaris specific.
>    
>     The two vulnerabilities, both of which affect dtsession could allow a
>     local privilege escalation to root.  A POC exists for Solaris.  The
>     POC will not function on our CDE for two main reasons:
>    
>     - the POC is Solaris specific
>     - The overflowed variables in question are allocated on the heap,
>       whereas in Solaris these variables are located on the stack.
>    
>     The first vulnerability allows an extra long palette name to be used
>     to cause a crash via insufficient validation in
>     SrvPalette.c:CheckMonitor().
>    
>     The second, which has not yet been assigned a CERT CVE resides in
>     SmCreateDirs.c:_DtCreateDtDirs() in libDtSvc.  Due to insufficient
>     bounds checking, a crash or corruption can be achieved by using a very
>     long DISPLAY name.
>    
>     This one is considered difficult to exploit, and no POC code is
>     available at this time.  CDE 2.x code-bases are also listed as not
>     vulnerable, however some work has been done anyway to do some proper
>     bounds checking in these functions.
>    
>     The following text portions are copied from the relevant advisories,
>     which have not been released as of this writing.
>    
>     NOTE: Oracle CDE does NOT use CDE 2.3.0a or earlier as mentioned
>     below.  They are completely different code-bases):
>   
>     Regarding CVE-2020-2692:
>    
>       A buffer overflow in the CheckMonitor() function in the Common
>       Desktop Environment 2.3.0a and earlier, as distributed with Oracle
>       Solaris 10 1/13 (Update 11) and earlier, allows local users to gain
>       root privileges via a long palette name passed to dtsession in a
>       malicious .Xdefaults file.
>    
>       Note that Oracle Solaris CDE is based on the original CDE 1.x train,
>       which is different from the CDE 2.x codebase that was later open
>       sourced. Most notably, the vulnerable buffer in the Oracle Solaris
>       CDE is stack-based, while in the open source version it is
>       heap-based.
>    
>     Regarding the DtSvc bug, which does not currently have a CERT CVE:
>    
>       A difficult to exploit stack-based buffer overflow in the
>       _DtCreateDtDirs() function in the Common Desktop Environment version
>       distributed with Oracle Solaris 10 1/13 (Update 11) and earlier may
>       allow local users to corrupt memory and potentially execute
>       arbitrary code in order to escalate privileges via a long X11
>       display name. The vulnerable function is located in the libDtSvc
>       library and can be reached by executing the setuid program
>       dtsession.
>    
>       The open source version of CDE (based on the CDE 2.x codebase) is
>       not affected.
>
> Enjoy...
>
>
> -- 
> Jon Trulson
>
>   "Entropy.  It isn't what it used to be."
>                            -- Sheldon
>
>
> _______________________________________________
> cdesktopenv-devel mailing list
> cdesktopenv-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/cdesktopenv-devel

-- 
Jon Trulson

  "Entropy.  It isn't what it used to be."
                           -- Sheldon

_______________________________________________
cdesktopenv-devel mailing list
cdesktopenv-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/cdesktopenv-devel

Reply via email to