Bugtraq mailing list archives
Re: Xwindows security?
From: bet () std sbi com (Bennett Todd)
Date: Mon, 9 Jan 1995 14:27:17 -0500 (EST)
However, this is not really a problem. X contains authorization mechanisms [....] As is so often the case, the way to attack this problem is by educating people, thus making them understand why they want to be careful and what mechanisms are available to allow them to do so, rather than imposing technical restrictions that are easy to get around and, since they don't teach anyone _why_ they're there, just incite people to do so.
I don't really entirely disagree here, but I think "educating people" is only part of the process of convincing management to allow you to make a change (and demo programs like the recently-posted "xkey" are great for this purpose); the actual change I think is best made by automating it. Don't try to convince all your users to set up xauth(1); that's a hideous job, made vastly harder than it should be by the cryptic documentation, and the lack of a secure standard cookie generator. Instead fix the standard startup script that users invoke, so that they begin running with proper authentication. There's still some education involved; you've gotta also develop suitable tools for helping them pass cookies around wherever they need to, and teach them how to use them; but I think the bulk of the job lies in automating the setup and use of Xauthority so it's no additional bother for users. -Bennett bet () sbi com P.S. For completeness, here's my current cookie generator. I invoke it as "randstuff 32 HEX" to generate a key suitable for MIT-MAGIC-COOKIE-1. #!/usr/local/bin/perl # This is a joint development project. People have contributed tips from all # over; please forgive me (and let me know!) if you aren't mentioned below. # But the basic concept came from Larry Wall, the first major attempt at an # implementation came from Bennett Todd, then Larry Wall came back with more # bugfixes and enhancements than there were actual lines of code. Since then # other people have contributed tweaks and enhancements. Additional helpful # ``noise'' commands have been contributed by Brian Ward. ($progname=$0)=~s#.*/##; $syntax="syntax: $progname [-n] [len [printable|all|hex|HEX]]\n"; require 'getopts.pl'; &Getopts('n') || die $syntax; defined($max = shift) || ($max = 8); defined($alphabet = shift) || ($alphabet = 'printable'); ($#ARGV == -1) || die $syntax; domain: { $_ = $alphabet; /^printable$/ && do { $chars = pack("C*", (32 .. 126)); last domain; }; /^all$/ && do { $chars = pack("C*", ( 0 .. 255)); last domain; }; /^hex$/ && do { $chars = "0123456789abcdef"; last domain; }; /^HEX$/ && do { $chars = "0123456789ABCDEF"; last domain; }; die $syntax; }; @chars = split('', $chars); @randstring = split('', &randbits($max)); foreach $i (@randstring) { print $chars[ord($i) % $#chars]; } print "\n" unless $opt_n; exit 0; sub randbits { local($nbytes) = @_; local(*_, $noise, $buf, $limit, $discard, $newlen); # Here's the big non-portability. This command works really well on # Sun workstations running SunOS; on other platforms, root around for # commands that report lots of detailed OS internals state, plus a # compressor or other program to smear the bits about. $noise = '(ps -agxlww;pstat -afipSsT;free;cat /proc/net/dev)2>/dev/null|compress'; # Run the noise command; in case it croaks, slap on whatever other state we # can conveniently (portably) find. $buf = `$noise` . $$ . getppid() . time . join('', %ENV); # Gotta have enough bits for at least one good fold. $limit = int(length($buf)/2); die "Insufficient random state; try less than $limit\n" if $nbytes > $limit; # Get Perl to treat ^ as bit-string op $discard = vec($buf, 0, 8); # Now fold the noise down by repeated xor, halving the buffer until it's but # little bigger than xauth(1) wants. while (length($buf) >= $nbytes*2) { $newlen = int((length($buf) + 1) / 2); $buf = (substr($buf, 0, $newlen) ^ substr($buf, $newlen, $newlen)); } # Final fold may turn in some nulls, but fits it exactly to $nbytes without # discarding any bits. substr($buf, 0, $nbytes) ^ substr($buf, $nbytes, $nbytes); }
Current thread:
- Re: Xwindows security? der Mouse (Jan 06)
- Re: Xwindows security? Bennett Todd (Jan 09)
- Re: Xwindows security? Benjamin Fried (Jan 10)
- Re: Xwindows security? Jon Peatfield (Jan 10)
- Re: Xwindows security? Rens Troost (Jan 11)
- Re: Xwindows security? Jon Peatfield (Jan 11)
- Re: Xwindows security? Rens Troost (Jan 11)
- Re: Xwindows security? Jon Peatfield (Jan 11)
- xcrowbar William McVey (Jan 11)
- xcrowbar der Mouse (Jan 11)
- Re: Xwindows security? Dave Kinchlea (Jan 11)
- Re: Xwindows security? Adam Shostack (Jan 11)
- Re: Xwindows security? Benjamin Fried (Jan 10)
- Re: Xwindows security? Bennett Todd (Jan 09)