[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

CORE-2009-0401 - StoneTrip S3DPlayers remote command injection



-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1


      Core Security Technologies - CoreLabs Advisory
           http://www.coresecurity.com/corelabs/

       StoneTrip S3DPlayers remote command injection


1. *Advisory Information*

Title: StoneTrip S3DPlayers remote command injection
Advisory ID: CORE-2009-0401
Advisory URL: http://www.coresecurity.com/content/StoneTrip-S3DPlayers
Date published: 2009-05-28
Date of last update: 2009-05-28
Vendors contacted: StoneTrip
Release mode: User release


2. *Vulnerability Information*

Class: Command injection, Client side
Remotely Exploitable: Yes
Locally Exploitable: No
Bugtraq ID: 35105
CVE Name: CVE-2009-1792


3. *Vulnerability Description*

Ston3D is a cross-platform technology developed by StoneTrip [1],
allowing applications developed with ShiVa product [2] to be run from
various media. It is a platform for 3D real time development, specially
designed to make games and other real time applications.

Ston3D players come in two flavors:

   1. Ston3D StandalonePlayer [3],
   2. and Ston3D WebPlayer [4], which runs like an extension or plug-in
within most popular web browsers.

These players are vulnerable to a command injection vulnerability, which
can be exploited by malicious remote attackers. The vulnerability is due
to the Ston3D scripting language. It provides the function
'system.openURL()' which does not properly sanitize the input before
using it. This can be exploited to execute arbitrary commands with the
privileges of the Stone3D player by opening a specially crafted file.


4. *Vulnerable packages*

4.1. *Win32*

   . S3DPlayer Web v1.6.0.0
   . S3DPlayer StandAlone v1.6.2.4
   . S3DPlayer StandAlone v1.7.0.1

4.2. *MacOS*

   . S3DPlayer Web v1.6.0.0
   . S3DPlayer StandAlone v1.6.2.4

4.3. *Linux*

   . S3DPlayer StandAlone v1.6.2.4

NOTE: Older versions are probably affected too, but they were not checked.


5. *Non-vulnerable packages*

By the time this advisory was published, the vendor:

   1. had not released patched versions of its products,
   2. had not answered the requests made by Core Security for 3 weeks
(see Section 9).

Please contact StoneTrip for a fix.


6. *Vendor Information, Solutions and Workarounds*

The vendor did not provide this information. A possible mitigation
action would be to enable MIME type filtering in your IDS/proxies and
block S3DPlayer traffic:

/-----------

application/x-ston3d-stk
- -----------/

As a workaround, vulnerable users can also avoid this flaw by disabling
the Ston3D Plugin in their web browsers:


6.1. *Mozilla Firefox*

   1. Go to the *Tools* menu, and select *Options...*
   2. Click on the *Main* tab
   3. Click on the *Manage Add-ons...*
   4. Disable *Ston3D Plugin*


6.2. *Safari*

   1. Go to the *Safari* menu within Safari, and select *Preferences*
   2. Click on the *Security * tab
   3. Deselect *Enable plug-ins*


6.3. *Internet Explorer*

Set the kill bit for control 7508D2BB-F085-45BF-8261-167C6DF4D477 (as
explained in http://support.microsoft.com/kb/240797).

Please contact StoneTrip for further information, patches and workarounds.


7. *Credits*

This vulnerability was discovered and researched by Diego Juarez from
Core Security Technologies.


8. *Technical Description / Proof of Concept Code*

Ston3D is a cross-platform technology allowing applications developed
with ShiVa product [2] to be run from various media, such as a website,
CD/DVD or interactive equipment. This technology provides a scripting
interface [5] based on the Lua programming language, within this
interface the function 'system.openURL' is defined as follows:

/-----------

Prototype
system.openURL(sURL, sTarget)    --Call this function to open an URL.

- -----------/

In the current implementation, the call 'system.openURL(sURL, sTarget)'
with the parameter 'sURL' set as 'file://path/command' will ultimately
execute the equivalent of calling

/-----------
system("open path/command");
- -----------/

 By using platform specific delimiter characters this could allow
arbitrary code execution in the context of the player.

Find below the relevant code snippets from various platforms.


8.1. *Windows*

/-----------

.text:1000D64D    test    esi, esi
.text:1000D64F    mov     eax, esi
.text:1000D651    jnz     short loc_1000D658
.text:1000D653
.text:1000D653 loc_1000D653:                ; CODE XREF:
Pandora::ClientCore::HTTPConnectionManager::OpenURL(Pandora::EngineCore::String
const &,Pandora::EngineCore::String const &)+1CB
.text:1000D653    mov     eax, offset Name
.text:1000D658
.text:1000D658 loc_1000D658:                ; CODE XREF:
Pandora::ClientCore::HTTPConnectionManager::OpenURL(Pandora::EngineCore::String
const &,Pandora::EngineCore::String const &)+1D1
.text:1000D658    push    1
.text:1000D65A    push    offset Name       ; lpDirectory
.text:1000D65F    push    ecx               ; lpParameters
.text:1000D660    push    eax               ; lpFile
.text:1000D661    push    offset Operation  ; "open"
.text:1000D666    push    0                 ; hwnd
.text:1000D668    call    ds:ShellExecuteA
.text:1000D66E
.text:1000D66E loc_1000D66E:                ; CODE XREF:
Pandora::ClientCore::HTTPConnectionManager::OpenURL(Pandora::EngineCore::String
const &,Pandora::EngineCore::String const &)+1B0
.text:1000D66E    test    edi, edi
.text:1000D670    jbe     short loc_1000D67F
.text:1000D672    test    esi, esi
.text:1000D674    jz      short loc_1000D67F
.text:1000D676    add     esi, 0FFFFFFFCh
.text:1000D679    push    esi               ; Memory
.text:1000D67A    call    ebp               ; __imp_free

- -----------/


8.2. *Linux*

/-----------

.text:08371334    mov     [esp+5Ch+var_58], offset aOpen ; "open "
.text:0837133C    lea     eax, [esp+5Ch+var_34]
.text:08371340    mov     [esp+5Ch+command], eax
.text:08371343    call    sub_8109FC0
.text:08371348    lea     eax, [esp+5Ch+var_1C]
.text:0837134C    mov     [esp+5Ch+var_58], eax
.text:08371350    lea     eax, [esp+5Ch+var_34]
.text:08371354    mov     [esp+5Ch+command], eax
.text:08371357    call    sub_8108F10
.text:0837135C    lea     eax, [esp+5Ch+var_34]
.text:08371360    mov     [esp+5Ch+command], eax
.text:08371363    call    sub_80DF660
.text:08371368    mov     [esp+5Ch+command], eax
.text:0837136B    call    _system
.text:08371370    lea     eax, [esp+5Ch+var_34]
.text:08371374    mov     [esp+5Ch+command], eax
.text:08371377    call    sub_80D92F0
.text:0837137C    jmp     short loc_8371398

- -----------/


8.3. *MacOSX (x86)*

/-----------

__text:0005995B   lea     eax, (aOpen - 597ECh)[ebx] ; "open "
__text:00059961   lea     esi, [esp+5Ch+var_44]
__text:00059965   mov     [esp+5Ch+var_58], eax
__text:00059969   mov     [esp+5Ch+var_5C], esi
__text:0005996C   call    __ZN7Pandora10EngineCore6StringC1EPKc ;
Pandora::EngineCore::String::String(char  const*)
__text:00059971   mov     [esp+5Ch+var_58], edi
__text:00059975   mov     [esp+5Ch+var_5C], esi
__text:00059978   call    __ZN7Pandora10EngineCore6StringpLERKS1_
__text:0005997D   mov     edx, [esp+5Ch+var_44]
__text:00059981   test    edx, edx
__text:00059983   jz      loc_59A5F
__text:00059989   mov     eax, [esp+5Ch+var_40]
__text:0005998D   test    eax, eax
__text:0005998F   jz      loc_59A5F
__text:00059995
__text:00059995 loc_59995:                              ; CODE XREF:
Pandora::ClientCore::HTTPConnectionManager::OpenURL(Pandora::EngineCore::String
 const&,Pandora::EngineCore::String  const&)+295
__text:00059995   mov     [esp+5Ch+var_5C], eax
__text:00059998   call    _system
__text:0005999D   mov     eax, [esp+5Ch+var_44]
__text:000599A1   test    eax, eax
__text:000599A3   jnz     loc_59AB2
__text:000599A9   nop     dword ptr [eax+00000000h]

- -----------/


8.4. *MacOSX (PPC)*

/-----------

__text:00053D6C   addi    %r30, %sp, 0x90+var_38
__text:00053D70   addis   %r4, %r31, 0x3F
__text:00053D74   addi    %r4, %r4, -0x29DC
__text:00053D78   mr      %r3, %r30
__text:00053D7C   bl      __ZN7Pandora10EngineCore6StringC1EPKc #
Pandora::EngineCore::String::String(char  const*)
__text:00053D80   mr      %r3, %r30
__text:00053D84   mr      %r4, %r29
__text:00053D88   bl      __ZN7Pandora10EngineCore6StringpLERKS1_
__text:00053D8C   lwz     %r0, 0x90+var_38(%sp)
__text:00053D90   cmpwi   cr7, %r0, 0
__text:00053D94   beq     cr7, loc_53DA4
__text:00053D98   lwz     %r3, 0x90+var_34(%sp)
__text:00053D9C   cmpwi   cr7, %r3, 0
__text:00053DA0   bc      5, 4*cr7+eq, loc_53DAC
__text:00053DA4
__text:00053DA4 loc_53DA4:                              # CODE XREF:
Pandora::ClientCore::HTTPConnectionManager::OpenURL(Pandora::EngineCore::String
 const&,Pandora::EngineCore::String  const&)+394
__text:00053DA4   addis   %rtoc, %r31, 0x3F
__text:00053DA8   addi    %r3, %rtoc, -0x5620
__text:00053DAC
__text:00053DAC loc_53DAC:                              # CODE XREF:
Pandora::ClientCore::HTTPConnectionManager::OpenURL(Pandora::EngineCore::String
 const&,Pandora::EngineCore::String  const&)+3A0
__text:00053DAC   bl      _system
__text:00053DB0   lwz     %r0, 0x90+var_38(%sp)
__text:00053DB4   cmpwi   cr7, %r0, 0
__text:00053DB8   beq     cr7, loc_53E24
__text:00053DBC   b       loc_53DF8

- -----------/


9. *Report Timeline*

. 2009-04-20:
Core Security Technologies notifies the StoneTrip team of
the vulnerability and announces its initial plan to publish the content
on May 18th, 2009.

. 2009-04-21:
The vendor asks Core for a technical description of the
vulnerability.

. 2009-04-23:
Technical details sent to StoneTrip team by Core.

. 2009-04-24:
In addition to the technical details, a Proof of Concept
was sent to StoneTrip team.

. 2009-04-28:
Core asks the vendor to confirm the reception of the
technical report.

. 2009-04-28:
StoneTrip team notifies that the technical report has been
received and that a vulnerability report will be sent to Core soon.

. 2009-05-07:
Core requests a status update for this vulnerability and
notifies its plan to publish the advisory on May 18th, 2009. No reply
received.

. 2009-05-15:
Core requests an answer to the previous mail. No reply
received.

. 2009-05-18:
Core Advisories Team does not release the advisory as
originally planned. Core re-schedules the advisory publication date to
26th May 2009.

. 2009-05-20:
Core notifies StoneTrip that the advisory publication date
was missed and that the last status requests were not replied. Core also
notifies the vendor of the final release date (26th May 2009).

. 2009-05-28:
After trying to contact the StoneTrip team several times
without success, the advisory CORE-2009-0401 is published as 'User
Release'.


10. *References*

[1] http://www.stonetrip.com.
[2] ShiVa, a platform for 3D real time development with focus in game
development
http://www.stonetrip.com/shiva/shiva-3d-game-engine.html.
[3] http://www.stonetrip.com/ston3d-players/ston3d-standalone.html.
[4] http://www.stonetrip.com/ston3d-players/ston3d-webplayer.html.
[5] http://stdn.stonetrip.com.


11. *About CoreLabs*

CoreLabs, the research center of Core Security Technologies, is charged
with anticipating the future needs and requirements for information
security technologies. We conduct our research in several important
areas of computer security including system vulnerabilities, cyber
attack planning and simulation, source code auditing, and cryptography.
Our results include problem formalization, identification of
vulnerabilities, novel solutions and prototypes for new technologies.
CoreLabs regularly publishes security advisories, technical papers,
project information and shared software tools for public use at:
http://www.coresecurity.com/corelabs.


12. *About Core Security Technologies*

Core Security Technologies develops strategic solutions that help
security-conscious organizations worldwide develop and maintain a
proactive process for securing their networks. The company's flagship
product, CORE IMPACT, is the most comprehensive product for performing
enterprise security assurance testing. CORE IMPACT evaluates network,
endpoint and end-user vulnerabilities and identifies what resources are
exposed. It enables organizations to determine if current security
investments are detecting and preventing attacks. Core Security
Technologies augments its leading technology solution with world-class
security consulting services, including penetration testing and software
security auditing. Based in Boston, MA and Buenos Aires, Argentina, Core
Security Technologies can be reached at 617-399-6980 or on the Web at
http://www.coresecurity.com.


13. *Disclaimer*

The contents of this advisory are copyright (c) 2009 Core Security
Technologies and (c) 2009 CoreLabs, and may be distributed freely
provided that no fee is charged for this distribution and proper credit
is given.


14. *PGP/GPG Keys*

This advisory has been signed with the GPG key of Core Security
Technologies advisories team, which is available for download at
http://www.coresecurity.com/files/attachments/core_security_advisories.asc.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFKHuAiyNibggitWa0RAgJTAJsEXfUBmIjxmY7X4hplONY/Z0DOJgCfUKxJ
F9s8R8PuYBiIhvLANh3XmhE=
=kU8D
-----END PGP SIGNATURE-----