public inbox archive for pandoc-discuss@googlegroups.com
 help / color / mirror / Atom feed
From: Albert Krewinkel <albert+pandoc-9EawChwDxG8hFhg+JK9F0w@public.gmane.org>
To: pandoc-discuss-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
Subject: Re: Lua filter security: safe mode?
Date: Thu, 12 May 2022 14:16:25 +0200	[thread overview]
Message-ID: <87r14yzzb1.fsf@zeitkraut.de> (raw)
In-Reply-To: <13cd1f3a-bc26-49cf-a7df-ec8d56fcf05an-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org>


Julien Dutant <julien.dutant-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> writes:

> As discussed a while ago on
> https://github.com/pandoc/lua-filters/issues/207#issuecomment-1067959808
> and said in Pandoc's manual, running Lua filters downloaded from
> internet is a security risk as Pandoc is run with full privileges.
>
> But doesn't all the risk only comes for Lua's `os` module (and perhaps
> io?), which few filters actually use? If so, would it be possible for
> Pandoc to run Lua filters without this module, providing an alternative
> flag (something like --lua-filter-safe) to run a filter safely?

I had the intention of building a safe Lua filter system, but have given
up on that. There are just too many things that could go wrong.

For one, there are just too many potentially risky Lua functions.
Basically all functions in the `os` and `io` modules are unsafe, as are
`load`, `loadfile`, `dofile`, and `require`. Most functions in
`pandoc.system`, and `pandoc.mediabag` are problematic, as are the
functions `pandoc.utils.pipe` and `pandoc.utils.run_json_filter`, both
of which allow to run arbitrary programs. Even seemingly innocent
functions like `pandoc.read` and `pandoc.references` can be used to
access the file system and could be used to exfiltrate information.

But the main reason for not attempting such a thing is actually that I
have security concerns about the basic pandoc-Lua-bridge. I'm not
confident enough that we could reliably prevent sandbox escapes; nobody
ever did an security audit of HsLua. I *think* there are no obvious
exploits, but I still wouldn't want to label something as "safe" unless
I'm 100% sure that the description is justified.

TL;DR: Implementing `--lua-filter-safe` might be possible, but it would
require a lot of work as well as expertise that's different from mine.

-- 
Albert Krewinkel
GPG: 8eed e3e2 e8c5 6f18 81fe  e836 388d c0b2 1f63 1124


  parent reply	other threads:[~2022-05-12 12:16 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-05-10 13:45 Julien Dutant
     [not found] ` <13cd1f3a-bc26-49cf-a7df-ec8d56fcf05an-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org>
2022-05-12 12:16   ` Albert Krewinkel [this message]
     [not found]     ` <87r14yzzb1.fsf-9EawChwDxG8hFhg+JK9F0w@public.gmane.org>
2022-05-12 13:15       ` Albert Krewinkel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87r14yzzb1.fsf@zeitkraut.de \
    --to=albert+pandoc-9eawchwdxg8hfhg+jk9f0w@public.gmane.org \
    --cc=pandoc-discuss-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).