Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Hinweis: Wenig bekanntes Sicherheitsproblem mit Services durch Delphi SvcMgr (https://www.delphipraxis.net/181589-hinweis-wenig-bekanntes-sicherheitsproblem-mit-services-durch-delphi-svcmgr.html)

CodeX 27. Aug 2014 12:08

Hinweis: Wenig bekanntes Sicherheitsproblem mit Services durch Delphi SvcMgr
 
Ich war gerade ganz schön erstaunt, als ich festgestellt habe, dass bei der Installation eines mit Delphi erstellten Services der Pfad zur Datei keine Anführungszeichen enthält:
Code:
C:\program files (x86)\meineanwendung\meinservice.exe
Das führt dazu, dass wenn man eine Datei
Delphi-Quellcode:
C:\program.exe
erstellt, diese statt des Services mit entsprechenden Rechten ausgeführt wird! Ganz nebenbei funktioniert dann der eigene Service natürlich auch nicht mehr.

Auf der Suche danach, ob das Problem bekannt ist, bin ich lediglich auf diese beiden Einträge gestoßen:
http://qc.embarcadero.com/wc/qcmain.aspx?d=5728
http://qc.embarcadero.com/wc/qcmain.aspx?d=90093
Allerdings scheint sich danach nichts gerührt zu haben. Ich kann natürlich nur für Delphi bis XE sprechen, aber es kann gerne jemand mal in den neueren Versionen nachschauen.

Grundsätzlich liegt das Problem darin, dass
Delphi-Quellcode:
SvcMgr.pas: TServiceApplication.RegisterServices
intern
Delphi-Quellcode:
CreateService(...)
lediglich mit
Delphi-Quellcode:
Path := ParamStr(0)
aufruft, ohne das Ganze mit Anführungszeichen zu umschließen. Selber patchen wäre hier natürlich kein Problem, aber ich rate davon ab, denn nachher vergisst man den Patch wieder und das Problem kommt mit der nächsten Delphi-Installation wieder.

Stattdessen wäre folgender Workaround eine Lösung, indem der Service seinen Pfad direkt nach der Installation selbst korrigiert:
Delphi-Quellcode:
procedure TMyService.ServiceAfterInstall(Sender: TService);
var
  reg: TRegistry;
begin
  reg := TRegistry.Create(KEY_READ or KEY_WRITE);
  try
    reg.RootKey := HKEY_LOCAL_MACHINE;
    if reg.OpenKey('\SYSTEM\CurrentControlSet\Services\' + Name, false) then
    begin
      // Vulnerability-Fix: In case the path contains spaces a file like c:\program.exe might be launched with system privileges
      reg.WriteString('ImagePath', '"' + GetModuleName(HInstance) + '"');

      // Description for the service is optional but highly recommended
      reg.WriteString('Description', 'Kurze Beschreibung');
 
      reg.CloseKey;
    end;
  finally
    reg.Free;
  end;
end;
Ich empfehle dringend jedem, der einen Service mit Delphis SvcMgr erstellt hat, diesen Fix einzubauen!

Bernhard Geyer 27. Aug 2014 13:45

AW: Hinweis: Wenig bekanntes Sicherheitsproblem mit Services durch Delphi SvcMgr
 
Auch wenn ich es für sinnvoll erachte das zu fixen.
Das sicherheotsproblem ist wohl eher theoretischer Natur. Denn wenn man eine böse Exe im Rootverzeichnis liegt hat, hat man wohl ganz andere Probleme

CodeX 27. Aug 2014 13:55

AW: Hinweis: Wenig bekanntes Sicherheitsproblem mit Services durch Delphi SvcMgr
 
Der Einwand ist nur bedingt richtig: Ja, wenn eine beliebige Anwendung auf C: direkt schreiben kann, ist das ein ganz anderes Problem. Allerdings ist der Fall gar nicht so unwahrscheinlich: Bis XP war das Gang und Gäbe. Und ab Vista (7, 8, ...) tritt der Fall ein, wenn man UAC deaktiviert. Das klingt dumm, machen aber tatsächlich viele Leute, weil sie von den Warnmeldungen genervt sind.

Und unabhängig davon: Es ist durchaus gängig ein (zusätzliches) Programmverzeichnis auf einer anderen Partition zu pflegen. Für Software, die unbedingt in ihr Verzeichnis schreiben muss und für sehr große Anwendungen, die auf C: (z.B. kleine SSD für Betriebssystem) keinen Platz finden. Da gibt es dann keine standardmäßigen Zugriffsrechte-Maßnahmen.

So theoretisch ist das Problem nicht. Aber selbst wenn das Problem nur <5% der Anwender betrifft, so ist es dennoch ein Sicherheitsproblem und es gibt keinen Grund, das Problem nicht zu beheben.

Dejan Vu 27. Aug 2014 14:12

AW: Hinweis: Wenig bekanntes Sicherheitsproblem mit Services durch Delphi SvcMgr
 
Das ist kein Sicherheitsproblem imho, sondern einfach ein Bug, wegen
Zitat:

Ganz nebenbei funktioniert dann der eigene Service natürlich auch nicht mehr.
Egal, ob man in 'C:\' nun ein Programm.exe hat, oder nicht.

CodeX 27. Aug 2014 14:18

AW: Hinweis: Wenig bekanntes Sicherheitsproblem mit Services durch Delphi SvcMgr
 
Zitat:

Zitat von Dejan Vu (Beitrag 1269998)
Das ist kein Sicherheitsproblem imho, sondern einfach ein Bug

Ja, ein Bug, der u.a. zu einem Sicherheitsproblem führt.

Dejan Vu 27. Aug 2014 14:20

AW: Hinweis: Wenig bekanntes Sicherheitsproblem mit Services durch Delphi SvcMgr
 
Genau. Ich wollte nur den Theoretikern den Wind aus den Segeln nehmen ;-)

pertzschc 27. Aug 2014 15:47

AW: Hinweis: Wenig bekanntes Sicherheitsproblem mit Services durch Delphi SvcMgr
 
Zitat:

Zitat von CodeX (Beitrag 1269967)
Ich war gerade ganz schön erstaunt, als ich festgestellt habe, dass bei der Installation eines mit Delphi erstellten Services der Pfad zur Datei keine Anführungszeichen enthält

Danke dafür - habe bei mir in einigen Programmen fixen müssen!
Christoph

Luckie 27. Aug 2014 18:11

AW: Hinweis: Wenig bekanntes Sicherheitsproblem mit Services durch Delphi SvcMgr
 
Zitat:

Zitat von CodeX (Beitrag 1269993)
Allerdings ist der Fall gar nicht so unwahrscheinlich: Bis XP war das Gang und Gäbe. Und ab Vista (7, 8, ...) tritt der Fall ein, wenn man UAC deaktiviert. Das klingt dumm, machen aber tatsächlich viele Leute, weil sie von den Warnmeldungen genervt sind.

Beliebter Auto Vergleich: Bei XP war der Airbag standardmäßig deaktiviert. Nicht schön, aber man konnte ihn aktivieren. Und wer auf Vista, Windows 7, 8 den Airbag selbst abschaltet...Nun da kann man ja dem Autohersteller nicht anlasten, dass er ein unsicheres Auto ausliefern würde, wenn der Benutzer keinen Gurt anlegt, weil inn das An- und Abschnallen nervt.

CodeX 27. Aug 2014 18:16

AW: Hinweis: Wenig bekanntes Sicherheitsproblem mit Services durch Delphi SvcMgr
 
Zitat:

Zitat von Luckie (Beitrag 1270027)
Zitat:

Zitat von CodeX (Beitrag 1269993)
Allerdings ist der Fall gar nicht so unwahrscheinlich: Bis XP war das Gang und Gäbe. Und ab Vista (7, 8, ...) tritt der Fall ein, wenn man UAC deaktiviert. Das klingt dumm, machen aber tatsächlich viele Leute, weil sie von den Warnmeldungen genervt sind.

Beliebter Auto Vergleich: Bei XP war der Airbag standardmäßig deaktiviert. Nicht schön, aber man konnte ihn aktivieren. Und wer auf Vista, Windows 7, 8 den Airbag selbst abschaltet...Nun da kann man ja dem Autohersteller nicht anlasten, dass er ein unsicheres Auto ausliefern würde, wenn der Benutzer keinen Gurt anlegt, weil inn das An- und Abschnallen nervt.

Und was willst Du mir/uns damit sagen? :gruebel:

himitsu 27. Aug 2014 21:16

AW: Hinweis: Wenig bekanntes Sicherheitsproblem mit Services durch Delphi SvcMgr
 
Wer ordentlich als "Benutzer" arbeitet, der kann den Airbag/Gurt gern abschalten.
Bei "schlimmen" wird dann einfach immer nee gesagt und man ist sicher, da man das eben nicht darf.
> Bei der Fahrt gegen die Wand, wird automatisch vorher angehalten. Aber das dahinter wird dabei auch nicht erreicht.

Wer als Admin unterwegs ist, der ist selber Schuld, wenn er den Airbag/Gurt weg lässt.
Bei der Fahrt gegen die Wand, knallt es eben (der Virus darf ja das Gaspedal durchtreten).

Mit UAC darf man alles, aber wird eben vorher gefragt "Willst du wirkich durch die Wand?" (und dann macht das UAC die Wand weg und der Virus darf das auch, aber erst wenn man es ihm erlaubt)

Man kann sich also genau aussuchen, was man haben möchte.
- immer sicher, da nie etwas erlaubt ist
- fast immer sicher, da man vorher gefrag wird
- unsicher, aber dafür nervt keiner

Und grade wegen letzterem wurde das UAC erfunden, als kleiner Assistent, da die Leute einfach nicht kappiert haben, wie das mit den Rechten funktioniert.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:25 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz