Re: Postgresql security checks

From: Thom Brown <thom(at)linux(dot)com>
To: Josh Kupershmidt <schmiddy(at)gmail(dot)com>
Cc: Machiel Richards <machielr(at)rdc(dot)co(dot)za>, "pgsql-novice(at)postgresql(dot)org" <pgsql-novice(at)postgresql(dot)org>
Subject: Re: Postgresql security checks
Date: 2010-09-01 15:32:40
Message-ID: AANLkTi=aTgKwwjGVgjxz1jW=c+vNU16MfnX5LNiYhe+n@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-novice

On 1 September 2010 16:17, Josh Kupershmidt <schmiddy(at)gmail(dot)com> wrote:
> On Wed, Sep 1, 2010 at 5:02 AM, Thom Brown <thom(at)linux(dot)com> wrote:
>
>> SELECT usename
>> FROM pg_shadow
>> WHERE passwd = 'md5' || md5(usename)
>> OR passwd = 'md5' || md5('company_password');
>
> I think this query should be:
>
>  SELECT usename
>    FROM pg_shadow
>    WHERE passwd = 'md5' || md5(usename || usename) OR
>                   passwd = 'md5' || md5('company_password' || usename);
>
> Since the md5 passwords in pg_shadow (and pg_authid) are created as:
>  MD5(password || username)
>
> By the way, the documentation pages for pg_authid and pg_shadow don't
> mention that md5 passwords are stored in this fashion, perhaps they
> should? Or is this fact documented somewhere else I'm not seeing?

Yes, I had discovered this previously but obviously I've got a memory
leak. Actually, doesn't this apply to roles too?

SELECT rolname
FROM pg_authid
WHERE rolpassword = 'md5' || md5(rolname || rolname) OR
rolpassword = 'md5' || md5('company_password' || rolname);

--
Thom Brown
Twitter: @darkixion
IRC (freenode): dark_ixion
Registered Linux user: #516935

In response to

Responses

Browse pgsql-novice by date

  From Date Subject
Next Message Josh Kupershmidt 2010-09-01 15:49:38 Re: Postgresql security checks
Previous Message Josh Kupershmidt 2010-09-01 15:17:39 Re: Postgresql security checks