Please tell me what security problem unveil is solving in this program.

Vevy Kod <vevy...@laposte.net> wrote:

> How about adding an environment variable containing all directories
> where headers can be found ?
> If it is not provided, we can fall back to the per-file algorithm,
> possibly going above limit.
> If a user goes above that limit, they can provide their own list of
> directories.
> And in the worst case, they can simply set it to '/', giving
> themselves read access to everything.
> 
> On 18/07/2024 17:43, Lorenz (xha) wrote:
> > the HARE_TD_<files> are the "typedef" files, basically the equivalent
> > to C headers, but automatically generated by the compiler so we can
> > do resolution of types/functions/etc. in dependencies without having
> > to look at the source files themselves.
> > i doubt that anyone is ever going to make use of more than 125
> > imports.
> > the problem is that i cannot simply restict that to one folder. they
> > could be anywhere (even though they are not usually). that'd complicate
> > the patch a lot for... allowing more than 125 imports?
> > the error message will not be particularly hard to read; i guess if
> > someone really hits the limit, we can do something about it then?
> > we don't want to do anything in upstream harec because we want to
> > keep it to the POSIX subset.
> > On Thu, Jul 18, 2024 at 09:29:39AM -0600, Theo de Raadt wrote:
> >> Tobias Heider <tobias.hei...@stusta.de> wrote:
> >>
> >>> I think unveil might still be useful.
> >>
> >> I don't think so.
> >>
> >>> As I understand Theo the problem is just that calling unveil per-input 
> >>> file to grant
> >>> read access won't work. Restricting write and create permissions to the 
> >>> single
> >>> well-known output directory still makes sense to me.
> >>>
> >>>>
> >>>> The set of library functions used is pretty small, so it should be easy
> >>>> enough to reason about adding pledge.
> >>>>
> >>>> $ nm -s /usr/local/bin/harec | awk '/^ *U / { print $2 }' | column
> >>>> __assert2        atexit          fseek           memset          strerror
> >>>> __errno          bsearch         fstat           open_memstream  strlen
> >>>> __isinf          calloc          getenv          optarg          strncmp
> >>>> __isinff exit            getline         optind          strtod
> >>>> __isinfl fclose          getopt          perror          strtoul
> >>>> __isnan          feof            isalnum         qsort           
> >>>> strtoumax
> >>>> __isnanf fgetc           isalpha         realloc         vfprintf
> >>>> __isnanl fileno          isatty          snprintf        vsnprintf
> >>>> __isthreaded     fmemopen        isdigit         stat
> >>>> __sF             fopen           isprint         strchr
> >>>> _csu_finish      fread           memcmp          strcmp
> >>>> abort            free            memcpy          strdup
> >>>>
> >>
> >> So the undocumented, un-exported, unveil limit today is 128.  This comes
> >> with a cost, so we will not be increasing it.
> >>
> >> Enough setenv, enough arguments, and it fails.  Now how does someone 
> >> "workaround"
> >> it in their build tooling?
> >>
> >> THAT "workaround" is what makes the solution.
> >>
> >> This is not what unveil is intended to support.
> > 

Reply via email to