It is related to windows unquoted service path vulnerability in the the
installer that creates service path without quotes that make service.exe to
look for undesirable path for executable.

postgresql-9.3 service path : C:/Users/asif/Desktop/Program
files/9.3/bin/pg_ctl.exe runservice -N "postgresql-9.3" -D
"C:/Users/asif/Desktop/Program files/9.3/data" -w

service.exe

> C:\Users\asif\Desktop\Program     NAME NOT FOUND
> C:\Users\asif\Desktop\Program.exe     NAME NOT FOUND
> C:\Users\asif\Desktop\Program files\9.3\bin\pg_ctl.exe     ACCESS DENIED
> C:\Users\asif\Desktop\Program files\9.3\bin\pg_ctl.exe     ACCESS DENIED
>
> C:\Users\asif\Desktop\Program files\9.3\bin\pg_ctl.exe runservice     NAME
> NOT FOUND
> C:\Users\asif\Desktop\Program files\9.3\bin\pg_ctl.exe runservice.exe
> NAME NOT FOUND
> C:\Users\asif\Desktop\Program files\9.3\bin\pg_ctl.exe runservice -N
> NAME NOT FOUND
> C:\Users\asif\Desktop\Program files\9.3\bin\pg_ctl.exe runservice -N.exe
>   NAME NOT FOUND
> C:\Users\asif\Desktop\Program files\9.3\bin\pg_ctl.exe runservice -N
> "postgresql-9.3"     NAME INVALID
> C:\Users\asif\Desktop\Program files\9.3\bin\pg_ctl.exe runservice -N
> "postgresql-9.3".exe     NAME INVALID
> C:\Users\asif\Desktop\Program files\9.3\bin\pg_ctl.exe runservice -N
> "postgresql-9.3" -D     NAME INVALID
> C:\Users\asif\Desktop\Program files\9.3\bin\pg_ctl.exe runservice -N
> "postgresql-9.3" -D.exe     NAME INVALID
> C:\Users\asif\Desktop\Program files\9.3\bin\pg_ctl.exe runservice -N
> "postgresql-9.3" -D "C:\Users\asif\Desktop\Program NAME INVALID
> C:\Users\asif\Desktop\Program files\9.3\bin\pg_ctl.exe runservice -N
> "postgresql-9.3" -D "C:\Users\asif\Desktop\Program.exe NAME INVALID
> C:\Users\asif\Desktop\Program files\9.3\bin\pg_ctl.exe runservice -N
> "postgresql-9.3" -D "C:\Users\asif\Desktop\Program files\9.3\data"     NAME
> INVALID
> C:\Users\asif\Desktop\Program files\9.3\bin\pg_ctl.exe runservice -N
> "postgresql-9.3" -D "C:\Users\asif\Desktop\Program files\9.3\data".exe
> NAME INVALID
> C:\Users\asif\Desktop\Program files\9.3\bin\pg_ctl.exe runservice -N
> "postgresql-9.3" -D "C:\Users\asif\Desktop\Program files\9.3\data" -w
> NAME INVALID
> C:\Users\asif\Desktop\Program files\9.3\bin\pg_ctl.exe runservice -N
> "postgresql-9.3" -D "C:\Users\asif\Desktop\Program files\9.3\data" -w.exe
>   NAME INVALID


Fix :

postgresql-9.3 service path : "C:/Users/asif/Desktop/Program
files/9.3/bin/pg_ctl.exe" runservice -N "postgresql-9.3" -D
"C:/Users/asif/Desktop/Program files/9.3/data" -w

It would be good if this is reported on pg installer forum or security
forum. Thanks.

Regards,
Asif Naeem

