Issues
- Use ConcurrentSkipListMap in SASLAuthentication.REGISTERED_MECHANISMSSMACK-751Resolved issue: SMACK-751Florian Schmaus
- Raise Smack's minimum required Android SDK level to 19 (Android 4.4, Kit Kat, 2013-10)SMACK-750Resolved issue: SMACK-750Florian Schmaus
- SCRAM-SHA-1 and SCRAM-SHA-1-PLUS SASL mechanisms have the same priority, causing SASL authentication failuresSMACK-749Resolved issue: SMACK-749Florian Schmaus
- Add support for RFC 6125: Representation and Verification of Domain-Based Application Service Identity within Internet Public Key Infrastructure Using X.509 (PKIX) Certificates in the Context of Transport Layer Security (TLS)SMACK-748
- Add support for XEP-0363: HTTP File UploadSMACK-747Resolved issue: SMACK-747grigory.fedorov@redsolution.ru
- Add support for XEP-0380: Explicit Message EncryptionSMACK-746Resolved issue: SMACK-746Florian Schmaus
- Memory leak in MultiUserChatSMACK-745Resolved issue: SMACK-745Florian Schmaus
- Add support for XEP-0231: Bits of BinarySMACK-744Resolved issue: SMACK-744
- Add support for XEP-0384: OMEMO EncryptionSMACK-743Resolved issue: SMACK-743vanitasvitae
- Add support for XEP-0133: Service AdministrationSMACK-742Resolved issue: SMACK-742Florian Schmaus
- Ad-hoc command 'note' element 'type' attribute should be treated as optionalSMACK-741Resolved issue: SMACK-741Florian Schmaus
- Add support for Multi-User Chat LightSMACK-740Resolved issue: SMACK-740Florian Schmaus
- Smack starts SASL step without TLS in case STARTTLS is stripped even if SecurityMode.Required is usedSMACK-739Resolved issue: SMACK-739Florian Schmaus
- Add support for Push Notifications (XEP-0357)SMACK-738Resolved issue: SMACK-738Florian Schmaus
- Add support for Bits of Binary (XEP-0231)SMACK-737Resolved issue: SMACK-737
- Add support for Chat Markers (XEP-0333)SMACK-736Resolved issue: SMACK-736Fernando Ramirez
- Smack sometimes sends invalid SCRAM-SHA1 nonceSMACK-735Resolved issue: SMACK-735Florian Schmaus
- Send Stream Management acknoweldgement (<a/>) before closing the streamSMACK-734Resolved issue: SMACK-734
- Handle outgoing 'unavailable' Presences in RosterSMACK-733Resolved issue: SMACK-733
- Smack should be able to handle "single equals sign" SASL responsesSMACK-732Resolved issue: SMACK-732
- Add support for XEP-0191: Blocking CommandSMACK-731Resolved issue: SMACK-731
- SASL DIGEST-MD5 digest-uri is wrongSMACK-730Resolved issue: SMACK-730Florian Schmaus
- Not all providers from smack-legacy.jar are loadedSMACK-729Resolved issue: SMACK-729Florian Schmaus
- Enhanced Debugger does not see some IQ requestsSMACK-728
- Add partial support for the IoT XEPs (XEP-0323, -0324, -0325, -0347)SMACK-727Resolved issue: SMACK-727Florian Schmaus
- 'purge' and 'remove' IQ of XEP-0013 must be of type 'set'SMACK-726Resolved issue: SMACK-726Florian Schmaus
- ReconnectionManager should handle AlreadyConnectedException and AlreadyLoggedInException not as failureSMACK-725Resolved issue: SMACK-725Florian Schmaus
- Do not re-use the Socket after connect() failed.SMACK-724Resolved issue: SMACK-724Florian Schmaus
- Support "Caps Optimizations" (XEP-0115 § 8.4)SMACK-723Resolved issue: SMACK-723Florian Schmaus
- SASL X-OAUTH2 implementation incorrectly performs Base64 encoding twiceSMACK-722Resolved issue: SMACK-722Florian Schmaus
- Report illegal Stream Management states to avoid OOM ExceptionSMACK-721Resolved issue: SMACK-721Florian Schmaus
- Improve support for Tor and Hidden Services.SMACK-720Resolved issue: SMACK-720Florian Schmaus
- XMPPError should use Locale.US in toUpperCase()SMACK-719Resolved issue: SMACK-719Florian Schmaus
- Prevent extremely long reply timeouts from being setSMACK-718Resolved issue: SMACK-718Florian Schmaus
- Add GS2 SASL (RFC 5801) API to SmackSMACK-717
- EntityTimeManager.getTime() does not set the recipients JIDSMACK-716Resolved issue: SMACK-716Florian Schmaus
- Add Roster.setRosterLoadedAtLoginDefault(boolean)SMACK-715Resolved issue: SMACK-715Florian Schmaus
- Add support for XEP-0308: Last Message CorrectionSMACK-714
- Add support for RFC 7628: SASL Mechanism for OAuthSMACK-713
- XMPPTCPConnection's setEnabledSSL(ProtocolsSMACK-712Resolved issue: SMACK-712Florian Schmaus
- Improve the logging of TCP connection attempts.SMACK-711Resolved issue: SMACK-711Florian Schmaus
- SASL DIGEST-MD5 backslash must be quotedSMACK-710Resolved issue: SMACK-710Florian Schmaus
- Don't request delivery receipts for messages without a bodySMACK-709Resolved issue: SMACK-709Florian Schmaus
- DeliveryReceipt(Manager) should ensure that receipts (and requests) have an ID setSMACK-708Resolved issue: SMACK-708Florian Schmaus
- Infinite loop of NullPointerExceptions in Socks5ProxySMACK-707Resolved issue: SMACK-707Florian Schmaus
- Smack may sends <bind/> and <session/> twice if Stream Management is used and a previous SM state existsSMACK-706Resolved issue: SMACK-706Florian Schmaus
- PubSub's Affiliation.getElementName() returns wrong nameSMACK-705Resolved issue: SMACK-705Florian Schmaus
- Pass down Message stanza in ChatStateListenerSMACK-704Resolved issue: SMACK-704Florian Schmaus
- Limit the stored presences of entities not in RosterSMACK-703Resolved issue: SMACK-703Florian Schmaus
- RejectedExecutionException in AbstractXMPPConnection.processPacket() causes connection TerminationSMACK-702Resolved issue: SMACK-702Florian Schmaus
50 of 900
Smack starts SASL step without TLS in case STARTTLS is stripped even if SecurityMode.Required is used
Fixed
Description
Environment
None
Details
Assignee
Florian SchmausFlorian SchmausReporter
Florian SchmausFlorian SchmausExpected Effort
MediumComponents
Fix versions
Affects versions
Priority
Critical
Details
Details
Assignee
Florian Schmaus
Florian SchmausReporter
Florian Schmaus
Florian SchmausExpected Effort
Medium
Components
Fix versions
Affects versions
Priority
Created November 11, 2016 at 6:07 PM
Updated January 13, 2017 at 7:10 PM
Resolved November 19, 2016 at 1:24 PM
Activity
Show:
Summary
Smack prior 4.1.9 is vulnerable to "Strip STARTTLS" kind of attacks. A network attacker could use this to mount a Man-in-the-Middle attack on TLS secured connections. This is [https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2016-10027|CVE-2016-10027].
Further Details
Requires the server to announce SASL mechanisms in case the server requires TLS. But this is trivial to do by MitM injection, although most "Strip STARTTLS" tools don't do it. If they do, an attacker would also be able to gain access to the initial response data of SASL. In case of SASL PLAIN, this would be the plain text secrect/password.
The underlying faulty implementation is as old as 8e750912a765f77a4f178a4f307a8b42c2afb5ae, maybe even older.
Quick Fix
A simple workaround may be checking the return value of
isSecureConnection()
between the calls ofconnect()
andlogin()
. For example if you currently haveXMPPTCPConnection connection = ... connection.connect().login();
then change this to
XMPPTCPConnection connection = ... connection.connect(); if (!connection.isSecureConnection() && connection.getConfiguration().getSecurityMode() == SecurityMode.Required) { connection.instantShutdown(); throw new SecurityRequiredByClientException(); } connection.login();
Timeline
Date
2016-11-10
Reported to security@igniterealtime.org
2016-11-11
Verified, requested CVE and prepared fix
2016-11-15
Fix tested
2016-11-19
Released Smack 4.1.9 with fix to Maven Central
2016-11-22
Public Smack Security Advisory
2016-12-09
Made https://igniterealtime.atlassian.net/browse/SMACK-739#icft=SMACK-739 public