> On Sep 2, 2014, at 7:47 PM, Glyph Lefkowitz <gl...@twistedmatrix.com> wrote:
> 
> 
> On Sep 2, 2014, at 4:28 PM, Nick Coghlan <ncogh...@gmail.com 
> <mailto:ncogh...@gmail.com>> wrote:
> 
>> On 3 Sep 2014 09:08, "David Reid" <dr...@dreid.org <mailto:dr...@dreid.org>> 
>> wrote:
>> >
>> > Nick Coghlan <ncoghlan <at> gmail.com <http://gmail.com/>> writes:
>> >
>> > > Creating *new* incompatibilities between Python 2 & Python 3 is a major 
>> > > point
>> > > of concern.
>> >
>> > Clearly this change should be backported to Python2.
>> 
>> Proposing to break backwards compatibility in a maintenance release (...)
>> 
> 
> As we keep saying, this is not a break in backwards compatibility, it's a bug 
> fix.  Yes, systems might break, but that breakage represents an increase in 
> security which may well be operationally important.  Not everyone with a 
> "working" application has the relevant understanding an expertise to know 
> that Python's HTTP client is exposing them to surveillance.  These 
> applications should break. That is the very nature of the fix.  It is not a 
> "compatibility break" that the system starts correctly rejecting invalid 
> connections.
> 
> By way of analogy, here's another kind of breach in security: an arbitrary 
> remote code execution vulnerability in XML-RPC.  I think we all agree that 
> any 0day RCE vulnerabilities in Python really ought to be fixed and could be 
> legitimately included without worrying about backwards compatibility breaks.  
> (At least... gosh, I hope so.)
> 
> Perhaps this arbitrary remote execution looks harmless; the use of an eval() 
> instead of an int() someplace.  Perhaps someone discovered that they can do 
> "3 + 4" in their XML-RPC and the server does the computation for them.  
> Great!  They start relying on this in their applications to use symbolic 
> values in their requests instead of having explicit enumerations.  This can 
> save you quite a bit of code!
> 
> When the RCE is fixed, this application will break, and that's fine.  In fact 
> that's the whole point of issuing the fix, that people will no longer be able 
> to make arbitrary computation requests of your server any more.  If that 
> server's maintainer has the relevant context and actually wants the XML-RPC 
> endpoint to enable arbitrary RCE, they can easily modify their application to 
> start doing eval() on the data that they received, just as someone can easily 
> modify their application to intentionally disable all connection security.  
> (Let's stop calling it "certificate verification" because that sounds like 
> some kind of clerical detail: if you disable certificate verification, TLS 
> connections are unauthenticated and unidentified and therefore insecure.)
> 
> For what it's worth, on the equivalent Twisted change, I originally had just 
> these concerns, but my mind was changed when I considered what exactly the 
> user-interface ramifications were for people typing that 's' for 'secure' in 
> URLs.  I was convinced, and we made the change, and there have been no ill 
> effects that I'm aware of as a result.  In fact, there has been a renewed 
> interest in Twisted for HTTP client work, because we finally made security 
> work more or less like it's supposed to, and the standard library is so 
> broken.
> 
> I care about the health of the broader Python community, so I will 
> passionately argue that this change should be made, but for me personally 
> it's a lot easier to justify that everyone should use Twisted (at least since 
> 14+) because transport security in the stdlib is such a wreck and even if it 
> gets fixed it's going to have easy options to turn it off unilaterally so 
> your application can never really be sure if it's getting transport security 
> when it's requesting transport security.
> 

I completely agree with everything Glyph has said in this post. (To the shock 
of everyone involved I’m sure!).

---
Donald Stufft
PGP: 7C6B 7C5D 5E2B 6356 A926 F04F 6E3C BCE9 3372 DCFA

_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to