<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, 5 Mar 2024 at 23:35, Karl Berry <<a href="mailto:karl@freefriends.org">karl@freefriends.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi Joseph and David,<br>
<br>
    a script for doing (primarily) directory listings from Lua<br>
    <a href="https://github.com/latex3/l3sys-query" rel="noreferrer" target="_blank">https://github.com/latex3/l3sys-query</a><br>
<br>
I passed it on to <a href="mailto:tlsecurity@tug.org" target="_blank">tlsecurity@tug.org</a> for completeness, though I think<br>
everyone there is also here.<br>
<br>
    The aim here is to be able to use it from restricted shell escape, which<br>
    means appropriate security review, etc. Hopefully we've been<br>
    conservative in that regard (currently it should simply refuse to<br>
    provide a listing at all outside pwd). Before thinking about a release,<br>
    I'd like to know what we need to do security-wise to have a chance to<br>
    get this into the default restricted list.<br>
<br>
Do I understand correctly that the key safety bit is:<br>
<br>
  -- Look for absolute paths or any trying to leave the confines of the current<br>
  -- directory: this is not supported.<br>
  if match(spec,"%.%.") or <br>
     match(spec,"^/") or <br>
     match(spec,"^\\") or <br>
     match(spec,"[a-zA-Z]:") then<br>
    return<br>
  end<br>
<br>
That looks ok to me. And when I tried running it, I got back the<br>
expected blank line for anything untoward.<br>
<br>
So I see no problems for security. I believe the --all option is<br>
ineffective? (Which seems good.)<br></blockquote><div><br></div><div>--all enables .files in the current directory being read.</div><div><br></div><div>If the current directory has foo.tex and .foo then .foo is not listed unless --all is used<br></div><div><br></div><div><br></div><div>$ ./l3sys-query.lua ls '*foo*'<br>./foo.tex<br><br>$ ./l3sys-query.lua ls --all '*foo*' <br>./.foo<br>./foo.tex</div><div><br></div><div>If openin_any = p is in force the calling tex system wouldn't be able to read .foo but (currently at least)  it shows in the directory listing.</div><div>I think that's compatible with openin_any=p (which actually is in force above) otherwise we would (I think) have to add a call to</div><div>kpsewhich -var-value 'openin_any'</div><div>to disable --all in that case.</div><div><br></div><div><br></div><div> <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
I have a number of non-security comments, but will write those up later<br>
today or tomorrow. Wanted to send this off now. --thanks, karl.<br></blockquote><div><br></div><div>David</div><div> <br></div></div></div>