xine security announcement XSA-2004-1
Michael Roitzsch <[email protected]> Thu, 15 Apr 2004 14:46:31 +0200
| Newsgroups | gmane.comp.video.xine.announce,gmane.comp.security.bugtraq |
|---|---|
| Message-ID | <[email protected]> |
--Boundary-03=_pQofAWDfGhrP33t
Content-Type: multipart/mixed;
boundary="Boundary-01=_oQofAyHui1o5jtS"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
--Boundary-01=_oQofAyHui1o5jtS
Content-Type: text/plain;
charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline
xine security announcement
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D
Announcement-ID: XSA-2004-1
Summary:
By opening a malicious MRL in any xine-lib based media player, an attacker =
can=20
write arbitrary content to an arbitrary file, only restricted by the=20
permissions of the user running the application.
Description:
MRLs (media resource locator) are a subset of URIs used by the xine-lib=20
library to describe the location of the content to play. MRLs also offer th=
e=20
feature of providing xine configuration options, which will be activated=20
right before the addressed content is played. But some of xine's=20
configuration options specify files that will be written to during playback=
=2E=20
One example of such an option is "audio.sun_audio_device", which specifies=
=20
the audio device on SUN machines. The decoded PCM samples of the audio stre=
am=20
will be written to this file. By having a user open a MRL like=20
"http://myserver/mybashrc#audio.sun_audio_device:.bashrc" in xine, which=20
changes the value of the "audio.sun_audio_device" option and plays a=20
specially crafted audio stream, an attacker could fill any file the user ha=
s=20
access to with arbitrary content. Other configuration options that allow su=
ch=20
an attack exist (we also found "dxr3.devicename"), so the vulnerability is=
=20
not limited to SUN machines.
Severity:
Expoits have not been seen in the public and not all xine setups use the=20
vulnerable configuration options. But at least xine users on SUN machines a=
nd=20
users of a DXR3 or Hollywood+ MPEG decoder card are vulnerable. Other such=
=20
problematic configuration options might have slipped through the review or=
=20
might be provided by xine plugins outside the main xine distribution, leavi=
ng=20
other users vulnerable as well. Given the wide range of possible harm, we=20
consider this problem to be highly critical.
Affected versions:
All 1-alpha releases.
All 1-beta releases.
All 1-rc releases up to and including 1-rc3a.
Unaffected versions:
All 0.9 releases or older.
1-rc3b or newer.
Solution:
Changes to xine configuration options via MRL are now disabled by default.
The attached patch to xine-lib fixes the problem but should only be used by=
=20
distributors who do not want to upgrade. Otherwise, we strongly advise=20
everyone to upgrade to the 1-rc3c release of xine-lib.
=46or further information and in case of questions, please contact the xine=
=20
team. Our website is http://xinehq.de/
Michael Roitzsch
--Boundary-01=_oQofAyHui1o5jtS
Content-Type: text/x-diff;
charset="us-ascii";
name="xine-lib-implicit-config.patch"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
filename="xine-lib-implicit-config.patch"
=2D-- src/xine-engine/configfile.c 3 Mar 2004 20:09:16 -0000 1.62
+++ src/xine-engine/configfile.c 16 Mar 2004 20:50:08 -0000 1.63
@@ -969,6 +969,15 @@
int handled =3D 0;
=20
lprintf ("change_opt '%s'\n", opt);
+ =20
+ if ((entry =3D config->lookup_entry(config, "misc.implicit_config")) &&
+ entry->type =3D=3D CONFIG_TYPE_BOOL) {
+ if (!entry->num_value)
+ /* changing config entries implicitly is denied */
+ return -1;
+ } else
+ /* someone messed with the config entry */
+ return -1;
=20
if(config && opt) {
char *key, *value;
=2D-- src/xine-engine/xine.c 3 Mar 2004 20:09:18 -0000 1.284
+++ src/xine-engine/xine.c 16 Mar 2004 20:50:09 -0000 1.285
@@ -1429,6 +1429,21 @@
_("Path for saving streams"),
_("Streams will be saved only into this directory"),
XINE_CONFIG_SECURITY, __config_save_cb, this);
+ =20
+ /*
+ * implicit configuration changes
+ */
+ this->config->register_bool(this->config,
+ "misc.implicit_config", 0,
+ _("allow implicit changes to the configuration (e.g. by MRL)"),
+ _("If enabled, you allow xine to change your configuration without "
+ "explicit actions from your side. For example configuration changes "
+ "demanded by MRLs or embedded into playlist will be executed.\n"
+ "This setting is security critcal, because xine can receive MRLs or "
+ "playlists from untrusted remote sources. If you allow them to "
+ "arbitrarily change your configuration, you might end with a totally "
+ "messed up xine."),
+ XINE_CONFIG_SECURITY, NULL, this);
=20
/*
* keep track of all opened streams
--Boundary-01=_oQofAyHui1o5jtS--
--Boundary-03=_pQofAWDfGhrP33t
Content-Type: application/pgp-signature
Content-Description: signature
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.2 (GNU/Linux)
iD8DBQBAfoQpjhx3hMVnyYsRAqDOAJsHge4+JdrVVc9nq2shKItkVXafHwCfeu0i
ak1dinK1JuXt0cxfZfEqXdM=
=2wR8
-----END PGP SIGNATURE-----
--Boundary-03=_pQofAWDfGhrP33t--
-------------------------------------------------------
This SF.Net email is sponsored by: IBM Linux Tutorials
Free Linux tutorial presented by Daniel Robbins, President and CEO of
GenToo technologies. Learn everything from fundamentals to system
administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click