1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
|
HCL Users,
HCL 1.5.7 has been released. It fixes a very small list of bugs that
were found since HCL 1.5.6 was released, and contains no new features or
public API changes. The list of bugs fixed in HCL 1.5.7 is below.
The release notes for HCL 1.5.6 are appended to these notes.
ALL SERVERS should abandon HCL 1.5.6 and switch to HCL 1.5.7 ASAP.
The reasons for this strong recommendation should be self apparent after
reading the list of bugs fixed.
We recommend that all sources that include HCL headers be recompiled
with the new HCL 1.5.7 headers. This is only a precaution.
Security Library 1.57
Build Date: 19980902
****************************************************************
**
** NOTE: THIS RELEASE IS NOT BINARY COMPATIBLE WITH 1.55
** AND ANY APPLICATION CODE WILL HAVE TO BE RECOMPILED
**
****************************************************************
****************************************************************
**
** Directory organization of this release
**
****************************************************************
This release consists of the following:
- a JAR file, xpheader.jar, that contains all of the public header files.
- <platform> directories: where <platform> is of the form
<os-name><os-version>[_<compiler>][_<implementation strategy>]_<DBG/OPT>.OBJ
For example,
IRIX6.2_DBG.OBJ (debug build)
SunOS5.5.1_OPT.OBJ (optimized build)
SunOS5.5.1_gcc_DBG.OBJ (built using the non-native compiler gcc)
OSF1V4.0_PTH_DBG.OBJ (PTH means the implementation uses pthreads.)
AIX4.1_PTH_USER_DBG.OBJ (PTH_USER means the implementation is
a combination of user-level threads and pthreads.)
Under each <platform> directory, is the file, mdbinary.jar. This is a
JAR file containing the compiled libraries.
************************************************************
**
** Platforms supported
**
************************************************************
The following platforms are supported:
- Solaris on sparc: 2.5.1, 2.6 (built with cc)
- IRIX: 6.2, 6.3 (built with cc)
- HP-UX: B.10.10, B10.20, B11.00 (built with cc)
- OSF1: V4.0D (built with cc)
- AIX: 4.2 (built with compiler xlC_r).
- Linux: 2.1.108
- WINNT: 4.0 (Visual C++ 4.2 built with and without debug runtime)
************************************************************
**
** How to build the libraries yourself
**
************************************************************
This release of HCL depends on NSPR version 19980529A and
DBM version DBM_1_53.
To build the libraries yourself, execute the following instructions.
On UNIX machines:
cvs co -r HCL_157 ns/security
cvs co -r HCL_157 ns/coreconf
cd ns/coreconf
source ./.cshrc
gmake [BUILD_OPT=1]
cd ..
cd security
gmake [BUILD_OPT=1] import
gmake [BUILD_OPT=1]
On Windows NT machines:
cvs co -r HCL_157 ns/security
cvs co -r HCL_157 ns/coreconf
cd ns/security
gmake [BUILD_OPT=1] import
gmake [BUILD_OPT=1]
For IRIX builds using -n32 flag with pthreads:
cvs co -r HCL_157 ns/security
cvs co -r HCL_157 ns/coreconf
cd ns/coreconf
source ./.cshrc
gmake USE_N32=1 USE_PTHREADS=1 [BUILD_OPT=1]
cd ..
cd security
gmake USE_N32=1 USE_PTHREADS=1 [BUILD_OPT=1] import
gmake USE_N32=1 USE_PTHREADS=1 [BUILD_OPT=1]
************************************************************
**
** Web site, mailing lists, questions, bug reports
**
************************************************************
You can find information about the Security Libraries at the Hardcore Web
site: http://warp/projects/hardcore/
If you have any questions regarding SSL or the HCL libraries, please refer to the
following documents:
http://twain.mcom.com/developer/security/nss/ssl/index.htm
http://twain.mcom.com/developer/security/nss/index.htm
There is a mailing list for HCL issues:
- hcl: the developers of HCL.
Please use BugSplat on scopus (http://scopus/bugsplat) to report
bugs. Choose product "Security Library", version "1.5".
Here's how/where to get HCL 1.5.7:
bits are available at
/m/dist/security/19980902 a.k.a. /m/dist/security/HCL_1_57
\\helium\dist\security\19980902 or \\helium\dist\security\HCL_1_57
Here is the list of bugs fixed in HCL 1.5.7:
a) Thread safety-related crash in cert lib.
b) Thread safety-related problems in NSPR's PL_Arena code.
Worked around by surrounding all HCL's PL_Arena calls with a lock/unlock.
Applications that make their own calls to NSPR's PL_Arena functions or
that use other non-HCL libraries that use PL_Arenas may continue to have
thread-safety issues with PL_Arenas.
c) Fixed a regression in PKCS#11 in HCL 1.5.6 that caused a crash the
first time a server received a bleichenbacker attack ("million question")
message.
See the HCL 1.5.6 release notes below for the list of known bugs in 1.5.7.
Here is a list of the bugs fixed in HCL 1.5.6:
312467 SSL3 uses global pointers for step-down keys, leaks keys
314392 CERT_DestroyCertificate locking code causes nested locking
314571 Memory leak in SSL
314574 HCL Leaks in PKCS #11.
314576 Memory leak in pseudo-prime test in libcrypto
314585 SSL's PR_AcceptRead returns non-aligned PRNetAddr
314592 pkcs5 leaks two memory blocks for each RSA private key op
314596 random number generator causes Unitialized Memory Reads
------------------------------------------------------------------------
HCL 1.5.6 Readme (release notes)
------------------------------------------------------------------------
This file summarizes enhancements, fixed and known bugs in HCL 1.5.6.
For detailed instructions on setting up your environment to run the
sample code in the samples directory, see Chapter 2, "Getting Started
with SSL" (doc/ssl/gtstd.htm) of the SSL Reference (doc/ssl/index.htm).
ENHANCEMENTS SINCE NSS 1.5.4
1. SSL returns much more detailed error messages; for details, see
doc/ssl/sslerr.htm
SSL BUGS FIXED SINCE HCL 1.5.4
1. The "million question" bug in SSL has been fixed.
2. A potential problem (on Unix only) with SSL_InitSessionIDCache has
been fixed. The application chooses the directory into which the SSL
library places the server session cache. If the application doesn't
specify a directory explicitly, the code defaults to using the system
default "temporary" directory, which is generally world-writable. The
problem that was fixed occured only when the application chose to put
the session cache files into a directory writable by untrusted users.
If the application put the cache files in a directory that has
appropriate limits on access, there was no problem. But if the
application put the cache files into a directory that was world
writable, it was possible for a rogue program to try to substitute a
file it already had open for the server's cache file, and it would
succeed some of the time. When it succeeded, it had access to the
content of the session ID cache, which enabled it to do various bad
things, such as masquerade as one of the remote clients whose session
was in the cache.
The above problem with the Unix version of SSL_InitSessionIDCachehas
been fixed, and rogue programs cannot succeed in substituting their own
files for the server's files any more.
3. Client no longer rejects SSL ServerKeyExchange when server's
certificate key size is 512 bits.
4. Server no longer crashes in SSL after required client authentication
fails.
5. A problem that was causing crashes when multiple threads
simultaneously requested client authentication on their respective
server sockets has been fixed.
6. The following functions now work with SSL sockets:
PR_Write
PR_TransmitFile
PR_AcceptRead
7. SSL now accepts client hellos that are too long.
8. A problem that produced bad results when multiple threads
simultaneously used the random number generator has been fixed.
KNOWN BUGS IN HCL 1.5.6:
1. A crash may occur when multiple processes attempt to share a server
session ID cache. Because of this bug, an application that handshakes
as a server is limited to conducting all SSL calls in a single process.
2. Removing a token does not invalidate the client-side session cache.
3. While a handshake is in progress on an SSL socket, it is not safe
for two threads to attempt simultaneous read and write calls (PR_Recv
and PR_Send) on that socket. Workaround: ensure that only one thread
uses an SSL socket at a time.
We expect the above 3 bugs will be fixed in a forthcoming release.
SSL v2 issues in HCL 1.5.x:
1. SSL_RedoHandshake only works on SSL3 connections, not SSL2. The
SSL2 protocol does not permit additional handshakes on the connection
after the first one is done. Ergo, if a client certificate is to be
requested in an SSL2 connection, it must be requested on the initial
handshake.
2. HCL's SSL2 ignores the setting of the SSL_REQUIRE_CERTIFICATE
enable. When SSL_REQUEST_CERTIFICATE is enabled, SSL2 behaves as if
SSL_REQUIRE_CERTIFICATE is also enabled, regardless of the actual
setting of the SSL_REQUIRE_CERTIFICATE enable.
3. HCL's SSL2 server code doesn't call the bad cert handler callback
when the authCert callback returns an error. The ssl2 client code DOES
use the badcerthandler callback, but the ssl2 server code does not.
This means that if the server's authCert callback returns SECFailure,
rejecting the client cert received on an SSL2 connection, the
badCerthandler cannot override it.
4. HCL's SSL2 server code never caches the client cert. Consequently,
if an SSL2 server is configured to request the client cert, it must ask
the client for the client cert on every connection, not just on the
first connection in the "session". The SSL2 client must provide the
cert in every SSL2 connection that requests it. If the user has set the
"ask me every time" option for his certs, he will get prompted a LOT.
Item 1 above is not a bug. That's the way ssl2 is defined. Items 2-4
are limitations of our implementation. TomW says client auth in ssl2
was never officially supported (although it is mostly implemented).
Recommended workaround for SSL2 issues:
a) Don't expect client auth to work for SSL2 users.
b) Don't request client auth in the initial handshake. Request it in a
subsequent handshake (e.g. set SSL_REQUEST_CERTIFICATE and call
SSL_RedoHandshake() on SSL3 connections. This will completely avoid
client auth problems with SSL2.
For some time now, we've been suggesting that servers request client
auth on a second handshake, not the first handshake in the connection.
If they do that, then they will never get client certs from ssl2
clients. That is a good thing.
|