nCipher Security Advisory No. 8 - Versions 1.3.12, 1.5.18, and 1.6.18 of the payShield SPP library may return Status_OK regardless of what the real reply status should be.
5c8eacd2a6a36cd561e7674a8b96098272d42a7be2267074d5251cc298560d9b
nCipher Security Advisory No. 8
payShield library may verify bad requests
-----------------------------------------
SUMMARY
=======
When a command is issued to the payShield SPP library it may return
Status_OK regardless of what the real reply status was.
ISSUE DESCRIPTION
=================
1. Problem
----------
When a command is sent through the SPP library the library may query
its HSMs to ensure they are responsive and working properly. When this
check is triggered and successful the response to the original command
will always be Status_OK, regardless of what status code the HSM returned.
Although an error message will be printed to the payShield log this error
is not communicated to the calling function.
During constant use this event will occur once every three minutes,
regardless of the number of threads or HSMs employed.
2. Impact
---------
The issue is in the host-side library and applications only. Existing
payShield installations and keys are not compromised and may continue
to be used with the new software.
The issue does not reveal any information about secret keys or data, it
only leads to a risk of false-positive verifications.
If the command being processed when the modules query is triggered is
supposed to return a non-0 status code, this status will be lost.
For example, an invalid PIN verification attempt will result in
Status_VerifyFailed being returned from the HSM, but the library call
SPP_VerifyPVV() may return Status_OK, making it appear that the PIN was
valid. If an attacker had sole access to the payShield application and
were able to flood it with invalid requests then they would eventually
get an 'OK' response.
One way to detect this would be retrospective review of payShield error
logs.
3. Who Is *Not* Affected
------------------------
Customers not using payShield are unaffected.
Customers not using versions 1.3.12, 1.5.18 and 1.6.18 of the SPP library
are unaffected.
Also, customers who use payShield solely for 'none' and 'HMAC' key
establishment (ie those not using the SPP library for payments processing)
are not affected.
However, we still suggest that these customers update their software in
order to avoid potential future use of affected software.
4. Who May Be Affected
----------------------
Application developers linking against versions 1.3.12, 1.5.18 and 1.6.18
of the SPP library and their end-users will be affected. If your version
number is between 1.3.12 and 1.6.18 but does not appear in the list,
please contact nCipher support and quote your version number.
5. How To Tell If You Are Affected
----------------------------------
Run the ncversions utility on the development machine and look for
"emvspp devel". If this includes "1.3.12", "1.5.18" or "1.6.18" then you
are affected. If you do not have ncversions then look in the file
$NFAST_HOME/lib/versions/emvspp-devel-atv.txt
for this information
This version number can also be queried by calling the library functions
SPP_GetLibVersion() or SPP_PrintLibVersion().
Alternatively flood your application with bad verification requests (for
example modify the value of the pvv key vector in knownvectors.h, rebuild
the sppbenchmark example and run the pvv benchmark test) and watch for
Status_OK. If you are affected then 1 command in any 3 minute window will
return Status_OK. All others will return the appropriate error code.
REMEDY
======
1. Detection
------------
In existing applications linked against affected versions of the library
any erroneous 'OK' response can be detected through log auditing, this is
not a means of prevention. A normal failure report will print 2
consecutive messages:
<time> [Error] In <function>, SEEJob reply status not OK
(status VerifyFailed)
<time> [Error] In SPP_<function>, Sending SEEJob failed
(status VerifyFailed)
But an affected application will only report:
<time> [Error] In <function>, SEEJob reply status not OK
(status VerifyFailed)
Higher levels of reporting will also print 'OK' [Info] messages after the
[Error].
2. Work-around
--------------
There is a work-around to this problem, but it is more intrusive than
relinking with the new library. Since the issue only affects one call in
any three-minute period the work-around is to make each call into
the SPP library twice and check both error codes.
3. Recommended course of action
-------------------------------
Developer customers should update their software and re-link their
applications with the fixed library at the earliest opportunity.
This is more effective and less intrusive than the work-around.
End users should contact their application vendor for an updated
application.
SOFTWARE DISTRIBUTION AND REFERENCES
====================================
You can obtain copies of this advisory, and supporting documentation,
from the nCipher updates site:
http://www.ncipher.com/support/advisories/
We regret that due to export control regulations, we are unable to
make the software updates themselves available on the web site.
Contact nCipher Support for details on obtaining the updated software.
Updated software is available now for the following platforms:
Windows, Linux, Solaris
New releases will soon be available on the following platforms (for which
affected software was not shipped):
AIX5.1, HPUX11, Linux(nethsm)
Please inform nCipher Support of your current software version so that
you may receive the most appropriate upgrade.
The new software does not affect FIPS validation.
NCIPHER SUPPORT
===============
nCipher customers who require updated software, support or further
information regarding this problem should contact support@ncipher.com.
nCipher support can also be reached by telephone:
Customers in the USA or Canada: +1 781 994 4008
Customers in all other countries: +44 1223 723666
Customers in all other countries outside of the USA and Canada can
call the USA number in the event that they receive the advisory
outside of UK support hours (09:00 - 17:30).
Further Information
===================
General information about nCipher products:
http://www.ncipher.com/
nCipher Developer's Guide and nCipher Developer's Reference
http://www.ncipher.com/documentation.html
If you would like to receive future security advisories from nCipher,
please subscribe to the low volume nCipher security-announce mailing
list. To do this, send a mail with the single word `subscribe' in
the message body to: security-announce-request@ncipher.com.
(c) nCipher Corporation Ltd. 2003
All trademarks acknowledged. nCipher and payShield are trade
marks of nCipher Corporation Limited.
$Id: advisory8.txt,v 1.5 2003/12/12 11:51:12 jgeater Exp $