Sicherheitslücke in X11 ?

Antworten
Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Sicherheitslücke in X11 ?

Beitrag von Mathias »

Ich habe folgendes Mini-Programm gestartet, das einzige was dies macht, es erzeugt ein Fenster und gibt deren Nummer aus.

Code: Alles auswählen

program Project1;
uses
  xlib, xutil, x;
var
  dis: PDisplay;
  win: TWindow;
  Event: TXEvent;
begin
  dis := XOpenDisplay(nil);
  win := XCreateSimpleWindow(dis, RootWindow(dis, DefaultScreen(dis)), 10, 10, 320, 240, 1, 0, $FF8888);
  XSelectInput(dis, win, KeyPressMask or ExposureMask);
  XMapWindow(dis, win);
  WriteLn('Fenster Nummer: ', win); // Nummer des Fensters
  while (True) do begin
    XNextEvent(dis, @Event);
  end;
  XCloseDisplay(dis);
end.       
Anschliessend habe ich folgendes Programm gestartet, und vorher die Fensternummer vom ersten Programm genommen.
Und dieses Programm zeichnet voll im ersten Programm rein.

Code: Alles auswählen

program Project1;
uses
  xlib, x;
var
  dis: PDisplay;
  scr: LongInt;
begin
  dis := XOpenDisplay(nil);
  //    dis := XOpenDisplay('localhost:10.0');
  scr := DefaultScreen(dis);
  repeat
    XSetForeground(dis, DefaultGC(dis, scr), random($FFFFFF));
    XFillRectangle(dis, 98566145, DefaultGC(dis, scr), 20, 20, 100, 100); // Nummer anpassen !
  until False;
end.       
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Sicherheitslücke in X11 ?

Beitrag von Winni »

Hi!

Nee, das ist kein Sicherheitsleck, das ist so by design.

Grundlagen des X Windows Systems:

https://magcius.github.io/xplain/article/x-basics.html

Winni

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Sicherheitslücke in X11 ?

Beitrag von Mathias »

Da habe ich noch etwas lustiges entdeckt:

Code: Alles auswählen

    XAutoRepeatOff(dis);
Diese Funktion deaktiviert die Tastatur-Wiederholung. Was dabei interessant ist, wen man die Wiederholung deaktiviert, bleibt dies in allen sonst noch laufenden Programmen enthalten. Auch dann, noch wen man sein Programm geschlossen hat.

@Winni
Interessanter Link.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten