PEP 466: narrow scope, add legacy SSL branch
This commit is contained in:
parent
46a1a3cdee
commit
7d72c4cea2
246
pep-0466.txt
246
pep-0466.txt
|
@ -33,17 +33,24 @@ internet. In particular, the exception will apply to:
|
||||||
* the ``ssl`` module
|
* the ``ssl`` module
|
||||||
* the ``hashlib`` module
|
* the ``hashlib`` module
|
||||||
* the ``hmac`` module
|
* the ``hmac`` module
|
||||||
* the ``sha`` module (Python 2 only)
|
* the components of the ``random`` and ``os`` modules that the above
|
||||||
* the components of other networking modules that make use of these modules
|
modules rely on for cryptographic randomness
|
||||||
* the components of the ``random`` and ``os`` modules that are relevant to
|
* the version of OpenSSL bundled with the binary installers for Windows
|
||||||
cryptographic applications
|
and Mac OS X
|
||||||
* the version of OpenSSL bundled with the binary installers
|
|
||||||
|
|
||||||
Proposed backports for these modules will still need to undergo normal
|
Changes to these modules will still need to undergo normal backwards
|
||||||
backwards compatibility assessments, but new features will be permitted where
|
compatibility assessments, but otherwise they will be kept entirely aligned
|
||||||
appropriate, making it easier to implement secure networked software in
|
with the latest feature release of their Python 3 counterparts. This is
|
||||||
Python, even for software that needs to remain compatible with older feature
|
designed to make it easier to implement secure networked software in
|
||||||
releases of Python.
|
Python, even for software that currently needs to remain compatible with
|
||||||
|
the Python 2 series (which includes a lot of network infrastructure
|
||||||
|
software).
|
||||||
|
|
||||||
|
The development branches will be arranged in such a way that even though
|
||||||
|
any further Python 2.7 releases published by the core development team
|
||||||
|
provide updated network security infrastructure, it will remain possible
|
||||||
|
for downstream redistributors to publish "Python 2.7 with legacy SSL
|
||||||
|
infrastructure" if they choose to do so.
|
||||||
|
|
||||||
While this PEP does not make any changes to the core development team's
|
While this PEP does not make any changes to the core development team's
|
||||||
handling of security-fix-only branches that are no longer in active
|
handling of security-fix-only branches that are no longer in active
|
||||||
|
@ -66,7 +73,6 @@ their counterparts in the latest feature release of Python 3:
|
||||||
* the ``ssl`` module
|
* the ``ssl`` module
|
||||||
* the ``hashlib`` module
|
* the ``hashlib`` module
|
||||||
* the ``hmac`` module
|
* the ``hmac`` module
|
||||||
* the ``sha`` module (Python 2 only)
|
|
||||||
|
|
||||||
This exemption applies to *all* proposals to backport backwards compatible
|
This exemption applies to *all* proposals to backport backwards compatible
|
||||||
changes in these modules to Python 2.7 maintenance releases. This choice is
|
changes in these modules to Python 2.7 maintenance releases. This choice is
|
||||||
|
@ -80,21 +86,22 @@ As part of this policy, permission is also granted to upgrade to newer
|
||||||
feature releases of OpenSSL when preparing the binary installers
|
feature releases of OpenSSL when preparing the binary installers
|
||||||
for new maintenance releases of CPython.
|
for new maintenance releases of CPython.
|
||||||
|
|
||||||
|
Note that the ``sha`` and ``md5`` modules are not covered by this policy,
|
||||||
|
but have been deprecated in favour of ``hashlib`` since Python 2.5 and have
|
||||||
|
been removed entirely in the Python 3 series.
|
||||||
|
|
||||||
In addition to the above blanket exemption, a conditional exemption is
|
In addition to the above blanket exemption, a conditional exemption is
|
||||||
granted for these modules that may include some network security related
|
granted for these modules that may include some network security related
|
||||||
features:
|
features:
|
||||||
|
|
||||||
* the ``os`` module (specifically ``os.urandom``)
|
* the ``os`` module (specifically ``os.urandom``)
|
||||||
* the ``random`` module
|
* the ``random`` module
|
||||||
* networking related modules that depend on one or more of the network
|
|
||||||
security related modules listed above
|
|
||||||
|
|
||||||
This more limited exemption for these modules requires that the *specific*
|
This more limited exemption for these modules requires that the *specific*
|
||||||
enhancement being proposed for backporting needs to be justified as being
|
enhancement being proposed for backporting needs to be justified as being
|
||||||
network security related. If the enhancement under discussion is designed
|
network security related. This is generally restricted to cases where the
|
||||||
to take advantage of a new feature in one of the network security related
|
feature in question is needed by an update to one of the modules covered
|
||||||
modules, then that will be taken as implying that the enhancement is
|
by the blanket exemption.
|
||||||
security related.
|
|
||||||
|
|
||||||
|
|
||||||
Backwards Compatibility Considerations
|
Backwards Compatibility Considerations
|
||||||
|
@ -117,8 +124,8 @@ the Python version.
|
||||||
It is then up to library and framework code to provide an appropriate warning
|
It is then up to library and framework code to provide an appropriate warning
|
||||||
and fallback behaviour if a desired feature is found to be missing. While
|
and fallback behaviour if a desired feature is found to be missing. While
|
||||||
some especially security sensitive software MAY fail outright if a desired
|
some especially security sensitive software MAY fail outright if a desired
|
||||||
security feature is unavailable, most software SHOULD instead continue
|
security feature is unavailable, most software SHOULD instead emit a warning
|
||||||
operating using a slightly degraded security configuration.
|
and continue operating using a slightly degraded security configuration.
|
||||||
|
|
||||||
Affected APIs SHOULD be designed to allow library and application code to
|
Affected APIs SHOULD be designed to allow library and application code to
|
||||||
perform the following actions after detecting the presence of a relevant
|
perform the following actions after detecting the presence of a relevant
|
||||||
|
@ -132,13 +139,15 @@ network security related feature:
|
||||||
Python version checks to determine the Python feature release, but MUST
|
Python version checks to determine the Python feature release, but MUST
|
||||||
NOT require checking for a specific maintenance release)
|
NOT require checking for a specific maintenance release)
|
||||||
|
|
||||||
Security related changes to other modules (such as data format processing
|
Security related changes to other modules (such as higher level networking
|
||||||
libraries) will continue to be made available as backports and new modules
|
libraries and data format processing libraries) will continue to be made
|
||||||
on the Python Package Index, as independent distribution remains the
|
available as backports and new modules on the Python Package Index, as
|
||||||
preferred approach to handling software that needs to evolve faster than
|
independent distribution remains the preferred approach to handling
|
||||||
the standard library. Refer to the `Motivation and Rationale`_ section for
|
software that must continue to evolve to handle changing development
|
||||||
a review of the characteristics that make the secure networking
|
requirements independently of the Python 2 standard library. Refer to
|
||||||
infrastructure worthy of special consideration.
|
the `Motivation and Rationale`_ section for a review of the characteristics
|
||||||
|
that make the secure networking infrastructure worthy of special
|
||||||
|
consideration.
|
||||||
|
|
||||||
|
|
||||||
Other Considerations
|
Other Considerations
|
||||||
|
@ -151,23 +160,24 @@ This policy does NOT represent a commitment by volunteer contributors to
|
||||||
actually backport network security related changes from the Python 3 series
|
actually backport network security related changes from the Python 3 series
|
||||||
to the Python 2 series. Rather, it is intended to send a clear signal to
|
to the Python 2 series. Rather, it is intended to send a clear signal to
|
||||||
potential corporate contributors that the core development team are willing
|
potential corporate contributors that the core development team are willing
|
||||||
to review and merge corporate contributions that put this policy into
|
to accept offers of corporate assistance in putting this policy into
|
||||||
effect.
|
effect and handling the resulting increase in the Python 2 maintenance
|
||||||
|
load.
|
||||||
|
|
||||||
Backporting security related fixes and enhancements to earlier versions is
|
Backporting security related fixes and enhancements to earlier versions is
|
||||||
a common service for commercial redistributors to offer to their customers.
|
a common service for commercial redistributors to offer to their customers.
|
||||||
This policy represents an explicit invitation to contribute some of those
|
This policy represents an explicit invitation to contribute some of those
|
||||||
changes back to the upstream community in cases where they are likely to
|
changes back to the upstream community in cases where they are likely to
|
||||||
have a broad impact that helps improve the security of the internet as a
|
have a broad impact that helps improve the security of the internet as a
|
||||||
whole.
|
whole, rather than sitting back and waiting for unpaid volunteers to do it
|
||||||
|
for them.
|
||||||
|
|
||||||
|
|
||||||
Documentation
|
Documentation
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
All modules that take advantage of this policy to backport network
|
All modules covered by this policy MUST include a "Security Considerations"
|
||||||
security related enhancements to earlier Python versions MUST include
|
section in their documentation.
|
||||||
a "Security Considerations" section in their documentation.
|
|
||||||
|
|
||||||
In addition to any other module specific contents, this section MUST
|
In addition to any other module specific contents, this section MUST
|
||||||
enumerate key security enhancements and fixes (with CVE identifiers where
|
enumerate key security enhancements and fixes (with CVE identifiers where
|
||||||
|
@ -183,23 +193,49 @@ releases - those will continue to be source only releases that
|
||||||
include only critical security fixes.
|
include only critical security fixes.
|
||||||
|
|
||||||
However, the recommendations for library and application developers are
|
However, the recommendations for library and application developers are
|
||||||
deliberately designed to accommodate commercial redistributors applying
|
deliberately designed to accommodate commercial redistributors that choose
|
||||||
this policy to any Python release series that is either in security
|
to apply this policy to additional Python release series that are either in
|
||||||
fix only mode, or has been declared "end of life" by the core development
|
security fix only mode, or have been declared "end of life" by the core
|
||||||
team.
|
development team.
|
||||||
|
|
||||||
Whether or not redistributors choose to exercise that option will be up
|
Whether or not redistributors choose to exercise that option will be up
|
||||||
to the redistributor.
|
to the individual redistributor.
|
||||||
|
|
||||||
|
|
||||||
Integration testing
|
Integration testing
|
||||||
-------------------
|
-------------------
|
||||||
|
|
||||||
Third party integration testing services would likely need to start
|
Third party integration testing services should offer users the ability
|
||||||
offering users a choice of multiple Python 2.7.x versions to test against,
|
to test against both the latest Python 2.7 maintenance release and the
|
||||||
to ensure that the application is correctly degrading gracefully if it
|
latest "Python 2.7 with legacy SSL infrastructure" release, to ensure that
|
||||||
attempts to use newer networking features on maintenance releases that
|
libraries, frameworks and applications handle the legacy security
|
||||||
are too old to provide them.
|
infrastructure correctly (either failing or degrading gracefully, depending
|
||||||
|
on the security sensitivity of the software).
|
||||||
|
|
||||||
|
|
||||||
|
Handling lower security environments with low risk tolerance
|
||||||
|
------------------------------------------------------------
|
||||||
|
|
||||||
|
For better or for worse (mostly worse), there are some environments where
|
||||||
|
the risk of latent security defects is more tolerated than the risk of
|
||||||
|
regressions in maintenance releases. This policy largely excludes these
|
||||||
|
environments from consideration where the modules covered by the exemption
|
||||||
|
are concerned.
|
||||||
|
|
||||||
|
However, one concession is made for the benefit of such environments: while
|
||||||
|
the main ``2.7`` branch in Mercurial will include the updated network
|
||||||
|
security infrastructure, the development process will be updated to include
|
||||||
|
a ``2.7-legacy-ssl`` branch with the more limited feature set of the
|
||||||
|
original 2.7 network security infrastructure, allowing downstream
|
||||||
|
redistributors to continue to provide Python 2.7 with the legacy SSL
|
||||||
|
infrastructure if they choose to do so. This branch will be tested
|
||||||
|
on the CPython continuous integration infrastructure, but no releases will
|
||||||
|
be made from it by the core development team.
|
||||||
|
|
||||||
|
As noted above, corporate redistributors and users are expected to provide
|
||||||
|
the additional development effort needed to make this practical. It is not
|
||||||
|
acceptable to expect volunteer contributors to resolve a problem created
|
||||||
|
largely by conservative corporate development practices.
|
||||||
|
|
||||||
|
|
||||||
Evolution of this Policy
|
Evolution of this Policy
|
||||||
|
@ -212,8 +248,9 @@ in Python and the system that application is running on. Thus the focus on
|
||||||
network security protocols and related cryptographic infrastructure - Python
|
network security protocols and related cryptographic infrastructure - Python
|
||||||
is a popular choice for the development of web services and clients, and
|
is a popular choice for the development of web services and clients, and
|
||||||
thus the capabilities of widely used Python versions have implications for
|
thus the capabilities of widely used Python versions have implications for
|
||||||
the security design of other services that may be using newer versions of
|
the security design of other services that may themselves be using newer
|
||||||
Python or other development languages.
|
versions of Python or other development languages, but need to interoperate
|
||||||
|
with clients or servers written using older versions of Python.
|
||||||
|
|
||||||
The intent behind this requirement is to minimise any impact that the
|
The intent behind this requirement is to minimise any impact that the
|
||||||
introduction of this policy may have on the stability and compatibility of
|
introduction of this policy may have on the stability and compatibility of
|
||||||
|
@ -282,7 +319,7 @@ on security sensitive comparisons than the Python 3 series, as it lacks a
|
||||||
standard library equivalent to the timing attack resistant
|
standard library equivalent to the timing attack resistant
|
||||||
``hmac.compare_digest()`` function. While appropriate secure comparison
|
``hmac.compare_digest()`` function. While appropriate secure comparison
|
||||||
functions can be implemented in third party extensions, may users don't
|
functions can be implemented in third party extensions, may users don't
|
||||||
even consider the problem and use ordinary equality comparisons instead
|
even consider the issue and use ordinary equality comparisons instead
|
||||||
- while a standard library solution doesn't automatically fix that problem,
|
- while a standard library solution doesn't automatically fix that problem,
|
||||||
it *does* make the barrier to resolution much lower once the problem is
|
it *does* make the barrier to resolution much lower once the problem is
|
||||||
pointed out.
|
pointed out.
|
||||||
|
@ -307,37 +344,57 @@ Alternative: advise developers of networked software to migrate to Python 3
|
||||||
This alternative represents the status quo. Unfortunately, it has proven
|
This alternative represents the status quo. Unfortunately, it has proven
|
||||||
to be unworkable in practice, as the backwards compatibility implications
|
to be unworkable in practice, as the backwards compatibility implications
|
||||||
mean that this is a non-trivial migration process for large applications
|
mean that this is a non-trivial migration process for large applications
|
||||||
and integration projects.
|
and integration projects. While the tools for migration have evolved to
|
||||||
|
a point where it is possible to migrate even large applications
|
||||||
|
opportunistically and incrementally (rather than all at once) by updating
|
||||||
|
code to run in the large common subset of Python 2 and Python 3, using the
|
||||||
|
most recent technology often isn't a priority in commercial environments.
|
||||||
|
|
||||||
Now that we're fully aware of the impact the limitations in Python 2 may be
|
Previously, this was considered an acceptable harm, as while it was an
|
||||||
having on the evolution of internet security standards, I no longer believe
|
unfortunate problem for the affected developers to have to face, it was
|
||||||
that it is reasonable to expect platform and application developers to
|
seen as an issue between them and their management chain to make the case
|
||||||
resolve all of the latent defects in an application's Unicode correctness
|
for infrastructure modernisation, and this case would become naturally
|
||||||
solely in order to gain access to the network security enhancements
|
more compelling as the Python 3 series evolved.
|
||||||
available in Python 3.
|
|
||||||
|
|
||||||
While (as far as I am aware) Ubuntu has successfully switched to Python 3.4
|
However, now that we're fully aware of the impact the limitations of the
|
||||||
as its main Python interpreter for its 14.04 LTS release, Fedora still
|
Python 2 standard library may be having on the evolution of internet
|
||||||
has a lot of work to do to migrate, and it will take a non-trivial amount
|
security standards, I no longer believe that it is reasonable to expect
|
||||||
of time to migrate the relevant infrastructure components. While Red Hat
|
platform and application developers to resolve all of the latent defects
|
||||||
are also actively working to make it easier for users to use more recent
|
in an application's Unicode correctness solely in order to gain access to
|
||||||
versions of Python on our stable platforms, it's going to take time for
|
the network security enhancements already available in Python 3.
|
||||||
those efforts to start having an impact on end users' choice of version,
|
|
||||||
and those changes won't affect the core tools regardless.
|
While Ubuntu (and to some extent Debian as well) are committed to porting all
|
||||||
|
default system services and scripts to Python 3, and to removing Python 2
|
||||||
|
from its default distribution images (but not from its archives), this is
|
||||||
|
a mammoth task and won't be completed for the Ubuntu 14.04 LTS release
|
||||||
|
(at least for the desktop image - it may be achieved for the mobile and
|
||||||
|
server images).
|
||||||
|
|
||||||
|
Fedora has even more work to do to migrate, and it will take a non-trivial
|
||||||
|
amount of time to migrate the relevant infrastructure components. While
|
||||||
|
Red Hat are also actively working to make it easier for users to use more
|
||||||
|
recent versions of Python on our stable platforms, it's going to take time
|
||||||
|
for those efforts to start having an impact on end users' choice of version,
|
||||||
|
and any such changes also don't benefit the core platform infrastructure
|
||||||
|
that runs in the integrated system Python by necessity.
|
||||||
|
|
||||||
The OpenStack migration to Python 3 is also still in its infancy, and even
|
The OpenStack migration to Python 3 is also still in its infancy, and even
|
||||||
though that's a project with an extensive and relatively robust automated
|
though that's a project with an extensive and relatively robust automated
|
||||||
test suite, it's large enough that it is going to take quite some time
|
test suite, it's still large enough that it is going to take quite some time
|
||||||
to migrate.
|
to migrate.
|
||||||
|
|
||||||
And that's just three of the highest profile open source projects that
|
And that's just three of the highest profile open source projects that
|
||||||
make heavy use of Python. Given the likely existence of large amounts of
|
make heavy use of Python. Given the likely existence of large amounts of
|
||||||
legacy code that lacks the kind of automated regression test suite needed
|
legacy code that lacks the kind of automated regression test suite needed
|
||||||
to help support a migration from Python 2 to Python 3. The key point of
|
to help support a migration from Python 2 to Python 3, there are likely to
|
||||||
this PEP is that those situations affect more people than just the
|
be many cases where reimplementation (perhaps even in Python 3) proves
|
||||||
developers and users of the affected application: their existence becomes
|
easier than migration. The key point of this PEP is that those situations
|
||||||
something that developers of secure networked services need to take into
|
affect more people than just the developers and users of the affected
|
||||||
account as part of their security design.
|
application: the existence of clients and servers with outdated network
|
||||||
|
security infrastructure becomes something that developers of secure
|
||||||
|
networked services need to take into account as part of their security
|
||||||
|
design, and that's a problem that inhibits the adoption of better security
|
||||||
|
standards.
|
||||||
|
|
||||||
As Terry Reedy noted, if we try to persist with the status quo, the likely
|
As Terry Reedy noted, if we try to persist with the status quo, the likely
|
||||||
outcome is that commercial redistributors will attempt to do something
|
outcome is that commercial redistributors will attempt to do something
|
||||||
|
@ -366,45 +423,36 @@ would likely just skip entirely.
|
||||||
|
|
||||||
Attempting to create a Python 2.8 release would also bring in suggestions
|
Attempting to create a Python 2.8 release would also bring in suggestions
|
||||||
to backport many additional features from Python 3 (such as ``tracemalloc``
|
to backport many additional features from Python 3 (such as ``tracemalloc``
|
||||||
and the improved coroutine support).
|
and the improved coroutine support), making the migration from Python 2.7
|
||||||
|
to this hypothetical 2.8 release even riskier and more disruptive.
|
||||||
|
|
||||||
This is not a recommended approach, as it would involve substantial
|
This is not a recommended approach, as it would involve substantial
|
||||||
additional work for a result that is actually less effective as a solution
|
additional work for a result that is actually less effective in achieving
|
||||||
to the original problem (the widespread use of the aging network security
|
the original aim (which is to eliminate the current widespread use of the
|
||||||
infrastructure in Python 2).
|
aging network security infrastructure in the Python 2 series).
|
||||||
|
|
||||||
|
|
||||||
Alternative: distribute the security enhancements via PyPI
|
Alternative: distribute the security enhancements via PyPI
|
||||||
----------------------------------------------------------
|
----------------------------------------------------------
|
||||||
|
|
||||||
While it initially appears to be an attractive and easier to manage
|
While this initially appears to be an attractive and easier to manage
|
||||||
approach, there are actually several significant problems with this
|
approach, it actually suffers from several significant problems.
|
||||||
idea.
|
|
||||||
|
|
||||||
Firstly, this PEP encompasses a non-trivial portion of the standard library.
|
Firstly, this is complex, low level, cross-platform code that integrates
|
||||||
It's not just the underlying SSL support, but also the libraries for other
|
|
||||||
network protocols like HTTP, FTP, IMAP, and POP3 that integrate with the
|
|
||||||
SSL infrastructure to provide secure links, and that's just the protocols
|
|
||||||
in the standard library. Even if an API compatible ``ssl2`` module was
|
|
||||||
made available, it would need to be imported and injected
|
|
||||||
into ``sys.modules`` as ``ssl`` before importing any other module that
|
|
||||||
needed it.
|
|
||||||
|
|
||||||
Secondly, this is complex, low level, cross-platform code that integrates
|
|
||||||
with the underlying operating system across a variety of POSIX platforms
|
with the underlying operating system across a variety of POSIX platforms
|
||||||
(including Mac OS X) and Windows. The CPython BuildBot fleet is already set
|
(including Mac OS X) and Windows. The CPython BuildBot fleet is already set
|
||||||
up to handle continuous integration in that context, but most of the
|
up to handle continuous integration in that context, but most of the
|
||||||
freely available continuous integration services just offer Linux, and
|
freely available continuous integration services just offer Linux, and
|
||||||
perhaps paid access to Windows. Those services work reasonably well for
|
perhaps paid access to Windows. Those services work reasonably well for
|
||||||
software that largely runs on the abstraction layers offered by Python and
|
software that largely runs on the abstraction layers offered by Python and
|
||||||
other dynamic languages, but won't suffice for the kind of code involved
|
other dynamic languages, as well as the more comprehensive abstraction
|
||||||
here.
|
offered by the JVM, but won't suffice for the kind of code involved here.
|
||||||
|
|
||||||
The OpenSSL dependency for the network security support also qualifies as
|
The OpenSSL dependency for the network security support also qualifies as
|
||||||
the kind of "complex binary dependency" that isn't yet handled well by the
|
the kind of "complex binary dependency" that isn't yet handled well by the
|
||||||
``pip`` based software distribution ecosystem. Relying on a binary
|
``pip`` based software distribution ecosystem. Relying on a third party
|
||||||
dependency also creates potential compatibility problems for ``pip`` when
|
binary dependency also creates potential compatibility problems for ``pip``
|
||||||
running on other interpreters like ``PyPy``.
|
when running on other interpreters like ``PyPy``.
|
||||||
|
|
||||||
Another practical problem with the idea is the fact that ``pip`` itself
|
Another practical problem with the idea is the fact that ``pip`` itself
|
||||||
relies on the ``ssl`` support in the standard library (with some additional
|
relies on the ``ssl`` support in the standard library (with some additional
|
||||||
|
@ -412,8 +460,7 @@ support from a bundled copy of ``requests``, which in turn bundles
|
||||||
``backport.ssl_match_hostname``), and hence would require any replacement
|
``backport.ssl_match_hostname``), and hence would require any replacement
|
||||||
module to also be bundled within ``pip``. This wouldn't pose any
|
module to also be bundled within ``pip``. This wouldn't pose any
|
||||||
insurmountable difficulties (it's just another dependency to vendor), but
|
insurmountable difficulties (it's just another dependency to vendor), but
|
||||||
it *would* mean yet another copy of OpenSSL to keep up to
|
it *would* mean yet another copy of OpenSSL to keep up to date.
|
||||||
date.
|
|
||||||
|
|
||||||
This approach also has the same flaw as all other "improve security by
|
This approach also has the same flaw as all other "improve security by
|
||||||
renaming things" approaches: they completely miss the users who most need
|
renaming things" approaches: they completely miss the users who most need
|
||||||
|
@ -422,17 +469,20 @@ to do the right thing when their infrastructure supports it (since
|
||||||
"use this other module" is a much higher impact change than "turn on this
|
"use this other module" is a much higher impact change than "turn on this
|
||||||
higher security setting"). Deprecating the aging SSL infrastructure in the
|
higher security setting"). Deprecating the aging SSL infrastructure in the
|
||||||
standard library in favour of an external module would be even more user
|
standard library in favour of an external module would be even more user
|
||||||
hostile than taking the risk of trying to upgrade it in place.
|
hostile than accepting the slightly increased risk of regressions associated
|
||||||
|
with upgrading it in place.
|
||||||
|
|
||||||
Last, but certainly not least, this approach suffers from the same problem
|
Last, but certainly not least, this approach suffers from the same problem
|
||||||
as the idea of doing a Python 2.8 release: likely not solving the actual
|
as the idea of doing a Python 2.8 release: likely not solving the actual
|
||||||
problem. Commercial redistributors of Python are set up to redistribute
|
problem. Commercial redistributors of Python are set up to redistribute
|
||||||
*Python*, and a pre-existing set of additional packages. Getting new
|
*Python*, and a pre-existing set of additional packages. Getting new
|
||||||
packages added to the pre-existing set *can* be done, but means going
|
packages added to the pre-existing set *can* be done, but means approaching
|
||||||
around to each and every redistributor and asking them to update their
|
each and every redistributor and asking them to update their
|
||||||
repackaging process accordingly. By contrast, the approach described in
|
repackaging process accordingly. By contrast, the approach described in
|
||||||
this PEP would require redistributors to *opt out* of the security
|
this PEP would require redistributors to deliberately *opt out* of the
|
||||||
enhancements, which most of them are unlikely to do.
|
security enhancements (by switching to redistributing directly from the
|
||||||
|
``2.7-legacy-ssl`` branch rather than the main ``2.7`` branch), which most
|
||||||
|
of them are unlikely to do.
|
||||||
|
|
||||||
|
|
||||||
Open Questions
|
Open Questions
|
||||||
|
@ -445,9 +495,6 @@ Open Questions
|
||||||
feature release. In particular, is it possible Windows C extensions may
|
feature release. In particular, is it possible Windows C extensions may
|
||||||
be linking against the Python provided OpenSSL module?
|
be linking against the Python provided OpenSSL module?
|
||||||
|
|
||||||
* Are there any other security relevant modules that should be covered
|
|
||||||
by either a blanket or conditional exemption?
|
|
||||||
|
|
||||||
|
|
||||||
Disclosure of Interest
|
Disclosure of Interest
|
||||||
======================
|
======================
|
||||||
|
@ -473,13 +520,14 @@ of the web as a whole.
|
||||||
Christian and Donald Stufft also provided valuable feedback on a preliminary
|
Christian and Donald Stufft also provided valuable feedback on a preliminary
|
||||||
draft of this proposal.
|
draft of this proposal.
|
||||||
|
|
||||||
Thanks also to participants in the python-dev mailing list thread [1]_
|
Thanks also to participants in the python-dev mailing list threads [1,2]_
|
||||||
|
|
||||||
|
|
||||||
References
|
References
|
||||||
==========
|
==========
|
||||||
|
|
||||||
.. [1] https://mail.python.org/pipermail/python-dev/2014-March/133334.html
|
.. [1] https://mail.python.org/pipermail/python-dev/2014-March/133334.html
|
||||||
|
.. [2] https://mail.python.org/pipermail/python-dev/2014-March/133389.html
|
||||||
|
|
||||||
|
|
||||||
Copyright
|
Copyright
|
||||||
|
|
Loading…
Reference in New Issue