On Jul 21, 2015 9:32 AM, "Maxime Villard" <m...@m00nbsd.net> wrote:
>
> Hi,
> I put here a bug among others:
>
> ------------------------- sys/kern/kern_exec.c -------------------------
>
>         char *pathbuf = NULL;
>
>         [...]
>
>                 pathbuf = pool_get(&namei_pool, PR_WAITOK);
>
>         [...]
>
>         /* setup new registers and do misc. setup. */
>         if (pack.ep_emul->e_fixup != NULL) {
>                 if ((*pack.ep_emul->e_fixup)(p, &pack) != 0)
>                         goto free_pack_abort;
>         }
>
>         [...]
>
> free_pack_abort:
>         free(pack.ep_hdr, M_EXEC, 0);
>         exit1(p, W_EXITCODE(0, SIGABRT), EXIT_NORMAL);
>
>         /* NOTREACHED */
>         atomic_clearbits_int(&pr->ps_flags, PS_INEXEC);
>         if (pathbuf != NULL)
>                 pool_put(&namei_pool, pathbuf);
>
>         return (0);
> }
>
> ------------------------------------------------------------------------
>
> 'pathbuf' is leaked.
>
> This path being obviously reachable from userland, it is easy for a
> local (un)privileged user to cause the kernel to run out of memory and
> become unresponsive. OpenBSD 5.7 is affected, and quite certainly
> previous releases.
>
> Exploit here:
>
>         http://m00nbsd.net/garbage/OpenBSD_execve-DoS.txt
>
> You can see with vmstat -m that the namei pool becomes enormous.
>
> Found by The Brainy Code Scanner.
>
> It is not the last bug Brainy has found, but it is the last one I
> report. I don't have time for that.
>
> Maxime

Why such a dramatic tone?

--
Ville

Reply via email to