Typo: "but the library itself leverages the reader" should read "but if the library itself leverages the reader"
On 2/28/21 4:20 PM, Sage Gerard wrote: > Does call-with-default-reading-parameterization help? > > https://docs.racket-lang.org/reference/Reading.html?q=accept-compiled#%28def._%28%28lib._racket%2Fprivate%2Fmisc..rkt%29._call-with-default-reading-parameterization%29%29 > > The parameters you are seeing re: accepting -lang, -reader are for when the > reader sees a reference to an extension that it can load and use. In that > sense, code defined for that extension would execute so that the reader is > prepared to process upcoming bytes. So if you are worried that the reader > would execute code as a side-effect of reading, then yes, that can happen. > Unsure what the #~ does, so I can't speak to that. > > Defining a procedure that flips off all parameters related to extensions is a > good step, but I do not know if the linked example serves as a true "Deny > All" equivalent. The docs make it seem like it does. Even so, I think there > are other aspects to a zero-trust policy such as the values of > `current-security-guard` and `current-code-inspector`... but you'll get to > that. > > Using a different data format might work, but the library itself leverages > the reader, then you still would care about enforcing these restrictions > anyway. > > On 2/28/21 2:50 PM, Ryan Kramer wrote: > >> I want to send some Racket structs across a network. I know that I can use >> prefab structs, serializable-structs, or even `eval` with a carefully >> curated namespace. I was trying to think of security problems with the eval >> approach and now I've become more afraid of `read` than I am of eval. And >> read seems necessary for all 3 approaches. >> >> The first concern I thought of was cyclic data. My code assumes there are no >> cycles; if an attacker can get me to process cyclic data my server will >> probably loop forever or crash. This can be solved by setting >> `read-accept-graph` to #f... I think. Right? (I guess another solution is >> "you need to validate the input" which is fair, but it's easy to forget or >> make a mistake.) >> >> This caused me to notice other `read-accept-***` parameters that looked >> scary (-lang, -reader, -compiled). I don't know if there is an attack vector >> here, but I felt safer turning them off also. >> >> Now I'm thinking that even if I can get it working safely today, Racket >> would be well within its rights to make enhancements to the reader in the >> future. So someday there might be new parameters that I would want to turn >> off to preserve my definition of "safe", and I have to remember this when I >> upgrade. >> >> All this makes me think that `read` is not quite the right tool for the job. >> But it's close. If there were a version of read that accepts nothing by >> default and requires the caller to opt-in to everything they want, that >> would probably be perfect. >> >> I could use JSON or XML, but that just seems silly when you have a Racket >> client talking to a Racket server. >> >> Are my concerns founded? Are there any existing solutions? Thanks for any >> advice. >> -- >> 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/a2580765-3cc2-482b-8d20-f62dc1e1dc91n%40googlegroups.com](https://groups.google.com/d/msgid/racket-users/a2580765-3cc2-482b-8d20-f62dc1e1dc91n%40googlegroups.com?utm_medium=email&utm_source=footer). > > -- > ~slg > > -- > 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/2d8bc7d7-30c0-7952-c4aa-81598998e9a0%40sagegerard.com](https://groups.google.com/d/msgid/racket-users/2d8bc7d7-30c0-7952-c4aa-81598998e9a0%40sagegerard.com?utm_medium=email&utm_source=footer). -- ~slg -- 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/c7c7533e-ffc7-9c67-ea08-32f28c78cc07%40sagegerard.com.

