[asterisk-bugs] [JIRA] (ASTERISK-24805) ASAN: Race condition (heap-use-after-free) on asterisk closing

Badalian Vyacheslav (JIRA) noreply at issues.asterisk.org
Tue Feb 17 17:15:34 CST 2015


Badalian Vyacheslav created ASTERISK-24805:
----------------------------------------------

             Summary: ASAN: Race condition (heap-use-after-free) on asterisk closing
                 Key: ASTERISK-24805
                 URL: https://issues.asterisk.org/jira/browse/ASTERISK-24805
             Project: Asterisk
          Issue Type: Bug
      Security Level: None
            Reporter: Badalian Vyacheslav
            Severity: Minor


Bugs: 

{code}
==24513==ERROR: AddressSanitizer: heap-use-after-free on address 0x60d0000055d0 at pc 0x604543 bp 0x7f49e2653810 sp 0x7f49e2653808
READ of size 4 at 0x60d0000055d0 thread T44
    #0 0x604542 in ast_hashtab_lookup /root/asterisk-11.15.0/main/hashtab.c:543
    #1 0x6a76b7 in find_context /root/asterisk-11.15.0/main/pbx.c:6948
    #2 0x6a76b7 in pbx_find_extension /root/asterisk-11.15.0/main/pbx.c:3150
    #3 0x6b24a1 in pbx_extension_helper /root/asterisk-11.15.0/main/pbx.c:4840
    #4 0x6b2d98 in ast_exists_extension /root/asterisk-11.15.0/main/pbx.c:6012
    #5 0x7f49f054140a in get_destination /root/asterisk-11.15.0/channels/chan_sip.c:17530
    #6 0x7f49f06100d7 in handle_request_invite /root/asterisk-11.15.0/channels/chan_sip.c:25628
    #7 0x7f49f061d212 in handle_incoming /root/asterisk-11.15.0/channels/chan_sip.c:28339
    #8 0x7f49f06222da in handle_request_do /root/asterisk-11.15.0/channels/chan_sip.c:28548
    #9 0x7f49f0623a71 in _sip_tcp_helper_thread /root/asterisk-11.15.0/channels/chan_sip.c:3041
    #10 0x7339b4 in handle_tcptls_connection /root/asterisk-11.15.0/main/tcptls.c:684
    #11 0x74f33f in dummy_start /root/asterisk-11.15.0/main/utils.c:1223
    #12 0x7f4a080629d0 in start_thread (/lib64/libpthread.so.0+0x79d0)
    #13 0x7f4a087e88fc in clone (/lib64/libc.so.6+0xe88fc)

{code}

{code}
==23657==ERROR: AddressSanitizer: heap-use-after-free on address 0x60b00002fb08 at pc 0x69b388 bp 0x7f1fa219c320 sp 0x7f1fa219c318
READ of size 8 at 0x60b00002fb08 thread T111
    #0 0x69b387 in pbx_exec /root/asterisk-11.15.0/main/pbx.c:1623
    #1 0x6b2273 in pbx_extension_helper /root/asterisk-11.15.0/main/pbx.c:4915
    #2 0x6c0aa8 in ast_spawn_extension /root/asterisk-11.15.0/main/pbx.c:6037
    #3 0x6c0aa8 in __ast_pbx_run /root/asterisk-11.15.0/main/pbx.c:6512
    #4 0x6c30ca in pbx_thread /root/asterisk-11.15.0/main/pbx.c:6842
    #5 0x74f33f in dummy_start /root/asterisk-11.15.0/main/utils.c:1223
    #6 0x7f1fd66db9d0 in start_thread (/lib64/libpthread.so.0+0x79d0)
    #7 0x7f1fd6e618fc in clone (/lib64/libc.so.6+0xe88fc)
{code}

To reproduce:
# add to chan_sip.conf 
{code}
[sipp]
type=friend
context=from-internal
host=dynamic
port=6000
user=sipp
canreinvite=no
disallow=all
allow=alaw
allow=ulaw
{code}

# add to extentions.conf
{code}
[from-internal]
exten => 766,1,Answer()
exten => 766,n,MusicOnHold(,5)
exten => 766,n,Hangup
{code}

# run {{asterisk -gc}} with ASAN (valgrind i think also found this bug)
# run at another console {{./sipp -sn uac -d 10000 -s 766 127.0.0.1  -mp 5606 -s 766 -l 1000 -r 100  -t t1}}
# stop asterisk with {{core stop now}} or {{ctrl+c}}

You will see race condition in thread closing order and then use after free. As i show at start of description




--
This message was sent by Atlassian JIRA
(v6.2#6252)



More information about the asterisk-bugs mailing list