To make sure I'm understanding correctly, as long as the code verifies that 
the given snipclass is in (get-the-snip-class-list), it should be 
relatively safe? So the only way that the user would run malicious code in 
this case is if they installed a malicious package first, in which case 
there are easier ways to cause harm.

OTOH, when using the load-file method, the dynamic-require could be an 
issue if a theoretical attacker put a .rkt file at a known path and the 
input to load-file refers to that path.

Daniel

On Thursday, August 20, 2020 at 3:12:00 PM UTC-4 Robby Findler wrote:

> The issue I mention in 157 is different than this one.
>
> In this situation, the snipclass needs to be installed somehow before its 
> code will be loaded, but that installation can happen by a require 
> (triggered by the opening of that snip). So it may be that you have code 
> installed in a collection that you do not trust and unmarshalling a snip 
> may load that code.
>
> That said, in the code below, I don't think this is happening. In 
> particular, the way that untrusted code may be loaded is because the name 
> of the snipclass follows a specific format and the editor itself is going 
> to do the require. 
>
> In short, you can treat the `load-file` method of editor<%> as possibly 
> doing a dynamic-require. This may or may not be a problem, of course.
>
> (At least I think that that's the only thing here. I may be forgetting 
> something?)
>
> Robby
>
>
> On Thu, Aug 20, 2020 at 2:08 PM Sorawee Porncharoenwase <
> [email protected]> wrote:
>
>> I don't know much about this specific case, but see Robby's comment about 
>> how "DrRacket can run user (untrusted) code in certain situations" at 
>> https://github.com/racket/gui/issues/157. A concrete problem I found is 
>> that you can have a snip running `struct->vector` and it will successfully 
>> extract private fields of that struct value, even though it won't be able 
>> to if you do that in normal circumstances.
>>
>> On Thu, Aug 20, 2020 at 8:34 AM Daniel Melcer <[email protected]> wrote:
>>
>>> There are some well-known vulnerabilities that are a result of 
>>> deserializing untrusted inputs. Are editor snips restrictive enough that 
>>> their deserialization is safe? After all, they are already loaded when a 
>>> file is opened in DrRacket, and a file on the disk may originate from an 
>>> untrusted source. In particular, I would be doing something like this 
>>> (snip-class-name, bytes, and snip-pos are from an untrusted source). The 
>>> whole thing will be wrapped in an exception handler:
>>>
>>>         (define snip-class (send (get-the-snip-class-list) find 
>>> snip-class-name)) ; Also handle case where this returns #f
>>>         (define bytes-base-in (make-object editor-stream-in-bytes-base% 
>>> bytes))
>>>         (define editor-stream-in (make-object editor-stream-in% 
>>> bytes-base-in))
>>>         (define new-snip (send snip-class read editor-stream-in))
>>>         (send text insert new-snip snip-pos)
>>>
>>> Daniel
>>>
>>> -- 
>>> You received this message because you are subscribed to the Google 
>>> Groups "Racket Users" group.
>>> To unsubscribe from this group and stop receiving emails from it, send 
>>> an email to [email protected].
>>> To view this discussion on the web visit 
>>> https://groups.google.com/d/msgid/racket-users/153d1c59-0343-4ed9-805b-2909499ec98fn%40googlegroups.com
>>>  
>>> <https://groups.google.com/d/msgid/racket-users/153d1c59-0343-4ed9-805b-2909499ec98fn%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "Racket Users" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected].
>>
> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/racket-users/CADcuegtnpb3h_JkDFmBdhiosJkz948ypkhmoj1vZc7vq5SAR0w%40mail.gmail.com
>>  
>> <https://groups.google.com/d/msgid/racket-users/CADcuegtnpb3h_JkDFmBdhiosJkz948ypkhmoj1vZc7vq5SAR0w%40mail.gmail.com?utm_medium=email&utm_source=footer>
>> .
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/d201725a-e043-4c31-975e-f0ff289982f4n%40googlegroups.com.

Reply via email to