mirror of
https://github.com/asterisk/asterisk.git
synced 2025-11-02 11:58:40 +00:00
security: Inhibit execution of privilege escalating functions
This patch allows individual dialplan functions to be marked as 'dangerous', to inhibit their execution from external sources. A 'dangerous' function is one which results in a privilege escalation. For example, if one were to read the channel variable SHELL(rm -rf /) Bad Things(TM) could happen; even if the external source has only read permissions. Execution from external sources may be enabled by setting 'live_dangerously' to 'yes' in the [options] section of asterisk.conf. Although doing so is not recommended. Also, the ABI was changed to something more reasonable, since Asterisk 12 does not yet have a public release. (closes issue ASTERISK-22905) Review: http://reviewboard.digium.internal/r/432/ ........ Merged revisions 403913 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 403917 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 403959 from http://svn.asterisk.org/svn/asterisk/branches/12 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@403960 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -48,6 +48,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
|
||||
#include "asterisk/options.h"
|
||||
#include "asterisk/manager.h"
|
||||
#include "asterisk/astobj2.h"
|
||||
#include "asterisk/pbx.h"
|
||||
|
||||
/*! \brief
|
||||
* replacement read/write functions for SSL support.
|
||||
@@ -164,6 +165,16 @@ static void *handle_tcptls_connection(void *data)
|
||||
char err[256];
|
||||
#endif
|
||||
|
||||
/* TCP/TLS connections are associated with external protocols, and
|
||||
* should not be allowed to execute 'dangerous' functions. This may
|
||||
* need to be pushed down into the individual protocol handlers, but
|
||||
* this seems like a good general policy.
|
||||
*/
|
||||
if (ast_thread_inhibit_escalations()) {
|
||||
ast_log(LOG_ERROR, "Failed to inhibit privilege escalations; killing connection\n");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
* open a FILE * as appropriate.
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user