On Wed, Aug 3, 2016 at 12:38 PM, David Bruant <[email protected]> wrote:

> Le 03/08/2016 à 18:47, Andrew McCreight a écrit :
>
> In a world where a sophisticated attacker can get root privileges, I
>> wouldn't spend too much time worrying about intraprocess attacks.
>
> If (safe) Rust holds its promises of preventing use-after-free,
> uninitialized stack variables, out-of-bounds, etc, then the attacks
> demonstrated at pwn2own are... not possible at all (modulo OS vulns).
> And then the security discussion needs to start over at a new starting
> point, in this new world where these attacks are not possible at all.
> Maybe intra-process attacks are the most worrisome threat in this new
> world...
>

If arbitrary code execution in a content process is not possible, than
intra-process attacks are also very hard (you are probably limited to
things like race conditions). I think it is a question of what you do when
you can run anything in the child process: do you attack the OS sandbox
(which as you noted Servo can't really do anything about) or do you try to,
say, grab the cookies for another site?



>
> My undertanding of pwalton's email is that the parts written in unsafe
> rust binding to complex C++ libraries should be bundled together in their
> own process(es).
> Were the JS and layout engines written in safe Rust, I don't think
> process-as-a-sandoxing-boundary would be necessary?
>
> David
>
> [1] http://fr.slideshare.net/BrendanEich/future-tense-7782010#14
> [2] https://air.mozilla.org/overview-of-research-team-projects/ (starting
> at 55'0'')
>
>
> If you do want to think about it, I'd first read over the work that Chrome
>> people have already put into thinking about this issue:
>> http://www.chromium.org/developers/design-documents/site-isolation
>>
>> I'm not sure how much they have actually shipped from this initiative,
>> though.
>>
>> Andrew
>>
>> [1]
>>
>> http://venturebeat.com/2016/03/18/pwn2own-2016-chrome-edge-and-safari-hacked-460k-awarded-in-total/
>>
>>
>> How we allocate domains to content processes is an open question. It's
>>> not clear whether we want to segregate high value targets or low value
>>> targets. But the infrastructure required is the same either way pretty
>>> much. The only strategy we know won't work is round-robin/random,
>>> since the attacker could just keep creating domains until they land in
>>> the right process.
>>>
>>> To be clear, I don't think there is very much code complexity here
>>> over the normal 2 process (chrome + content) solution. We already have
>>> to have process spawning and IPC. The only thing that changes here is
>>> code to decide where to spawn new pipelines.
>>>
>>> Implementation wise, we currently spawn a new process per script
>>> thread. I think we should change this to spawn a single, sandboxed
>>> content process that contains all the pipelines. Later we can expand
>>> this once it's more clear how we should allocate pipelines to
>>> processes.
>>>
>>> jack.
>>>
>>> On Wed, Aug 3, 2016 at 2:53 AM, Till Schneidereit
>>> <[email protected]> wrote:
>>>
>>>> I wonder to which extent this matters. I'm not aware of any real-world
>>>> instances of the mythical cross-tab information harvesting attack. Sure,
>>>>
>>> in
>>>
>>>> theory the malvertising ad from one tab would be able to read
>>>> information
>>>> from your online banking session. In practice, it seems like attacks
>>>> that
>>>> gain control of the machine are so much more powerful that that's where
>>>>
>>> all
>>>
>>>> the focus is.
>>>>
>>>> Additionally, it seems like two content processes, one for normal sites,
>>>> one for high-security ones (perhaps based on EV certificates), should
>>>>
>>> give
>>>
>>>> much of the benefits. Or perhaps an additional one for low-security ones
>>>> such as ads (perhaps based on tracking blocking lists).
>>>>
>>>> On Wed, Aug 3, 2016 at 5:43 AM, Jack Moffitt <[email protected]> wrote:
>>>>
>>>> Each process is a sandboxing boundary. Without security as a concern
>>>>> you would just have a single process. A huge next step is to have a
>>>>> second process that all script/layout threads go into. This however
>>>>> still leaves a bit of attack surface for one script task to attack
>>>>> another. How many processes you want is a tradeoff of overhead vs.
>>>>> security.
>>>>>
>>>>> So really it should say "more process more security".
>>>>>
>>>>> jack.
>>>>>
>>>>> On Tue, Aug 2, 2016 at 9:09 PM, Patrick Walton <[email protected]>
>>>>> wrote:
>>>>>
>>>>>> It's not a stupid question :) I actually think we should gather all
>>>>>>
>>>>> script
>>>>>
>>>>>> and layout threads together into one process. Maybe two, one for
>>>>>> high-security sites and one for all other sites.
>>>>>>
>>>>>> Patrick
>>>>>>
>>>>>>
>>>>>> On Aug 2, 2016 6:47 PM, "Paul Rouget" <[email protected]> wrote:
>>>>>>
>>>>>>> On Tue, Aug 2, 2016 at 6:47 PM, Jack Moffitt <[email protected]>
>>>>>>>
>>>>>> wrote:
>>>
>>>> First, is multiprocess and sandboxing actively supported?
>>>>>>>>>
>>>>>>>> I tested this right before the nightly release, and it was working
>>>>>>>> fine and didn't seem to have bad performance. Note that you can
>>>>>>>>
>>>>>>> run -M
>>>
>>>> or -M and -S, but not -S by itself (which doesn't make sense). Also
>>>>>>>> note that -M and -S probably don't work on Windows or Android
>>>>>>>> currently.
>>>>>>>>
>>>>>>>> Is Servo tested with the "-M -S" options?
>>>>>>>>>
>>>>>>>> We do not have automated testing of these yet.
>>>>>>>>
>>>>>>>> What's the status of the sandbox?
>>>>>>>>>
>>>>>>>> Should work on Mac and Linux, but hasn't been audited.
>>>>>>>>
>>>>>>>> Is there any reasons for these options to not be turned on by
>>>>>>>>>
>>>>>>>> default?
>>>>>
>>>>>> They should be, although I think we wanted to fix perf issues
>>>>>>>>
>>>>>>> running
>>>
>>>> the WPT suite and get all the platforms working first. We should
>>>>>>>> probably test both configurations.
>>>>>>>>
>>>>>>>> Do we want to enable "-M -S" for browserhtml? Would that help?
>>>>>>>>>
>>>>>>>> I wanted to have this for the nightly, but didn't have time to
>>>>>>>>
>>>>>>> test.
>>>
>>>> If it works and has decent performance we can switch to having
>>>>>>>>
>>>>>>> these
>>>
>>>> be on.
>>>>>>>>
>>>>>>>> I'd like to understand what is not part of the sandboxed content
>>>>>>>>> process.
>>>>>>>>> I guess compositor code and anything GPU and window related is not
>>>>>>>>> sandboxed so it runs in the main process.
>>>>>>>>> How does a sync call to localStorage work in a sandboxed process?
>>>>>>>>> Where is networking code executed?
>>>>>>>>>
>>>>>>>> The thing that lives in the extra processes (which are sandboxed)
>>>>>>>>
>>>>>>> are
>>>
>>>> the script and layout threads. Right now each script/layout thread
>>>>>>>> gets its own process (and I think any pipeline which shares the
>>>>>>>>
>>>>>>> same
>>>
>>>> script thread).
>>>>>>>>
>>>>>>>> Eventually we'll want to have each extra process contain some
>>>>>>>>
>>>>>>> number
>>>
>>>> of pipelines. So that is script+layout but for arbitrary numbers of
>>>>>>>> domains.
>>>>>>>>
>>>>>>> In your slides, you say "more process more better".
>>>>>>> That might be a stupid question, but why?
>>>>>>> Because of the nature of Servo, can't we just gather all the
>>>>>>> script+layout threads into one single sandboxed process?
>>>>>>>
>>>>>>> The constellation, networking, graphics, etc all live in the root
>>>>>>>> process which has privileges.
>>>>>>>>
>>>>>>>>
>>>>>>>> I'm trying to understand the relation between a constellation,
>>>>>>>>>
>>>>>>>> iframes
>>>>>
>>>>>> and a sandboxed process. I would naively expect to have one
>>>>>>>>>
>>>>>>>> process
>>>
>>>> per constellation, but apparently, it's one process per iframe. If
>>>>>>>>>
>>>>>>>> I'm
>>>>>
>>>>>> not mistaken, today in browserhtml, we have only one
>>>>>>>>>
>>>>>>>> constellation. I
>>>
>>>> imagine in the future there would be one sandboxed process per
>>>>>>>>> constellation, one constellation per group of tabs of the same
>>>>>>>>>
>>>>>>>> domain,
>>>>>
>>>>>> and one constellation for browserhtml.
>>>>>>>>>
>>>>>>>> There is only one constellation. A constellation owns a set of
>>>>>>>> pipelines which then form a tree of pipelines. It is only these
>>>>>>>> pipelines that live outside the main process.
>>>>>>>>
>>>>>>> Would there be any advantage of having one constellation per tab?
>>>>>>> Can't a constellation fail? Would it be more robust to have multiple
>>>>>>> constellations?
>>>>>>>
>>>>>>> I've read somewhere that a constellation should be seen as the set of
>>>>>>> pipelines per tab.
>>>>>>>
>>>>>>> But maybe it's a different story with browserhtml because what would
>>>>>>> hold the tabs/constellations would be a pipeline, so at the end, it's
>>>>>>> just doesn't make sense to have multiple constellations.
>>>>>>>
>>>>>>> Asking because if multiple constellation is better and if that's we
>>>>>>> eventually want to do, we need to rethink bhtml architecture.
>>>>>>>
>>>>>>> Eventually we'll probably experiment with where resource caching
>>>>>>>> threads and such go.
>>>>>>>>
>>>>>>>> Here's a link to the deck I presented in London which has pretty
>>>>>>>> pictures of what the design should be:
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>> https://docs.google.com/presentation/d/1ht96DBAynx7dbL2taDAzNHs78QWeKvyzrVV1O-cDQLQ/edit?usp=sharing
>>>
>>>> jack.
>>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> dev-servo mailing list
>>>>>>> [email protected]
>>>>>>> https://lists.mozilla.org/listinfo/dev-servo
>>>>>>>
>>>>>> _______________________________________________
>>>>> dev-servo mailing list
>>>>> [email protected]
>>>>> https://lists.mozilla.org/listinfo/dev-servo
>>>>>
>>>>> _______________________________________________
>>>> dev-servo mailing list
>>>> [email protected]
>>>> https://lists.mozilla.org/listinfo/dev-servo
>>>>
>>> _______________________________________________
>>> dev-servo mailing list
>>> [email protected]
>>> https://lists.mozilla.org/listinfo/dev-servo
>>>
>>> _______________________________________________
>> dev-servo mailing list
>> [email protected]
>> https://lists.mozilla.org/listinfo/dev-servo
>>
>
>
> _______________________________________________
> dev-servo mailing list
> [email protected]
> https://lists.mozilla.org/listinfo/dev-servo
>
_______________________________________________
dev-servo mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-servo

Reply via email to