Title: libxcrypt dependency is not FIPS compliant · Issue #92238 · python/cpython · GitHub
Open Graph Title: libxcrypt dependency is not FIPS compliant · Issue #92238 · python/cpython
X Title: libxcrypt dependency is not FIPS compliant · Issue #92238 · python/cpython
Description: Feature or enhancement Python v3.9 introduced a dependency on libxcrypt, which does not appear to be FIPS compliant. This may raise compliance questions for those who have depended on Python using a FIPS-validated OpenSSL in the past. As...
Open Graph Description: Feature or enhancement Python v3.9 introduced a dependency on libxcrypt, which does not appear to be FIPS compliant. This may raise compliance questions for those who have depended on Python using ...
X Description: Feature or enhancement Python v3.9 introduced a dependency on libxcrypt, which does not appear to be FIPS compliant. This may raise compliance questions for those who have depended on Python using ...
Opengraph URL: https://github.com/python/cpython/issues/92238
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"libxcrypt dependency is not FIPS compliant","articleBody":"**Feature or enhancement**\r\n\r\nPython v3.9 introduced a dependency on [libxcrypt](https://github.com/besser82/libxcrypt), which does not appear to be FIPS compliant. This may raise compliance questions for those who have depended on Python using a FIPS-validated OpenSSL in the past.\r\n\r\nAs mentioned in https://github.com/besser82/libxcrypt/blob/564fa1d92379b0ccad7e7813e1c3b0eb3eee7294/README.md#compatibility-notes:\r\n\r\n\u003e glibc’s libcrypt could optionally be configured to use Mozilla’s NSS library’s implementations of the cryptographic primitives md5crypt, sha256crypt, and sha512crypt. This option is not available in libxcrypt, because we do not currently believe it is a desirable option. The stated rationale for the option was to source all cryptographic primitives from a library that has undergone FIPS certification, but we believe FIPS certification would need to cover all of libxcrypt itself to have any meaningful value. Moreover, the strongest hashing methods, yescrypt and bcrypt, use cryptographic primitives that are not available from NSS, so the certification would not cover any part of what will hopefully be the most used code paths.\r\n\r\nBelow is the output from Red Hat Linux 8 in FIPS mode. Note the introduction of `libcrypt.so.1` (which is provided by the `libxcrypt` package):\r\n\r\n```\r\n[stanhu@stanhu-fips1 lib64]$ ldd /usr/bin/python3.6\r\n\tlinux-vdso.so.1 (0x00007ffd75f8a000)\r\n\tlibcrypto.so.1.1 =\u003e /lib64/libcrypto.so.1.1 (0x00007f5c731a6000)\r\n\tlibpython3.6m.so.1.0 =\u003e /lib64/libpython3.6m.so.1.0 (0x00007f5c72c63000)\r\n\tlibpthread.so.0 =\u003e /lib64/libpthread.so.0 (0x00007f5c72a43000)\r\n\tlibdl.so.2 =\u003e /lib64/libdl.so.2 (0x00007f5c7283f000)\r\n\tlibutil.so.1 =\u003e /lib64/libutil.so.1 (0x00007f5c7263b000)\r\n\tlibm.so.6 =\u003e /lib64/libm.so.6 (0x00007f5c722b9000)\r\n\tlibc.so.6 =\u003e /lib64/libc.so.6 (0x00007f5c71ef4000)\r\n\tlibz.so.1 =\u003e /lib64/libz.so.1 (0x00007f5c71cdc000)\r\n\t/lib64/ld-linux-x86-64.so.2 (0x00007f5c73892000)\r\n[stanhu@stanhu-fips1 lib64]$ ldd /usr/bin/python3.9\r\n\tlinux-vdso.so.1 (0x00007ffe839f5000)\r\n\tlibcrypto.so.1.1 =\u003e /lib64/libcrypto.so.1.1 (0x00007fb67781d000)\r\n\tlibpython3.9.so.1.0 =\u003e /lib64/libpython3.9.so.1.0 (0x00007fb677252000)\r\n\tlibcrypt.so.1 =\u003e /lib64/libcrypt.so.1 (0x00007fb677029000)\r\n\tlibpthread.so.0 =\u003e /lib64/libpthread.so.0 (0x00007fb676e09000)\r\n\tlibdl.so.2 =\u003e /lib64/libdl.so.2 (0x00007fb676c05000)\r\n\tlibutil.so.1 =\u003e /lib64/libutil.so.1 (0x00007fb676a01000)\r\n\tlibm.so.6 =\u003e /lib64/libm.so.6 (0x00007fb67667f000)\r\n\tlibc.so.6 =\u003e /lib64/libc.so.6 (0x00007fb6762ba000)\r\n\tlibz.so.1 =\u003e /lib64/libz.so.1 (0x00007fb6760a2000)\r\n\t/lib64/ld-linux-x86-64.so.2 (0x00007fb677f08000)\r\n```\r\n\r\nWhile Python v3.9 still works, our internal audit flagged `libxcrypt` as a possible issue.\r\n\r\n**Pitch**\r\n\r\nSince Python 3.9 may not be FIPS-compliant, it cannot technically be used on US Government systems that requires this hardening.\r\n\r\n**Previous discussion**\r\n\r\nThis dependency may have been introduced in November 2021 via https://github.com/python/cpython/pull/29725.\r\n\r\nYears ago someone raised an issue about using a FIPS-validated kernel user space API with `libxcrypt`, but this discussion seems to have gone dormant: https://github.com/besser82/libxcrypt/issues/1\r\n","author":{"url":"https://github.com/stanhu","@type":"Person","name":"stanhu"},"datePublished":"2022-05-03T16:47:46.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":2},"url":"https://github.com/92238/cpython/issues/92238"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:e303824e-670b-059b-0bfc-bf4476b8a31a |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | 9A88:378262:31B4F5:4191C7:696ADCDC |
| html-safe-nonce | 47b285e67f5fc6de7fc9e074cdb8b63dc3037c98b7e4a4087ad6d61ded220006 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI5QTg4OjM3ODI2MjozMUI0RjU6NDE5MUM3OjY5NkFEQ0RDIiwidmlzaXRvcl9pZCI6IjE0MjkzNzQ5NjE5NDI0NTM0NjgiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ== |
| visitor-hmac | 87aefdec30807d01837b9d31fabf6096564c09d1446034276fb032fa298f237d |
| hovercard-subject-tag | issue:1224347457 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/python/cpython/92238/issue_layout |
| twitter:image | https://opengraph.githubassets.com/9a0c776a07700329208e82cae5efbcf2fc97c992d42172c4fd79ce38d6b17cc4/python/cpython/issues/92238 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/9a0c776a07700329208e82cae5efbcf2fc97c992d42172c4fd79ce38d6b17cc4/python/cpython/issues/92238 |
| og:image:alt | Feature or enhancement Python v3.9 introduced a dependency on libxcrypt, which does not appear to be FIPS compliant. This may raise compliance questions for those who have depended on Python using ... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | stanhu |
| hostname | github.com |
| expected-hostname | github.com |
| None | 5f99f7c1d70f01da5b93e5ca90303359738944d8ab470e396496262c66e60b8d |
| turbo-cache-control | no-preview |
| go-import | github.com/python/cpython git https://github.com/python/cpython.git |
| octolytics-dimension-user_id | 1525981 |
| octolytics-dimension-user_login | python |
| octolytics-dimension-repository_id | 81598961 |
| octolytics-dimension-repository_nwo | python/cpython |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 81598961 |
| octolytics-dimension-repository_network_root_nwo | python/cpython |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 524a93f2c1f36522a3b4be4c110467ee4172245d |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width