![]() |
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:
Das führt dazu, dass wenn man eine Datei
C:\program files (x86)\meineanwendung\meinservice.exe
Delphi-Quellcode:
erstellt, diese statt des Services mit entsprechenden Rechten ausgeführt wird! Ganz nebenbei funktioniert dann der eigene Service natürlich auch nicht mehr.
C:\program.exe
Auf der Suche danach, ob das Problem bekannt ist, bin ich lediglich auf diese beiden Einträge gestoßen: ![]() ![]() 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:
intern
SvcMgr.pas: TServiceApplication.RegisterServices
Delphi-Quellcode:
lediglich mit
CreateService(...)
Delphi-Quellcode:
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.
Path := ParamStr(0)
Stattdessen wäre folgender Workaround eine Lösung, indem der Service seinen Pfad direkt nach der Installation selbst korrigiert:
Delphi-Quellcode:
Ich empfehle dringend jedem, der einen Service mit Delphis SvcMgr erstellt hat, diesen Fix einzubauen!
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; |
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 |
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. |
AW: Hinweis: Wenig bekanntes Sicherheitsproblem mit Services durch Delphi SvcMgr
Das ist kein Sicherheitsproblem imho, sondern einfach ein Bug, wegen
Zitat:
|
AW: Hinweis: Wenig bekanntes Sicherheitsproblem mit Services durch Delphi SvcMgr
Zitat:
|
AW: Hinweis: Wenig bekanntes Sicherheitsproblem mit Services durch Delphi SvcMgr
Genau. Ich wollte nur den Theoretikern den Wind aus den Segeln nehmen ;-)
|
AW: Hinweis: Wenig bekanntes Sicherheitsproblem mit Services durch Delphi SvcMgr
Zitat:
Christoph |
AW: Hinweis: Wenig bekanntes Sicherheitsproblem mit Services durch Delphi SvcMgr
Zitat:
|
AW: Hinweis: Wenig bekanntes Sicherheitsproblem mit Services durch Delphi SvcMgr
Zitat:
|
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 04:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz