Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAN_LGv361=VsOZ6KKU68ViRng5yYFHkUzRe8gCUDV+kfGYSdRg@mail.gmail.com>
Date: Tue, 22 Oct 2013 19:48:40 +0100
From: "Alexander E. Patrakov" <patrakov@...il.com>
To: oss-security@...ts.openwall.com
Subject: CVE request: WebKit-GTK + Puseaudio: unexpectedly high sound volume

Hello.

Some time ago I have reported an issue:
http://seclists.org/oss-sec/2013/q4/35 , but decided not to request
CVE at that time, because I wanted to collect opinions on the topic
"who should fix what". I have collected them from both involved
parties and thus now request a CVE ID for this coordination issue /
case of contradicting requirements. Please let me know if I have
omitted any of the required information.

Let me reproduce the most important part of my initial report.

======
The following combination of software has a nasty bug when used
together, that I personally consider to be a vulnerability:

* PulseAudio (any version, especially when used in flat-volume mode
that is the default everywhere except Ubuntu).
 * Any browser based on Webkit-GTK 2.x (any version with HTML5
audio/video support based on GStreamer).

The bug is that a malicious piece of javascript on the web page can
cause an audio file to play at an unexpectedly high volume, not
obeying the volume that the user has set for the web browser in
pavucontrol or gnome-volume-control, and effectively not letting the
user move the volume slider corresponding to the web browser [1]. When
flat volumes are in effect, the web page can play that audio file at
the full volume that the sound card is capable of, which can in some
cases damage loudspeakers (especially tweeters) or the user's hearing
[2].

The reproducer (that just sets the volume at regular intervals using a
timer) is already public at http://jsfiddle.net/bteam/FbkGD/ and can
be trivially enhanced to also prevent muting of the audio stream. View
that in Epiphany or Midori on any Linux distribution except Ubuntu.
======

Personally, I classify [1] as an annoyance-class bug (but still a bug)
and [2] as a security issue.

Relevant links:

https://bugs.webkit.org/show_bug.cgi?id=118974
https://bugzilla.gnome.org/show_bug.cgi?id=675217
https://bugs.freedesktop.org/show_bug.cgi?id=46466
https://bugzilla.gnome.org/show_bug.cgi?id=680779

Chromium is not vulnerable because it does not attempt to integrate
the javascript volume with the stream volume in PulseAudio. Tested
Windows-based browsers (IE, Firefox, Chrome, Opera) are not vulnerable
for the same reason - the javascript-settable volume does not
correspond to anything in the system mixer. I have not tested Firefox
with GStreamer backend on Linux.

I spoke both to representatives of PulseAudio development team and to
WebKit-GTK developers. The unfortunate conclusion is that no agreement
can be reached upstream on the topic "who should fix what", and no
agreement exists whether this is a bug at all (I was told that I am
the only one who complains, and that I should fix the issue on my own
system by disabing flat volumes, which I did, but I don't consider
this to be a full fix). I should also mention that the current
behaviour is a necessary result of a previous agreement reached at
GUADEC between PulseAudio, GStreamer and WebKit-GTK developers -
that's why the natural resistance to its rediscussion.

As all components are definitely operating as intended according to
the majority of their authors (PulseAudio implements the most
intuitive volume control model according to a published research
paper, WebKit-GTK implements W3C standards and offers the best
possible integration of web applications into that desktop sound
volume model), this bug will, I think, never get fixed upstream.

PulseAudio devs mostly agree that this is a sandboxing issue in
WebKit-GTK. WebKit-GTK developers think that such sandboxing is
possible to do but should not be done because "We want to be coherent
with the rest of GNOME apps, and the volume model they are using"
(even though no other browser attempts that), and suggest to either
fix the volume model or live with it.

My own advice to Linux distributions, which obviously differs from the
upstream opinion of both projects:

1. Disable flat volumes in PulseAudio by default. This would convert
this security issue into a mere "application relative-volume slider
disobeys the user" annoyance-class bug.

2. Persuade upstream developers of WebKit-GTK that full desktop
integration is not a worthy goal for a web browser engine.

One off-topic remark, just to illustrate my opinion: this is not the
first case that I encountered where too much desktop integration is an
issue. The other (non-security) issue is
https://bugzilla.redhat.com/show_bug.cgi?id=755200

-- 
Alexander E. Patrakov

Powered by blists - more mailing lists

Please check out the Open Source Software Security Wiki, which is counterpart to this mailing list.

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.