[Asterisk-Dev] SIP SECURITY WARNING: v1-0 (cvs today) sip context in general section ignored goes to default instead - allowing unauthorized sip devices to place calls in default context

Andy Reinke Andy at an-ds.com
Fri Dec 3 17:47:58 MST 2004


SIP SECURITY WARNING

 

Version: v1-0 (cvs today)

 

Problem:  sip context in general section ignored - goes to default -
allowing unauthorized sip devices to place calls in default context

 

Fix [workaround]:

 

Remove or rename "default" context in extensions.conf 

 

Notes:

 

I am not sure what other asterisk functionality may be affected by this
- review your other config files for references to the "default"
context.  Test your configurations to ensure calls are landing in the
correct context.  I suggest removing "default" and creating others like
sip-default which include demo and then testing from a sip channel to
make sure you still hit the demo from a registered device but, not from
unregistered devices.  Repeat for other channels as necessary.

 

Detail:

 

I have been working with asterisk for a while now but, had never
tested/noticed this scenario - I had always created device entries in
sip.conf for any devices I tested so I never ran into this.  Today on a
new config the phone came up before I had put anything in sip.conf and I
thought - let's see what happens if we try to call someone - and it
WORKED which was the least expected behavior.

 

I am using a cisco 7960 with SIP firmware v6.3 (dosen't really matter
any sip phone will do this) With a bare asterisk build and setup of v1-0
(pulled from cvs today) on FC3 minimal + asterisk requirements + up2date
and the configs (sip, extensions) below.

 

Without placing any peer,friend,user entries in sip.conf for the phone
device/extension, I am able to make calls through the "default" context.
In the below example dialing "500" from a sip phone will execute the
inter asterisk connection test (IAX) to digium even though the context
defined in the general section of sip.conf is "sip-unauthorized" which
should play congestion and hang up (as was suggested in "Getting started
with asterisk").

 

Removing or renaming the "default" context in extensions.conf appears to
resolve this issue - congestion is played.  However, adding a real
extension such as 900 and mapping it to something like voicemail shows
that the context sip-unauthorized is not being used - also the following
error is logged on the console (verbose = 7) which hints to this as well
- and explains why congestion was played.  Instead of looking for
sip-unauthorized as expected it looked for the missing default and then
played congestion when default was not found.

 

Dec  3 20:26:42 NOTICE[15447]: pbx.c:1318 pbx_extension_helper:  Cannot
find extension context 'default'

 

 

 

Sip.conf

[general]

contex=sip-unauthorized

port=5060

bindaddr=0.0.0.0

localnet=172.16.0.0/255.255.255.0

 

<eof>

 

Extensions.conf

[general]

static=yes

writeprotect=no

 

[globals]

;CONSOLE=Console/dsp                     ; Console interface for demo

IAXINFO=guest                            ; IAXtel username/password

;TRUNK=Zap/g2                            ; Trunk interface

;TRUNKMSD=1                              ; MSD digits to strip (usually
1 or 0)

 

[macro-stdexten];

;

; Standard extension macro:

;   ${ARG1} - Extension  (we could have used ${MACRO_EXTEN} here as well

;   ${ARG2} - Device(s) to ring

;

exten => s,1,Dial(${ARG2},20)                                 ; Ring the
interface, 20 seconds maximum

exten => s,2,Goto(s-${DIALSTATUS},1)                          ; Jump
based on status (NOANSWER,BUSY,CHANUNAVAIL,CONGESTION,ANSWER)

 

exten => s-NOANSWER,1,Voicemail(u${ARG1})              ; If unavailable,
send to voicemail w/ unavail announce

exten => s-NOANSWER,2,Goto(default,s,1)                ; If they press
#, return to start

 

exten => s-BUSY,1,Voicemail(b${ARG1})                  ; If busy, send
to voicemail w/ busy announce

exten => s-BUSY,2,Goto(default,s,1)                           ; If they
press #, return to start

 

exten => _s-.,1,Goto(s-NOANSWER,1)                     ; Treat anything
else as no answer

 

exten => a,1,VoicemailMain(${ARG1})                           ; If they
press *, send the user into VoicemailMain

 

[default]

exten => 500,1,Playback(demo-abouttotry); Let them know what's going on

exten => 500,2,Dial(IAX2/guest at misery.digium.com/s at default)   ; Call the
Asterisk demo

exten => 500,3,Playback(demo-nogo) ; Couldn't connect to the demo site

exten => 500,4,Goto(s,6)          ; Return to the start over message.

 

[sip-unauthorized]

;An important point here, if you do not have a sip aware 

;firewall and are just using port forwarding then ensure 

;that your context points to somewhere like invalidcalls. 

;If you do not do this then someone could call one of your 

;extensions direct from the Internet. If you had an FXO card 

;in the machine, this could lead to them being able to make PSTN calls!!

;[from http://www.automated.it/guidetoasterisk.htm#_Toc49248767]

 

exten => s,1,Answer

exten => s,2,Playtones(congestion)

exten => s,3,Congestion

 

exten => 900,1,VoicemailMain

exten => 900,2,Hangup

 

<eof>

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.digium.com/pipermail/asterisk-dev/attachments/20041203/831f7afd/attachment.htm


More information about the asterisk-dev mailing list