On Mon, Oct 28, 2013 at 12:06 PM, Naoya Anzai <anzai-na...@mxu.nes.nec.co.jp>
wrote:
>
> Hi, Asif.
>
> Thank you for response.
>
>
> >       C:\Users\asif\Desktop\Program files\9.3>"bin\pg_ctl" -D
"C:\Users\asif\Desktop\Program files\9.3\data1" -l logfile start
> >       server starting
>
> This failure does not occur by the command line.
> PostgreSQL needs to start by Windows Service.
>
> Additionally,In this case,
> A file "Program" needs to be exist at "C:\Users\asif\Desktop\", and
> "postgres.exe" needs to be exist at "C:\Users\asif\Desktop\Program
files\9.3\bin".
> ------------
> C:\Users\asif\Desktop\Program files\9.3\bin>dir
> ...
>     4,435,456   postgres.exe
>        80,896   pg_ctl.exe
> ...
>
> C:\Users\asif\Desktopp>dir
> ...
>             0  Program
> <DIR>          Program files
> ...
> ------------
>
> Regards,
> Naoya
>
> > Hi Naoya,
> >
> > I am not able to reproduce the problem. Do you mean pg windows service
installed by installer is not working or bin\pg_ctl binary is not accepting
spaces in the patch ?. Following worked for me i.e.
> >
> >
> >       C:\Users\asif\Desktop\Program files\9.3>"bin\pg_ctl" -D
"C:\Users\asif\Desktop\Program files\9.3\data1" -l logfile start
> >       server starting
> >
> >
> > Can you please share the exact steps ?. Thanks.
> >
> >
> > Regards,
> > Muhammad Asif Naeem
> >
> >
> >
> > On Mon, Oct 28, 2013 at 10:26 AM, Naoya Anzai <
anzai-na...@mxu.nes.nec.co.jp> wrote:
> >
> >
> >       Hi All,
> >
> >       I have found a case that PostgreSQL Service does not start.
> >       When it happens, the following error appears.
> >
> >        "is not a valid Win32 application"
> >
> >       This failure occurs when the following conditions are true.
> >
> >       1. There is "postgres.exe" in any directory that contains a space,
> >          such as "Program Files".
> >
> >          e.g.)
> >          C:\Program Files\PostgreSQL\bin\postgres.exe
> >
> >       2. A file using the first white space-delimited
> >          tokens of that directory as the file name exists,
> >          and there is it in the same hierarchy.
> >
> >          e.g.)
> >          C:\Program     //file
> >
> >       "pg_ctl.exe" as PostgreSQL Service creates a postgres
> >       process using an absolute path which indicates the
> >       location of "postgres.exe",but the path is not enclosed
> >       in quotation.
> >
> >       Therefore,if the above-mentioned conditions are true,
> >       CreateProcessAsUser(a Windows Function called by pg_ctl.exe)
> >       tries to create a process using the other file such
> >       as "Program", so the service fails to start.
> >
> >       Accordingly, I think that the command path should be
> >       enclosed in quotation.
> >
> >       I created a patch to fix this failure,
> >       So could anyone confirm?
> >
> >       Regards,
> >
> >       Naoya
> >
> >       ---
> >       Naoya Anzai
> >       Engineering Department
> >       NEC Soft, Ltd.
> >       E-Mail: anzai-na...@mxu.nes.nec.co.jp
> >       ---
> >
> >
> >       --
> >       Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
> >       To make changes to your subscription:
> >       http://www.postgresql.org/mailpref/pgsql-hackers
> >
> >
> >
> >
> >
>
> 以上、よろしくお願い致します。
>
> --------------------------------------------------------
> NECソフト株式会社
> PFシステム事業部 テーマソフト開発G
> 安西 直也
>
> 外線(03)5534-2353
> 内線(8)57-40364
> Mail:NES-N2363
> E-mail:anzai-na...@mxu.nes.nec.co.jp
> --------------------------------------------------------
> ≪本メールの取り扱い≫
> ・区分:秘密
> ・開示:必要最小限で可
> ・持出:禁止
> ・期限:無期限
> ・用済後:廃棄
>
>
>

Reply via email to