Bug 14480 - untrusted access broken in 7.3
Summary: untrusted access broken in 7.3
Status: RESOLVED INVALID
Alias: None
Product: xorg
Classification: Unclassified
Component: Server/General (show other bugs)
Version: 7.3 (2007.09)
Hardware: x86 (IA32) Linux (All)
: medium major
Assignee: Xorg Project Team
QA Contact: Xorg Project Team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2008-02-13 06:11 UTC by Lasse Kliemann
Modified: 2018-06-12 18:44 UTC (History)
2 users (show)

See Also:
i915 platform:
i915 features:


Attachments

Description Lasse Kliemann 2008-02-13 06:11:02 UTC
Trying to start an X application (no matter which, try xeyes for instance) with only untrusted access yields:

X Error of failed request:  BadDrawable (invalid Pixmap or Window parameter)
  Major opcode of failed request:  55 (X_CreateGC)
  Resource id in failed request:  0x58
  Serial number of failed request:  1
  Current serial number in output stream:  4 

This used to work with 6.9.0 for years, and it still seems to work with 7.2.

An update to 7.3 breaks it; I can only start trusted clients with 7.3.
Comment 1 Eamon Walsh 2008-02-13 17:23:25 UTC
What is the use case here?  Is this extension being used in production?
Comment 2 Eamon Walsh 2008-02-13 17:50:58 UTC
I have committed some changes to the xserver master branch that allow me to start an untrusted xeyes.  The fix will be present in server 1.5 (but see below).  Taking a look at server 1.4 now. 

The Security extension will be revised in 1.5.  Untrusted clients will be treated slightly differently, so that not all accesses to trusted resources are denied, such as simply querying their presence.  This was a result of the new XACE framework that provides finer-grained access modes than just read and write.

The Security extension documentation will be updated to reflect the new semantics before the 1.5 release.
Comment 3 Lasse Kliemann 2008-02-14 14:49:37 UTC
(In reply to comment #1)
> What is the use case here?  Is this extension being used in production?
> 

Yes, I use that for production. I have a bunch of xterms that run with trusted access. Inside of each of these xterms runs a shell, and each shell process does *not* have trusted access. Also, many of these shell processes run under different user IDs. This way, I believe, these processes are pretty good separated from each other. Since I mostly use text-based applications, this yields a practical form of privilege separation on the desktop.

However, sometimes I need to start a graphical application (e.g., to preview a PDF). I then start this application from one of the shell processes with *untrusted* access, in order that this graphical application (hopefully) cannot influence the xterms (which run trusted).

This worked for me for years under 6.9.0. Recently, I switched to the 7.x series and discovered that this scheme was impossible to maintain under 7.3. I am now using 7.2, and it so far works just as fine aus 6.9.0 always did.
Comment 4 Eamon Walsh 2008-02-14 16:58:07 UTC
Pushed a fix to server-1.4-branch for the 1.4.1 release.

Thanks for your feedback on use of that extension.

I hope that some of the more advanced security solutions coming down the pike, such as SELinux, will eventually provide a superior solution for your use case.  This is what my work to this point has been in support of.
Comment 5 Lasse Kliemann 2008-02-16 09:34:06 UTC
(In reply to comment #4)
 
> I hope that some of the more advanced security solutions coming down the pike,
> such as SELinux, will eventually provide a superior solution for your use case.
>  This is what my work to this point has been in support of.
> 

I am looking forward to the new security solutions.

If there is any issue you would like me to test or comment on, please let me know.
Comment 6 Adam Jackson 2018-06-12 18:44:14 UTC
Mass closure: This bug has been untouched for more than six years, and is not obviously still valid. Please file a new report if you continue to experience issues with a current server.


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.