* Re: information leak in vga console scrollback buffer
2004-06-13 2:48 ` Kalin KOZHUHAROV
@ 2004-06-13 3:47 ` David Lang
2004-06-13 4:08 ` Kalin KOZHUHAROV
2004-06-13 8:33 ` Koblinger Egmont
2 siblings, 0 replies; 14+ messages in thread
From: David Lang @ 2004-06-13 3:47 UTC (permalink / raw)
To: Kalin KOZHUHAROV; +Cc: Koblinger Egmont, LKML
no, that isn't what he's talking about.
the console scrollback has never had any concept of login/logout so what
you did is per spec and is a feature
if you switch to a different console between steps 3 and 4 and then switch
back you will see what Koblinger is talking about.
David Lang
On Sun, 13 Jun 2004, Kalin KOZHUHAROV wrote:
> Date: Sun, 13 Jun 2004 11:48:52 +0900
> From: Kalin KOZHUHAROV <kalin@ThinRope.net>
> To: Koblinger Egmont <egmont@uhulinux.hu>
> Cc: LKML <linux-kernel@vger.kernel.org>
> Subject: Re: information leak in vga console scrollback buffer
>
> Koblinger Egmont wrote:
>> On Sat, 12 Jun 2004, Chris Wedgwood wrote:
>>
>>
>>>> Rationale? (At least an rtfm-like pointer to that?)
>>>
>>> Maybe I didn't full understand you. Generally I find it desirable to
>>> be able to read things that scrolled off the screen a long time ago.
>>> It's very useful for unattended machines if I need to 'look' back.
>>
>>
>> Generally console's scrollback buffer disappears as soon as you switch to
>> another console.
>>
>> It'd be a really nice idea if all the consoles had a configurable amount
>> of scrollback buffer which is always remembered. IMHO with todays machines
>> having a scrollback buffer of 1000 lines for 6 or a little bit more
>> consoles (at most 63 IIRC) is affordable as well as the processor time
>> needed to copy the data from/to vga/normal memory on each console switch
>> and at every Nth Shift+PageUp (no matter what N is). But this is a whole
>> different story.
>>
>> What I'm talking about is: normally after people switch away from a
>> console they assume that the scrollback buffer is no longer available
>> since this is the behavior they experience normally. E.g. Z does a 'cat
>> my-long-private-file' and then logs out. Then even if getty clears the
>> screen, one can press Shift+PageUp to go back and read parts of this file.
>> Z is about to leave the computer but don't want others to be able to
>> scroll back with Shift+PageUp. So switches console (Alt+Fx) and the
>> scrollback buffer is gone. He is happy. But shouldn't be.
>>
>> With the trick I described it is possible to bring back some random parts
>> of previous texts, often some garbage with stupid flashing characters, but
>> maybe parts of Z's my-long-private-file. The behavior seems to be random
>> to me, uncontrollable by the user (I see no way to force private data to
>> be cleared from the vga buffer) and clearly not intentional.
>>
>> Please try what I wrote, I'm sure that you misunderstood me (I'm trying to
>> write as clear as I can but I'm not native English speaker and not even
>> good in English, so it might be that my bugreport is a little bit hard to
>> understand). I'm sure not talking about a feature, nor am I a Linux newbie
>> who has just seen Shift+PageUp a few days ago for the first time (even
>> though I'm very far from being a kernel hacker ;-))
>>
> OK, I think I got what you are trying to point out.
> To reproduce:
> 1. login to a (vga) console.
> 2. less /etc/services; press space t oscroll a few screens
> 3. logout
> 4. login again on the same console (possibly as a different user)
> 5. less /etc/resolv.conf
> 6. press UpArrow, then Shift+PgUp
>
> What is expected:
> screen should not scroll past your file.
>
> What happens:
> You can view the previous text (from /etc/services)!!!
>
> So the point is that this buffer is persistend across logout/login, which is
> a security bug.
> And I guess LKML is not the place for it, logout should clear the buffer
> IMHO.
>
> BTW, using agetty here.
>
> Kalin.
>
> --
> ||///_ o *****************************
> ||//'_/> WWW: http://ThinRope.net/
> |||\/<" |||\\ ' ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
>
--
"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are,
by definition, not smart enough to debug it." - Brian W. Kernighan
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: information leak in vga console scrollback buffer
2004-06-13 2:48 ` Kalin KOZHUHAROV
2004-06-13 3:47 ` David Lang
@ 2004-06-13 4:08 ` Kalin KOZHUHAROV
2004-06-13 8:33 ` Koblinger Egmont
2 siblings, 0 replies; 14+ messages in thread
From: Kalin KOZHUHAROV @ 2004-06-13 4:08 UTC (permalink / raw)
To: Koblinger Egmont; +Cc: LKML
Kalin KOZHUHAROV wrote:
> Koblinger Egmont wrote:
>
>> On Sat, 12 Jun 2004, Chris Wedgwood wrote:
>>
>>
>>>> Rationale? (At least an rtfm-like pointer to that?)
>>>
>>>
>>> Maybe I didn't full understand you. Generally I find it desirable to
>>> be able to read things that scrolled off the screen a long time ago.
>>> It's very useful for unattended machines if I need to 'look' back.
>>
>>
>>
>> Generally console's scrollback buffer disappears as soon as you switch to
>> another console.
>>
>> It'd be a really nice idea if all the consoles had a configurable amount
>> of scrollback buffer which is always remembered. IMHO with todays
>> machines
>> having a scrollback buffer of 1000 lines for 6 or a little bit more
>> consoles (at most 63 IIRC) is affordable as well as the processor time
>> needed to copy the data from/to vga/normal memory on each console switch
>> and at every Nth Shift+PageUp (no matter what N is). But this is a whole
>> different story.
>>
>> What I'm talking about is: normally after people switch away from a
>> console they assume that the scrollback buffer is no longer available
>> since this is the behavior they experience normally. E.g. Z does a 'cat
>> my-long-private-file' and then logs out. Then even if getty clears the
>> screen, one can press Shift+PageUp to go back and read parts of this
>> file.
>> Z is about to leave the computer but don't want others to be able to
>> scroll back with Shift+PageUp. So switches console (Alt+Fx) and the
>> scrollback buffer is gone. He is happy. But shouldn't be.
>>
>> With the trick I described it is possible to bring back some random parts
>> of previous texts, often some garbage with stupid flashing characters,
>> but
>> maybe parts of Z's my-long-private-file. The behavior seems to be random
>> to me, uncontrollable by the user (I see no way to force private data to
>> be cleared from the vga buffer) and clearly not intentional.
>>
>> Please try what I wrote, I'm sure that you misunderstood me (I'm
>> trying to
>> write as clear as I can but I'm not native English speaker and not even
>> good in English, so it might be that my bugreport is a little bit hard to
>> understand). I'm sure not talking about a feature, nor am I a Linux
>> newbie
>> who has just seen Shift+PageUp a few days ago for the first time (even
>> though I'm very far from being a kernel hacker ;-))
>>
> OK, I think I got what you are trying to point out.
> To reproduce:
> 1. login to a (vga) console.
> 2. less /etc/services; press space t oscroll a few screens
> 3. logout
> 4. login again on the same console (possibly as a different user)
> 5. less /etc/resolv.conf
> 6. press UpArrow, then Shift+PgUp
>
> What is expected:
> screen should not scroll past your file.
>
> What happens:
> You can view the previous text (from /etc/services)!!!
>
> So the point is that this buffer is persistend across logout/login,
> which is a security bug.
> And I guess LKML is not the place for it, logout should clear the buffer
> IMHO.
>
> BTW, using agetty here.
>
> Kalin.
>
Ok, I changed agetty to mingetty (I was long waiting to do that).
However this didn't change things.
Now, playing with switching VT, however, the buffer was cleared!
So, I guess this is agetty problem then...
Also for point 2 you can do with:
2. cat /etc/services
When I logout a given box from the console, I repetedly do Alt+Left to check if there are some VT left logged in and thus I clear all the buffers as a side effect (now with mingetty).
Kalin.
--
||///_ o *****************************
||//'_/> WWW: http://ThinRope.net/
|||\/<"
|||\\ '
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: information leak in vga console scrollback buffer
2004-06-13 2:48 ` Kalin KOZHUHAROV
2004-06-13 3:47 ` David Lang
2004-06-13 4:08 ` Kalin KOZHUHAROV
@ 2004-06-13 8:33 ` Koblinger Egmont
2004-06-13 10:52 ` Kalin KOZHUHAROV
2 siblings, 1 reply; 14+ messages in thread
From: Koblinger Egmont @ 2004-06-13 8:33 UTC (permalink / raw)
To: Kalin KOZHUHAROV; +Cc: LKML
On Sun, 13 Jun 2004, Kalin KOZHUHAROV wrote:
> OK, I think I got what you are trying to point out.
> To reproduce:
> 1. login to a (vga) console.
> 2. less /etc/services; press space t oscroll a few screens
> 3. logout
> 4. login again on the same console (possibly as a different user)
> 5. less /etc/resolv.conf
> 6. press UpArrow, then Shift+PgUp
>
> What is expected:
> screen should not scroll past your file.
>
> What happens:
> You can view the previous text (from /etc/services)!!!
Here you didn't clear the scrollback buffer. Maybe you (or getty) executed
a clear or a terminal reset but that only affects the visible part and not
the scrollback buffer. There's absolutely no problem so far since everyone
knows that the scrollback buffer only disappears when you switch to a
different console.
My problem is that with a really-not-trivial-command-and-key-combination
you can possibly see /etc/services (in your example) even _after_ you've
switched to a different console and you are certain that the scrollback
buffer is no longer available.
And then what if it's not /etc/services but some private data of yours?
Maybe other users can later access it. There's no way you can protect
yourself against it. And you live in a false belief that your private data
is scrolled out forever.
Please forget your own test case. Repeat _exactly_ those steps _I_
described in my original post. Then you'll understand what I'm talking
about.
You sure won't understand my problem if you believe that I'm wrong and
want to convience me with your own interpretation of my words and your own
(completely different) test case. Please stick to exactly what I reported.
--
Egmont
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: information leak in vga console scrollback buffer
2004-06-13 8:33 ` Koblinger Egmont
@ 2004-06-13 10:52 ` Kalin KOZHUHAROV
2004-06-13 11:48 ` Koblinger Egmont
0 siblings, 1 reply; 14+ messages in thread
From: Kalin KOZHUHAROV @ 2004-06-13 10:52 UTC (permalink / raw)
To: Koblinger Egmont; +Cc: LKML
Koblinger Egmont wrote:
> On Sun, 13 Jun 2004, Kalin KOZHUHAROV wrote:
>
>
>> OK, I think I got what you are trying to point out. To reproduce:
>> 1. login to a (vga) console.
>> 2. less /etc/services; press space to scroll a few screens
>> 3. logout
>> 4. login again on the same console (possibly as a different user)
>> 5. less /etc/resolv.conf
>> 6. press Up, then Shift+PgUp
>>
>> What is expected: screen should not scroll past your file.
>>
>> What happens: You can view the previous text (from
>> /etc/services)!!!
>
>
> Here you didn't clear the scrollback buffer. Maybe you (or getty)
> executed a clear or a terminal reset but that only affects the
> visible part and not the scrollback buffer. There's absolutely no
> problem so far since everyone knows that the scrollback buffer only
> disappears when you switch to a different console.
Well, I didn't know obviously, now I know.
> My problem is that with a
> really-not-trivial-command-and-key-combination you can possibly see
> /etc/services (in your example) even _after_ you've switched to a
> different console and you are certain that the scrollback buffer is
> no longer available.
>
> And then what if it's not /etc/services but some private data of
> yours? Maybe other users can later access it. There's no way you can
> protect yourself against it. And you live in a false belief that your
> private data is scrolled out forever.
>
> Please forget your own test case. Repeat _exactly_ those steps _I_
> described in my original post. Then you'll understand what I'm
> talking about.
I tried at first...
Now I did it again:
1. Login on VT2
2. less /etc/services
3. switch to X (VT8 here) and do something
4. switch back to VT2
5. press Shift+PgUp
6. press Up, then press several times Shift+PgUp
What is expected:
screen should not scroll past the beginnign of /etc/services.
What happens:
I saw a bunch of garbage plus pieces of text (/etc/shadow form previous tests and so on), this is a security flaw, NOT feature.
> You sure won't understand my problem if you believe that I'm wrong
> and want to convience me with your own interpretation of my words and
> your own (completely different) test case. Please stick to exactly
> what I reported.
No, I thought you were right, I was just trying to produce a simple testcase :-(
What I was trying ot prove with my testcase is that
a) if you are using mingetty
AND
b) you switch VT after logout (pressing Alt+Right a few times)
the above mentioned scroll-back flow is not observed.
Ok, after tons of new tries, I reproduced it...
I was thinking that every VT has its own scrollback buffer and you are supposed to see what has been on a given VT.
Now I see that you can see things that have been printed on _other_ VTs :-)
I confirm the bug.
There is no connection with {a,min}getty it seems.
Kalin.
--
||///_ o *****************************
||//'_/> WWW: http://ThinRope.net/
|||\/<"
|||\\ '
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^ permalink raw reply [flat|nested] 14+ messages in thread* Re: information leak in vga console scrollback buffer
2004-06-13 10:52 ` Kalin KOZHUHAROV
@ 2004-06-13 11:48 ` Koblinger Egmont
0 siblings, 0 replies; 14+ messages in thread
From: Koblinger Egmont @ 2004-06-13 11:48 UTC (permalink / raw)
To: Kalin KOZHUHAROV; +Cc: LKML
On Sun, 13 Jun 2004, Kalin KOZHUHAROV wrote:
> What happens:
> I saw a bunch of garbage plus pieces of text (/etc/shadow form previous
> tests and so on), this is a security flaw, NOT feature.
Well, this is what I was talking about :-)))
There's only one question left: who's willing and able to fix it?
--
Egmont
^ permalink raw reply [flat|nested] 14+ messages in thread