Panic action

Arran Cudbard-Bell a.cudbardb at freeradius.org
Mon Jan 27 03:39:43 CET 2014


On 26 Jan 2014, at 17:27, Arran Cudbard-Bell <a.cudbardb at freeradius.org> wrote:

> There was some discussion on the users list with a suggestion by Phil 
> to implement something similar to the Samba project's panic action.
> 
> That's now been done
> 
> #  panic_action: Command to execute on server fault.
> #
> #  WARNING: DO NOT SET A PANIC ACTION ON PRODUCTION SERVERS WHICH DOES
> #  WARNING: NOT IMMEDIATELY RETURN.  DOING SO MAY PREVENT YOUR SERVER
> #  WARNING: FROM RESTARTING.
> #
> #  Sets a command which will be executed if the server receives a fatal,
> #  non user generated signal, i.e. SIGSEGV, SIGBUS, SIGABRT or SIGFPE.
> #
> #  This can be used to start an interactive debugging session so
> #  that information regarding the current state of the server can
> #  be acquired.
> #
> #  The following string substitutions are available:
> #  - %e   The currently executing program e.g. /sbin/radiusd
> #  - %p   The PID of the currently executing program e.g. 12345
> #
> #  Standard ${} substitutions are also allowed.
> #
> #  An example panic action for opening an interactive session in GDB would be:
> #panic_action = "gdb %e %p"
> #
> #  An example panic action for opening an automated session in GDB would be:
> #panic_action = "gdb -silent -x ${raddbdir}/panic.gdb %e %p > ${logdir}/gdb.log 2>&1"
> 
> So getting full backtraces out of the server should now be as simple as
> uncommenting that bottom panic_action line.
> 
> With the automated session it should be safe to run on production servers,
> and will provide useful information about transient faults.
> 
> Also added support for panic_action to the unittest program, so if any
> of the unittests fail with a segv you'll get a full GDB backtrace 
> automatically.

Hm, can anyone see any obvious security issues with having the utilities and server check environmental variables for a PANIC_ACTION?

It allows you to be exceptionally lazy... you could just set it in ~/.profile and an interactive debugger session would pop up any time a utility or daemon crashed.

Just seems like one of those possibly insecure exploitable things... Maybe only enable it #ifndef NDEBUG then it's off for official releases? and for radiusd only if it was running in foreground mode?

Arran Cudbard-Bell <a.cudbardb at freeradius.org>
FreeRADIUS Development Team

FD31 3077 42EC 7FCD 32FE 5EE2 56CF 27F9 30A8 CAA2

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 881 bytes
Desc: Message signed with OpenPGP using GPGMail
URL: <http://lists.freeradius.org/pipermail/freeradius-devel/attachments/20140127/16559595/attachment.pgp>


More information about the Freeradius-Devel mailing list