|
Message-Id: <200902261927.07229.aj@dungeon.inka.de> Date: Thu, 26 Feb 2009 19:27:06 +0100 From: Andreas Jellinghaus <aj@...geon.inka.de> To: oss-security@...ts.openwall.com Subject: OpenSC Security Advisory OpenSC today released a new version OpenSC 0.11.7 with these changes: * hide_empty_slots now on by default. * pinpad supported fixed for Mac OS X. * ruToken driver was updated. * openct virtual readers reduced to 2 by default. * link with iconv on Mac OS X for i18n support. * Security issue: Fix private data support. * Enable lock_login by default. * Disable allow_soft_keygen by default. Regards, Andreas Jellinghaus aj@...nsc-project.org Security update for OpenSC ========================== OpenSC Security Advisory [26-Feb-2009] CVE-2009-0368 ---------------------------------------------------- OpenSC stores private data without proper access restrictions. User "b.badrignans" reported this security problem on December 4th, 2008. In June 2007 support form private data objects was added to OpenSC. Only later a severe security bug was found out: while the OpenSC PKCS#11 implementation requires PIN verification to access the data, low level APDU commands or debugging tools like opensc-explorer or opensc-tool can access the private data without any authentication. This was fixed in OpenSC 0.11.7. RSA keys are not affected by this security problem. National eID cards and other cards initialised by other software are not affected by this problem. Only blank cards initialised with OpenSC are affected by this problem. It is not known if the problem is limited to some drivers, but we believe all drivers are affected. We could only test very few cards, but all of them had the problem, and the fix worked on all of them. All other cards are completely untested for either. This fix only improves creating new private data objects. Cards already initialised with such private data objects need to be modified to repair the access control conditions on such cards. One way to do that is to erase the card and re-initialise it, but doing this you would loose all content on the card, including RSA private keys. An alternative is to download the private data object(s) to your PC, delete them on the card, and store them once more on the card with the new, fixed version of OpenSC. This procedure has been tested with success on some cards, but no guaranty of any kind can be given. WARNING! Only follow this procedure if you know what you are doing. This could damage your card or erase all data on it! No warranty of any kind, you are on your own! WARNING! Testing your card: To create a file with a secret: echo "This is my secret data" > secret-file To initialise a blank card: pkcs15-init --create-pkcs15 --use-default-transport-keys \ --profile pkcs15+onepin --pin 123456 --puk 78907890 To write a private data object to the card: pkcs11-tool --label "my secret" --type data --write-object secret-file \ --private --login --pin 123456 To see all objects on the card: pkcs15-tool --dump This will list the data object, including the path it is stored, e.g.: "Path: 3f0050154701" To access such an object with low level tools: opensc-explorer cd 5015 get 4701 New versions of OpenSC will not allow this to succeed. For older versions the file name is usually 4601 for the first data object (private or not), and it is never protected, thus you can download the content with the get command. After testing you can erase a card with this command: pkcs15-init --erase-card --use-default-transport-keys WARNING! Only follow this procedure if you know what you are doing. This could damage your card or erase all data on it! No warranty of any kind, you are on your own! WARNING! Other security changes ---------------------- When OpenSC was created some cards could already create RSA keys on card, but other popular cards could only execute signing and decryption on card, but not create RSA key. The OpenSC code was written to use the hardware RSA key creation, if the card supports it, and - to make things easier for everyone - to create an RSA key in software, if the card does not support it. This could always be turned off with the "soft_keygen_allowed" in the config file. We have not heard of any user of such old cards without the capability to create RSA keys for a long time. Thus we changed the default of the soft_keygen_allowed option to false in OpenSC 0.11.7. Users of Siemens CardOS based smart cards will still need to turn this option on, if they want to use the "split-key" option to work around limitations in the CardOS card operating system (not being able to have RSA keys valid for both signing and decryption). OpenSC used to lock access to a smart card, when applications used the Login function with OpenSC. This option was disabled by default a while ago, because popular applications like Firefox and Thunderbird call the Login function when they are started (and OpenSC is configured as PKCS#11 module). If locking is enabled, you cannot run both applications at the same time, as the first gets the lock, and the second is stuck till the first application is quit. Also you can't use any other application at the same time, for example you can't use a screensaver with smart card authentication. Still we revised this default setting in OpenSC 0.11.7 and enabled lock_login by default. This will harm all users of several concurrent applications trying to use smart cards. But without locking we cannot rule out the possibility of a security issue in some race scenario. Also some applications seem to not work properly without lock_login enabled. Security fixes available ------------------------ http://www.opensc-project.org/files/opensc/opensc-0.11.7.tar.gz md5sum opensc-0.11.7.tar.gz 419e9be372c2f9bbb3ce9704c929d5ec opensc-0.11.7.tar.gz sha1sum opensc-0.11.7.tar.gz f91f66bb350d94c07fb01e427c936ce56f1c7d0d opensc-0.11.7.tar.gz sha256sum opensc-0.11.7.tar.gz 6dab273cbdba8e92c59207715199f48f4f9e541e6d873561e30154bd40c4011d In our subversion repository the private data fix is available as revision 3605, the new default settings are commited in revision 3604. Note however that we can support only released versions of OpenSC and current trunk. If you have a problem with an older version or patched version, you need to try the latest release. State of OpenSC =============== I believe that security software should be simple, well designed, well writen and actively maintained by a dedicated team. I'm sad to inform you that OpenSC is a rather large and complex software, the design shows that is clearly grown over the years. Most developers stopped being interested in smart cards many years ago, only few are left, of those nearly noone actually uses smart cards day to day. Time for improving OpenSC is scarce if it exists at all, and not a single developer knows the OpenSC core code in detail. OpenSC is working fine for some applications, like using it with openssh for smart card authenticated ssh login, or for console login with a pam module, or testing and learning about smart cards. But in general you need to judge yourself if the state of OpenSC is compatible with your requirements. The projects needs more developers and a new project maintainer. If you are interested in spending your free time to work with smart cards, we would like to welcome you to the project, and will try to help you and support your work. Binary distributions ==================== Our Mac OS X Installer Package "SCA" is well maintained and a new version including this new version will be available soon. Al versions up to and including 0.2.4.1 are vulnerable, but the new experimental 0.2.5-pre1 and the final 0.2.5 will include the fixed OpenSC 0.11.7. Our old Windows Installer Package "SCB" is also affected by this vulnerability: All versions are affected. We don't have any windows developer left, so no one can update this package. New windows binaries build using mingw are available in the "Build" project. Version 001 and 002 are both vulnerable, a new version 003 with OpenSC 0.11.7 will be soon available. Contact and Feedback ==================== If you have questions or feedback, please do not hesitate to contact us on our mailing lists "opensc-devel" or "opensc-user". You need to subscribe to these lists before posting, as we are getting a lot of spam each day and do not have the resource to sort out valid email. Regards, Andreas Jellinghaus aj@...nsc-project.org
Powered by blists - more mailing lists
Please check out the Open Source Software Security Wiki, which is counterpart to this mailing list.
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.