diff --git a/CHANGES b/CHANGES
index 7dd1aac27e9b7008d01ac1fe8aa2b711efa6beb9..0295e8a3159e895d218125f2efeeef63cf1f1172 100644
--- a/CHANGES
+++ b/CHANGES
@@ -21,6 +21,11 @@ Core
    Asterisk is compiled with the LOW_MEMORY compile time option enabled because
    the cache code does not exist.
 
+chan_sip
+------------------
+ * Calls to invalid extensions are now reported as an ACL failure security event
+   "no_extension_match".
+
 res_pjsip
 ------------------
  * The "identify_by" on endpoints can now be set to "ip" to restrict an endpoint
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 9add425649fc6df7ecc51fd04d493133c266a445..522e9d1d6e12155ba66156d451e050c30027ea5a 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -26405,6 +26405,7 @@ static int handle_request_invite(struct sip_pvt *p, struct sip_request *req, str
 					ast_log(LOG_NOTICE, "Call from '%s' (%s) to extension"
 						" '%s' rejected because extension not found in context '%s'.\n",
 						S_OR(p->username, p->peername), ast_sockaddr_stringify(&p->recv), decoded_exten, p->context);
+					sip_report_failed_acl(p, "no_extension_match");
 				}
 				break;
 			case SIP_GET_DEST_REFUSED: