asterisk/main
Matthew Jordan d624f2c550 AST-2012-012: Resolve AMI User Unauthorized Shell Access through ExternalIVR
The AMI Originate action can allow a remote user to specify information that can
be used to execute shell commands on the system hosting Asterisk. This can
result in an unwanted escalation of permissions, as the Originate action, which    
requires the "originate" class authorization, can be used to perform actions
that would typically require the "system" class authorization. Previous attempts
to prevent this permission escalation (AST-2011-006, AST-2012-004) have sought
to do so by inspecting the names of applications and functions passed in with
the Originate action and, if those applications/functions matched a predefined
set of values, rejecting the command if the user lacked the "system" class
authorization. As noted by IBM X-Force Research, the "ExternalIVR"
application is not listed in the predefined set of values. The solution for     
this particular vulnerability is to include the "ExternalIVR" application in the
set of defined applications/functions that require "system" class authorization.             
          
Unfortunately, the approach of inspecting fields in the Originate action against
known applications/functions has a significant flaw. The predefined set of
values can be bypassed by creative use of the Originate action or by certain
dialplan configurations, which is beyond the ability of Asterisk to analyze at
run-time. Attempting to work around these scenarios would result in severely         
restricting the applications or functions and prevent their usage for legitimate
means. As such, any additional security vulnerabilities, where an
application/function that would normally require the "system" class
authorization can be executed by users with the "originate" class authorization,
will not be addressed. Instead, the README-SERIOUSLY.bestpractices.txt file has
been updated to reflect that the AMI Originate action can result in commands
requiring the "system" class authorization to be executed. Proper system
configuration can limit the impact of such scenarios.         
          
(closes issue ASTERISK-20132)
Reported by: Zubair Ashraf of IBM X-Force Research
........

Merged revisions 371998 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........

Merged revisions 371999 from http://svn.asterisk.org/svn/asterisk/branches/10
........

