I should mention that this scenario is the worst case scenario, and isn't the 
likely one. However I think the possible damages from it well outweigh the 
small amount of benefit from mutable packages. 

The more likely scenarios (on the failure side) are either applications 
breaking upon install/deploy or silently corrupting data. Both of which, but 
especially the silently corrupting data case I think the possible damages again 
outweigh the small benefit from mutable packages. 


On Wednesday, February 1, 2012 at 6:06 AM, Yuval Greenfield wrote:

> On Wed, Feb 1, 2012 at 11:14 AM, Chris Withers <ch...@simplistix.co.uk 
> (mailto:ch...@simplistix.co.uk)> wrote:
> > On 01/02/2012 09:01, Yuval Greenfield wrote:
> > > Would you testify that HTTP is secure because I can emulate TLS in
> > > javascript?
> > 
> > What's that got to do with the price of eggs?
> > 
> > 
> 
> I can maintain my own personal log of package SHA-512's and thus locally 
> avoid this security hole in PyPI. The system as a whole is still vulnerable 
> by default. That's why HTTP is considered insecure even though you can build 
> secure solutions on top of it. PyPI would be the insecure infrastructure upon 
> which secure frameworks can be built. Immutability will make the default 
> behavior of pypi more secure. 
> 
>  
> > > PyPI should do what it can within reason to be consistent and safe for
> > > all its users.
> > 
> > *sigh* that's what the MD5s are for. What threat, exactly are you so 
> > worried about here? That someone investigates and chooses to use a package, 
> > and then, having done so, decides to re-download an identical version of 
> > that package which has been maliciously uploaded, and happens to have the 
> > same MD5 checksum as the one they've already downloaded?
> > 
> 
> Let's assume I made a package called pybanker that requires a specific 
> version of SQLAlchemy (eg 0.6.8). When I tell people to download SQLAlchemy 
> 0.6.8 do I have to tell them the exact hash? Does the setup.py/cfg 
> (http://setup.py/cfg) allow me to require a specific hash on SQLAlchemy when 
> automatically resolving dependencies in pip/easy_install? So now when banks 
> around the world are going to use pybanker and thus SQLAlchemy 0.6.8 - they 
> don't know what was the original hash. In the meantime a security threat has 
> manifested in sqlalchemy (eg pythonpackages was hacked, an sqlalchemy 
> maintainer password/computer/network was compromised, etc). The hacker 
> modifies SQLAlchemy 0.6.8 to work perfectly while adding a backdoor to the 
> system or relaying all transactions to a remote server. 
> 
> I hope we don't have to wait for this attack vector to be used (and detected 
> and publicized) before this loophole is patched.
> 
> Obviously this isn't the only problem if the account of an SQLAlchemy 
> maintainer is compromised - other threats can manifest as well. That doesn't 
> mean this specific threat should be ignored, especially considering that it's 
> a stealthy vector. 
> 
> tl;dr - the classic bait and switch is why user generated content is 
> immutable on most web services. If edits are allowed they are usually only so 
> for a limited amount of time or require an administrator in the loop. 
> 
> Yuval 
> _______________________________________________
> Catalog-SIG mailing list
> Catalog-SIG@python.org (mailto:Catalog-SIG@python.org)
> http://mail.python.org/mailman/listinfo/catalog-sig
> 
> 


_______________________________________________
Catalog-SIG mailing list
Catalog-SIG@python.org
http://mail.python.org/mailman/listinfo/catalog-sig

Reply via email to