Bug 1410824 (CVE-2017-5194)

Summary: CVE-2017-5194 irssi: Use after free when receiving invalid nick message
Product: [Other] Security Response Reporter: Andrej Nemec <anemec>
Component: vulnerabilityAssignee: Red Hat Product Security <security-response-team>
Status: CLOSED WONTFIX QA Contact:
Severity: low Docs Contact:
Priority: low    
Version: unspecifiedCC: huzaifas, jskarvad, mmahut, rosser.bjr
Target Milestone: ---Keywords: Security
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: irssi 0.8.21, irssi 1.0.0 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2017-02-23 17:19:45 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 1410829, 1410830    
Bug Blocks: 1410833    

Description Andrej Nemec 2017-01-06 15:14:17 UTC
A use after free when receiving invalid nick message was found in irssi.

External References:

https://irssi.org/security/irssi_sa_2017_01.txt

Upstream patch:

https://github.com/irssi/irssi/commit/6c6c42e3d1b49d90aacc0b67f8540471cae02a1d

CVE assignment:

http://seclists.org/oss-sec/2017/q1/26

Comment 1 Andrej Nemec 2017-01-06 15:20:05 UTC
Created irssi tracking bugs for this issue:

Affects: fedora-all [bug 1410829]
Affects: epel-5 [bug 1410830]

Comment 2 Cedric Buissart 2017-02-23 16:35:47 UTC
-> The flaw could be triggered either by client itself, or by a specially crafted IRC server.

-> The particular part of the part referring to this issue is the following :
----8<----
diff --git a/src/irc/core/irc-nicklist.c b/src/irc/core/irc-nicklist.c
index bcb9d1f..f049fe7 100644
--- a/src/irc/core/irc-nicklist.c
+++ b/src/irc/core/irc-nicklist.c
@@ -314,7 +314,11 @@ static void event_whois_ircop(SERVER_REC *server, const char *data)
 static void event_nick_invalid(IRC_SERVER_REC *server, const char *data)
 {
        if (!server->connected)
-               server_disconnect((SERVER_REC *) server);
+               /* we used to call server_disconnect but that crashes
+                  irssi because of undefined memory access. instead,
+                  indicate that the connection should be dropped and
+                  let the irc method to the clean-up. */
+               server->connection_lost = server->no_reconnect = TRUE;
 }
 
 static void event_nick_in_use(IRC_SERVER_REC *server, const char *data)
---->8----

Comment 4 Cedric Buissart 2017-02-23 17:19:54 UTC
Statement:

Red Hat Product Security has rated this issue as having Low security impact. This issue is not currently planned to be addressed in future updates. For additional information, refer to the Issue Severity Classification: https://access.redhat.com/security/updates/classification/.