[Python-ideas] Fwd: Re: Secure unpickle
Eric V. Smith
eric at trueblade.com
Thu Jul 23 16:26:00 CEST 2015
On 07/23/2015 09:54 AM, Neil Girdhar wrote:
>
>
> On Wed, Jul 22, 2015 at 9:46 PM, Nathaniel Smith <njs at pobox.com
> <mailto:njs at pobox.com>> wrote:
>
> On Wed, Jul 22, 2015 at 5:27 PM, Neil Girdhar <mistersheik at gmail.com
> <mailto:mistersheik at gmail.com>> wrote:
> >
> > That is so unfortunate. Pickle is such a good solution except for the
> > security. Why can't we have security too? It doesn't seem to me to be
> > right for a project like matplotlib to be writing their own serialization
> > library. It would be awesome if Python had secure serialization built-in.
>
> The reason you can pickle/unpickle arbitrary Python objects is that
> the pickle format is basically a structured, optimized way of
> generating and then evaluating arbitrary Python code. Which is great
> because it's totally general -- that's why we love pickle, you can
> pickle anything -- but that exact feature is what makes it insecure.
> If you want to make something secure, that means making some explicit
> decisions about what kinds of things can be put into your data format
> and which cannot, and write some explicit code to handle each of these
> things instead of just handing the file format direct access to your
> interpreter. But by the time you've done that you've done the hard
> part of implementing a new format anyway...
>
>
> Wouldn't it be easier to just tell unpickle which code it's allowed to
> run (by passing a list of modules and classes)?
unpickle can already do that, via Unpickler.find_class. There's an
example in the docs.
Eric.
More information about the Python-ideas
mailing list