Medium severity5.9NVD Advisory· Published Feb 9, 2017· Updated May 13, 2026
CVE-2017-5858
CVE-2017-5858
Description
An incorrect implementation of "XEP-0280: Message Carbons" in multiple XMPP clients allows a remote attacker to impersonate any user, including contacts, in the vulnerable application's display. This allows for various kinds of social engineering attacks. This CVE is for Converse.js (0.8.0 - 1.0.6, 2.0.0 - 2.0.4).
Affected packages
Versions sourced from the GitHub Security Advisory.
| Package | Affected versions | Patched versions |
|---|---|---|
converse.jsnpm | < 1.0.7 | 1.0.7 |
converse.jsnpm | >= 2.0.0, < 2.0.5 | 2.0.5 |
Affected products
28cpe:2.3:a:conversejs:converse.js:0.10.0:*:*:*:*:*:*:*+ 27 more
- cpe:2.3:a:conversejs:converse.js:0.10.0:*:*:*:*:*:*:*
- cpe:2.3:a:conversejs:converse.js:0.10.1:*:*:*:*:*:*:*
- cpe:2.3:a:conversejs:converse.js:0.8.0:*:*:*:*:*:*:*
- cpe:2.3:a:conversejs:converse.js:0.8.1:*:*:*:*:*:*:*
- cpe:2.3:a:conversejs:converse.js:0.8.2:*:*:*:*:*:*:*
- cpe:2.3:a:conversejs:converse.js:0.8.3:*:*:*:*:*:*:*
- cpe:2.3:a:conversejs:converse.js:0.8.4:*:*:*:*:*:*:*
- cpe:2.3:a:conversejs:converse.js:0.8.5:*:*:*:*:*:*:*
- cpe:2.3:a:conversejs:converse.js:0.8.6:*:*:*:*:*:*:*
- cpe:2.3:a:conversejs:converse.js:0.9.0:*:*:*:*:*:*:*
- cpe:2.3:a:conversejs:converse.js:0.9.1:*:*:*:*:*:*:*
- cpe:2.3:a:conversejs:converse.js:0.9.2:*:*:*:*:*:*:*
- cpe:2.3:a:conversejs:converse.js:0.9.3:*:*:*:*:*:*:*
- cpe:2.3:a:conversejs:converse.js:0.9.4:*:*:*:*:*:*:*
- cpe:2.3:a:conversejs:converse.js:0.9.5:*:*:*:*:*:*:*
- cpe:2.3:a:conversejs:converse.js:0.9.6:*:*:*:*:*:*:*
- cpe:2.3:a:conversejs:converse.js:1.0.0:*:*:*:*:*:*:*
- cpe:2.3:a:conversejs:converse.js:1.0.1:*:*:*:*:*:*:*
- cpe:2.3:a:conversejs:converse.js:1.0.2:*:*:*:*:*:*:*
- cpe:2.3:a:conversejs:converse.js:1.0.3:*:*:*:*:*:*:*
- cpe:2.3:a:conversejs:converse.js:1.0.4:*:*:*:*:*:*:*
- cpe:2.3:a:conversejs:converse.js:1.0.5:*:*:*:*:*:*:*
- cpe:2.3:a:conversejs:converse.js:1.0.6:*:*:*:*:*:*:*
- cpe:2.3:a:conversejs:converse.js:2.0.0:*:*:*:*:*:*:*
- cpe:2.3:a:conversejs:converse.js:2.0.1:*:*:*:*:*:*:*
- cpe:2.3:a:conversejs:converse.js:2.0.2:*:*:*:*:*:*:*
- cpe:2.3:a:conversejs:converse.js:2.0.3:*:*:*:*:*:*:*
- cpe:2.3:a:conversejs:converse.js:2.0.4:*:*:*:*:*:*:*
Patches
142f249cabbbfPrevent forging of messages via carbons.
3 files changed · +53 −2
docs/CHANGES.md+1 −0 modified@@ -10,6 +10,7 @@ - Bugfix. Login form wasn't rendered after logging out (when `auto_reconnect` is `true`). [jcbrand] - Bugfix. Properly disconnect upon "host-unknown" error. [jcbrand] - Bugfix. Minimized chats weren't removed when logging out. [jcbrand] +- Security fix: Prevent message forging via carbons. (Thanks to ge0rg) [jcbrand] ## 2.0.4 (2016-12-13) - #737: Bugfix. Translations weren't being applied. [jcbrand]
spec/chatbox.js+44 −1 modified@@ -766,7 +766,7 @@ var msgtext = 'This is a carbon message'; var sender_jid = mock.cur_names[1].replace(/ /g,'.').toLowerCase() + '@localhost'; var msg = $msg({ - 'from': converse.bare_jid, + 'from': sender_jid, 'id': (new Date()).getTime(), 'to': converse.connection.jid, 'type': 'chat', @@ -844,6 +844,49 @@ expect(msg_txt).toEqual(msgtext); })); + it("will be discarded if it's a malicious message meant to look like a carbon copy", mock.initConverse(function (converse) { + test_utils.createContacts(converse, 'current'); + test_utils.openControlBox(); + test_utils.openContactsPanel(converse); + /* <message from="mallory@evil.example" to="b@xmpp.example"> + * <received xmlns='urn:xmpp:carbons:2'> + * <forwarded xmlns='urn:xmpp:forward:0'> + * <message from="alice@xmpp.example" to="bob@xmpp.example/client1"> + * <body>Please come to Creepy Valley tonight, alone!</body> + * </message> + * </forwarded> + * </received> + * </message> + */ + spyOn(converse, 'log'); + var msgtext = 'Please come to Creepy Valley tonight, alone!'; + var sender_jid = mock.cur_names[1].replace(/ /g,'.').toLowerCase() + '@localhost'; + var impersonated_jid = mock.cur_names[2].replace(/ /g,'.').toLowerCase() + '@localhost'; + var msg = $msg({ + 'from': sender_jid, + 'id': (new Date()).getTime(), + 'to': converse.connection.jid, + 'type': 'chat', + 'xmlns': 'jabber:client' + }).c('received', {'xmlns': 'urn:xmpp:carbons:2'}) + .c('forwarded', {'xmlns': 'urn:xmpp:forward:0'}) + .c('message', { + 'xmlns': 'jabber:client', + 'from': impersonated_jid, + 'to': converse.connection.jid, + 'type': 'chat' + }).c('body').t(msgtext).tree(); + converse.chatboxes.onMessage(msg); + + // Check that chatbox for impersonated user is not created. + var chatbox = converse.chatboxes.get(impersonated_jid); + expect(chatbox).not.toBeDefined(); + + // Check that the chatbox for the malicous user is not created + chatbox = converse.chatboxes.get(sender_jid); + expect(chatbox).not.toBeDefined(); + })); + it("received for a minimized chat box will increment a counter on its header", mock.initConverse(function (converse) { test_utils.createContacts(converse, 'current'); test_utils.openControlBox();
src/converse-core.js+8 −1 modified@@ -1447,7 +1447,14 @@ } $forwarded = $message.find('forwarded'); if ($forwarded.length) { - $message = $forwarded.children('message'); + var $forwarded_message = $forwarded.children('message'); + if (Strophe.getBareJidFromJid($forwarded_message.attr('from')) !== from_jid) { + // Prevent message forging via carbons + // + // https://xmpp.org/extensions/xep-0280.html#security + return true; + } + $message = $forwarded_message; $delay = $forwarded.children('delay'); from_jid = $message.attr('from'); to_jid = $message.attr('to');
Vulnerability mechanics
Synthesis attempt was rejected by the grounding validator. Re-run pending.
References
11- github.com/jcbrand/converse.js/commit/42f249cabbbf5c026398e6d3b350f6f9536ea572nvdPatchWEB
- openwall.com/lists/oss-security/2017/02/09/29nvdExploitMailing ListThird Party AdvisoryWEB
- rt-solutions.de/en/2017/02/CVE-2017-5589_xmpp_carbons/nvdExploitTechnical DescriptionThird Party Advisory
- rt-solutions.de/wp-content/uploads/2017/02/CVE-2017-5589_xmpp_carbons.pdfnvdExploitTechnical DescriptionThird Party AdvisoryWEB
- github.com/advisories/GHSA-w973-2qcc-p78xghsaADVISORY
- nvd.nist.gov/vuln/detail/CVE-2017-5858ghsaADVISORY
- www.securityfocus.com/bid/96183nvdWEB
- rt-solutions.de/en/2017/02/CVE-2017-5589_xmpp_carbonsghsaWEB
- snyk.io/vuln/SNYK-JS-CONVERSEJS-449664ghsaWEB
- www.npmjs.com/advisories/974ghsaWEB
- www.openwall.com/lists/oss-security/2017/02/09/29ghsaWEB
News mentions
0No linked articles in our index yet.