Merged revisions 372000 from http://svn.asterisk.org/svn/asterisk/branches/11


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@372001 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-08-30 16:14:26 +00:00
..
editline Enable usage of system-provided NetBSD editline library if available. 2012-07-25 12:21:54 +00:00
stdtime Multiple revisions 369001-369002 2012-06-15 16:20:16 +00:00
Makefile Repair editline builds using in-tree editline sources. 2012-07-25 14:27:48 +00:00
abstract_jb.c Unit tests for the Jitter Buffer API; remove unnecessary resync 2012-07-23 21:15:26 +00:00
acl.c Allow permit/deny ACL lines to contain multiple items and negated entries. 2012-07-24 16:47:33 +00:00
adsi.c Fix crash in unloading of res_adsi module 2012-06-26 13:23:12 +00:00
alaw.c Multiple revisions 369001-369002 2012-06-15 16:20:16 +00:00
aoc.c Multiple revisions 369001-369002 2012-06-15 16:20:16 +00:00
app.c Clean up and ensure proper usage of alloca() 2012-07-31 20:21:43 +00:00
ast_expr2.c Allow the REALTIME() function to report errors back to the caller. 2012-07-11 17:16:50 +00:00
ast_expr2.fl Avoid cppcheck warnings; removing unused vars and a bit of cleanup. 2012-04-17 18:57:40 +00:00
ast_expr2.h Allow the REALTIME() function to report errors back to the caller. 2012-07-11 17:16:50 +00:00
ast_expr2.y Multiple revisions 360356-360357 2012-03-24 02:42:42 +00:00
ast_expr2f.c Allow the REALTIME() function to report errors back to the caller. 2012-07-11 17:16:50 +00:00
asterisk.c Clean up and ensure proper usage of alloca() 2012-07-31 20:21:43 +00:00
asterisk.dynamics Remove the old stub files, preferring the optional_api method. 2010-07-14 20:48:59 +00:00
asterisk.exports.in Add new config-parsing framework 2012-06-01 16:33:25 +00:00
astfd.c Multiple revisions 369001-369002 2012-06-15 16:20:16 +00:00
astmm.c Clean up and ensure proper usage of alloca() 2012-07-31 20:21:43 +00:00
astobj2.c Make astobj2.h not include linkedlists.h. 2012-08-01 18:52:29 +00:00
audiohook.c Clean up doxygen warnings 2012-08-30 14:23:28 +00:00
autochan.c Multiple revisions 369001-369002 2012-06-15 16:20:16 +00:00
autoservice.c Hangup handlers - Dialplan subroutines that run when the channel hangs up. 2012-06-29 17:02:32 +00:00
bridging.c Fix bridging thread leak. 2012-07-06 15:31:52 +00:00
buildinfo.c fix a few small things found by using sparse 2008-10-30 16:49:02 +00:00
callerid.c Clean up and ensure proper usage of alloca() 2012-07-31 20:21:43 +00:00
ccss.c Ensure that all ast_datastore_info structures are 'const'. 2012-07-18 17:18:20 +00:00
cdr.c Clean up doxygen warnings 2012-08-30 14:23:28 +00:00
cel.c Fix compiler warnings. 2012-07-19 22:25:00 +00:00
channel.c Clean up doxygen warnings 2012-08-30 14:23:28 +00:00
channel_internal_api.c Add private representation of caller, connected and redirecting party ids. 2012-08-10 19:54:55 +00:00
chanvars.c Multiple revisions 369001-369002 2012-06-15 16:20:16 +00:00
cli.c Add private representation of caller, connected and redirecting party ids. 2012-08-10 19:54:55 +00:00
config.c Add scoped locks to Asterisk. 2012-08-21 19:04:32 +00:00
config_options.c Fix segfault introduced by conversion to ACO API 2012-07-21 13:25:26 +00:00
cygload.c Kill off red blobs in most of main/* 2012-03-22 19:51:16 +00:00
data.c Multiple revisions 369001-369002 2012-06-15 16:20:16 +00:00
datastore.c Multiple revisions 369001-369002 2012-06-15 16:20:16 +00:00
db.c Clean up and ensure proper usage of alloca() 2012-07-31 20:21:43 +00:00
devicestate.c Multiple revisions 369001-369002 2012-06-15 16:20:16 +00:00
dial.c Multiple revisions 369001-369002 2012-06-15 16:20:16 +00:00
dns.c Multiple revisions 369001-369002 2012-06-15 16:20:16 +00:00
dnsmgr.c Multiple revisions 369001-369002 2012-06-15 16:20:16 +00:00
dsp.c mf_detect: incorrectly used DTMF_GSIZE instead of MF_GSIZE 2012-08-26 23:10:30 +00:00
ecdisa.h Kill off red blobs in most of main/* 2012-03-22 19:51:16 +00:00
enum.c Multiple revisions 369001-369002 2012-06-15 16:20:16 +00:00
event.c Move event cache updates into event processing thread. 2012-07-31 20:33:57 +00:00
features.c Add private representation of caller, connected and redirecting party ids. 2012-08-10 19:54:55 +00:00
file.c Clean up doxygen warnings 2012-08-30 14:23:28 +00:00
fixedjitterbuf.c Multiple revisions 369001-369002 2012-06-15 16:20:16 +00:00
fixedjitterbuf.h Kill off red blobs in most of main/* 2012-03-22 19:51:16 +00:00
format.c Add support for parsing SDP attributes, generating SDP attributes, and passing it through. 2012-07-13 16:49:40 +00:00
format_cap.c Multiple revisions 369001-369002 2012-06-15 16:20:16 +00:00
format_pref.c Multiple revisions 369001-369002 2012-06-15 16:20:16 +00:00
frame.c Rewrite a comment that didn't adequately explain the code it was documenting. 2012-07-24 16:54:26 +00:00
framehook.c Multiple revisions 369001-369002 2012-06-15 16:20:16 +00:00
fskmodem.c Multiple revisions 369001-369002 2012-06-15 16:20:16 +00:00
fskmodem_float.c Multiple revisions 369001-369002 2012-06-15 16:20:16 +00:00
fskmodem_int.c Multiple revisions 369001-369002 2012-06-15 16:20:16 +00:00
global_datastores.c Multiple revisions 369001-369002 2012-06-15 16:20:16 +00:00
hashtab.c Multiple revisions 369001-369002 2012-06-15 16:20:16 +00:00
heap.c Multiple revisions 369001-369002 2012-06-15 16:20:16 +00:00
http.c Remove old debug code from http configuration loading 2012-08-18 02:09:30 +00:00
image.c Multiple revisions 369001-369002 2012-06-15 16:20:16 +00:00
indications.c Multiple revisions 369001-369002 2012-06-15 16:20:16 +00:00
io.c Multiple revisions 369001-369002 2012-06-15 16:20:16 +00:00
jitterbuf.c Multiple revisions 369001-369002 2012-06-15 16:20:16 +00:00
libasteriskssl.c Fix initial loading problem with res_curl 2012-07-10 13:34:15 +00:00
libasteriskssl.exports.in Address OpenSSL initialization issues when using third-party libraries. 2012-01-30 21:21:16 +00:00
loader.c Add instrumentation to subsystem reloads 2012-08-17 16:01:32 +00:00
lock.c Fixes ast_rwlock_timed[rd|wr]lock for BSD and variants. 2012-08-27 16:56:56 +00:00
logger.c Clean up and ensure proper usage of alloca() 2012-07-31 20:21:43 +00:00
manager.c AST-2012-012: Resolve AMI User Unauthorized Shell Access through ExternalIVR 2012-08-30 16:14:26 +00:00
md5.c md5: supress some compiler warnings. 2012-04-28 01:33:49 +00:00
message.c Add the ability to specify technology specific documentation 2012-07-19 22:17:13 +00:00
named_acl.c Clean up doxygen warnings 2012-08-30 14:23:28 +00:00
netsock.c Multiple revisions 369001-369002 2012-06-15 16:20:16 +00:00
netsock2.c Fix NULL pointer segfault in ast_sockaddr_parse() 2012-06-20 02:07:00 +00:00
pbx.c Clean up doxygen warnings 2012-08-30 14:23:28 +00:00
plc.c Multiple revisions 369001-369002 2012-06-15 16:20:16 +00:00
poll.c Merged revisions 285268 via svnmerge from 2010-09-07 19:09:08 +00:00
presencestate.c Multiple revisions 369001-369002 2012-06-15 16:20:16 +00:00
privacy.c Multiple revisions 369001-369002 2012-06-15 16:20:16 +00:00
rtp_engine.c Create the payload type if it does not exist when setting information based on the 'm' line. An rtpmap attribute is not required for defined payload numbers. 2012-08-08 20:47:29 +00:00
say.c Clean up and ensure proper usage of alloca() 2012-07-31 20:21:43 +00:00
sched.c Multiple revisions 369001-369002 2012-06-15 16:20:16 +00:00
security_events.c Multiple revisions 369001-369002 2012-06-15 16:20:16 +00:00
sha1.c Kill off red blobs in most of main/* 2012-03-22 19:51:16 +00:00
slinfactory.c Multiple revisions 369001-369002 2012-06-15 16:20:16 +00:00
srv.c Multiple revisions 369001-369002 2012-06-15 16:20:16 +00:00
strcompat.c Clean up and ensure proper usage of alloca() 2012-07-31 20:21:43 +00:00
strings.c Multiple revisions 369001-369002 2012-06-15 16:20:16 +00:00
stun.c When receiving a STUN binding request send one out as the Google Talk client uses this as a method to determine if the remote party is still reachable or not. 2012-07-09 22:38:25 +00:00
syslog.c Multiple revisions 369001-369002 2012-06-15 16:20:16 +00:00
taskprocessor.c Multiple revisions 369001-369002 2012-06-15 16:20:16 +00:00
tcptls.c Clean up and ensure proper usage of alloca() 2012-07-31 20:21:43 +00:00
tdd.c Multiple revisions 369001-369002 2012-06-15 16:20:16 +00:00
term.c Multiple revisions 369001-369002 2012-06-15 16:20:16 +00:00
test.c Tweak unit test warning message. 2012-07-30 23:26:51 +00:00
threadstorage.c Clean up and ensure proper usage of alloca() 2012-07-31 20:21:43 +00:00
timing.c Multiple revisions 369001-369002 2012-06-15 16:20:16 +00:00
translate.c Add support for parsing SDP attributes, generating SDP attributes, and passing it through. 2012-07-13 16:49:40 +00:00
udptl.c Ignore recovered zero-length secondary UDPTL packets 2012-08-20 15:39:15 +00:00
ulaw.c Multiple revisions 369001-369002 2012-06-15 16:20:16 +00:00
utils.c Implement workaround for BETTER_BACKTRACES crash 2012-08-27 14:13:44 +00:00
xml.c Multiple revisions 369001-369002 2012-06-15 16:20:16 +00:00
xmldoc.c Fix misuses of asprintf throughout the code. 2012-08-21 21:01:11 +00:00