| From: | Jun KAWAI <kwj(at)sa-y(dot)com> |
|---|---|
| To: | pgsql-jdbc(at)postgresql(dot)org |
| Subject: | md5 authentication bug? |
| Date: | 2002-08-14 06:48:44 |
| Message-ID: | 20020814064844.GA4994%kwj@sa-y.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-jdbc |
Hello,
I think I found a MD5 authentication bug in the PostgreSQL JDBC
driver (PostgreSQL 7.2.1).
In the openConnection() [Connection.java], the MD5 salt is converted
to type String. And then, MD5Digest.encode() is called with this
String.
byte[] rst = new byte[4];
rst[0] = (byte)pg_stream.ReceiveChar();
rst[1] = (byte)pg_stream.ReceiveChar();
rst[2] = (byte)pg_stream.ReceiveChar();
rst[3] = (byte)pg_stream.ReceiveChar();
salt = new String(rst, 0, 4);
...
byte[] digest = MD5Digest.encode(PG_USER, PG_PASSWORD, salt);
But, it is not guaranteed that any byte[] is convertible to type String.
So, it should change the MD5Digest.encode method's interface like below.
public static byte[] encode(String user, String password, byte[] salt)
It must not convert the MD5 salt to type String.
I wrote an test program as below.
It is difference between orig_byte and conv_byte.
byte[] orig_byte = new byte[4];
orig_byte[0] = (byte) 0x36;
orig_byte[1] = (byte) 0x91;
orig_byte[2] = (byte) 0xce;
orig_byte[3] = (byte) 0xb9;
System.out.println(System.getProperty("file.encoding"));
System.out.println("===");
for (int i = 0; i < orig_byte.length; i++) {
System.out.println(orig_byte[i]);
}
System.out.println("===");
String salt = new String(orig_byte, 0, 4);
byte[] conv_byte = salt.getBytes();
for (int i = 0; i < conv_byte.length; i++) {
System.out.println(conv_byte[i]);
}
Results:
On Linux(x86) / J2SE 1.4.1-beta
ANSI_X3.4-1968
===
54
-111
-50
-71
===
54
63
63
63
On Solaris(SPARC) / J2SE 1.3.1_04
eucJP
===
54
-111
-50
-71
===
54
63
Thank you,
Jun Kawai
| From | Date | Subject | |
|---|---|---|---|
| Next Message | shanmugavel | 2002-08-14 07:03:08 | Abrupt connection closure while handling large objects |
| Previous Message | Andrew Sullivan | 2002-08-13 19:25:52 | Re: Hardware Tuning |