I investigated this thoroughly some time ago (when the MSVC flags became available) and determined (with the help of some of the original Spectre/Meltdown investigation team) that there is no significant value in enabling these flags for Python.

It boiled down to:
* Python allows arbitrary code execution by design
* Pure Python code in CPython has very long per-instruction opcode sequences that cannot easily be abused or timed * Injected pure Python code cannot be coerced into generating native code that is able to abuse Spectre/Meltdown but not able to abuse other attacks more easily
* Code injection itself is outside of this particular threat model

By comparison with JavaScript, most JS JITs can be easily coerced into generating specific native code that can break sandbox guarantees (e.g. browser tabs). Python offers none of these guarantees.

Distributors are of course free to enable these flags for their own builds, but I recommend against it for the official binaries, and would suggest that it's worth more PR than actual security and nobody else needs to enable it either.

(Extension authors with significant scriptable C code need to perform their own analysis. I'm only talking about CPython here.)

Cheers,
Steve

On 16Sep2018 0707, Wes Turner wrote:
Should Python builds add `-mindirect-branch=thunk -mindirect-branch-register` to CFLAGS?

Where would this be to be added in the build scripts with which architectures?

/QSpectre is the MSVC build flag for Spectre Variant 1:

> The /Qspectre option is available in Visual Studio 2017 version 15.7 and later.

https://docs.microsoft.com/en-us/cpp/build/reference/qspectre?view=vs-2017

security@ directed me to the issue tracker / lists,
so I'm forwarding this to python-dev and python-ideas, as well.

# Forwarded message
From: *Wes Turner* <wes.tur...@gmail.com <mailto:wes.tur...@gmail.com>>
Date: Wednesday, September 12, 2018
Subject: SEC: Spectre variant 2: GCC: -mindirect-branch=thunk -mindirect-branch-register To: distutils-sig <distutils-...@python.org <mailto:distutils-...@python.org>>


Should C extensions that compile all add
`-mindirect-branch=thunk -mindirect-branch-register` [1] to mitigate the risk of Spectre variant 2 (which does indeed affect user space applications as well as kernels)?

[1] https://github.com/speed47/spectre-meltdown-checker/issues/119#issuecomment-361432244 <https://github.com/speed47/spectre-meltdown-checker/issues/119#issuecomment-361432244> [2] https://en.wikipedia.org/wiki/Spectre_(security_vulnerability) <https://en.wikipedia.org/wiki/Spectre_%28security_vulnerability%29> [3] https://en.wikipedia.org/wiki/Speculative_Store_Bypass#Speculative_execution_exploit_variants <https://en.wikipedia.org/wiki/Speculative_Store_Bypass#Speculative_execution_exploit_variants>

    On Wednesday, September 12, 2018, Wes Turner <wes.tur...@gmail.com
    <mailto:wes.tur...@gmail.com>> wrote:

        On Wednesday, September 12, 2018, Joni Orponen
        <j.orpo...@4teamwork.ch <mailto:j.orpo...@4teamwork.ch>> wrote:

            On Wed, Sep 12, 2018 at 8:48 PM Wes Turner
            <wes.tur...@gmail.com <mailto:wes.tur...@gmail.com>> wrote:

                Should C extensions that compile all add
                `-mindirect-branch=thunk -mindirect-branch-register` [1]
                to mitigate the risk of Spectre variant 2 (which does
                indeed affect user space applications as well as kernels)?


            Are those available on GCC <= 4.2.0 as per PEP 513?


        AFAIU, only
        GCC 7.3 and 8 have the retpoline (indirect-branch=thunk) support
        enabled by the `-mindirect-branch=thunk
        -mindirect-branch-register` CFLAGS.


 On Wednesday, September 12, 2018, Wes Turner <wes.tur...@gmail.com <mailto:wes.tur...@gmail.com>> wrote:

    "What is a retpoline and how does it work?"
    
https://stackoverflow.com/questions/48089426/what-is-a-retpoline-and-how-does-it-work
    
<https://stackoverflow.com/questions/48089426/what-is-a-retpoline-and-how-does-it-work>




_______________________________________________
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/steve.dower%40python.org


_______________________________________________
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