On 24/10/2014 18:19, Aditya Kumar wrote:
Thanks Jakob for correcting my understanding. In short, can I conclude the following about FALLBACK flag.

1. Whenever client is sending the FALLBACK flag in its request, an updated Server will interpret it that this client supports a higher version but since that higher version protocol request was refused, its trying to connect using a lower version protocol. 2. The FALLBACK flag should only be set to communicate to those extremely rare old SSLv3 servers which completely fail to accept a request for (SSLv3 or TLSv1+, the best client have). In that case, first client should attempt to connect with SSLAUTONEGOTIATE and if it fails, then connect with SSLV3 FALLBACK enabled.
Much simpler: The FALLBACK flag should be set only to communicate that
the client has activated its manual fall back code (if any).  If the
client doesn't contain manual fallback code, it doesn't need to do
anything.
3. Points 2 holds true even for the cases where clients connecting using TLS 1.2 fail and then client need to connect using TLS 1.1, TLS1.0 or SSLV3.0. Then client should attempt the next connections using FALLBACK flag set.
Yes, SSLv3 is just an example, which happens to be important right now
because of poodle.

Hope this will clear all the confusions.

-Aditya

On Fri, Oct 24, 2014 at 5:35 PM, Jakob Bohm <jb-open...@wisemo.com <mailto:jb-open...@wisemo.com>>wrote:

    On 24/10/2014 13:33, Aditya Kumar wrote:

        Hi All,

        Thanks for your detailed responses, specially Florian Weimer
        and Matt Caswell. For the benefit of everyone and me, I am
        summarizing the thoughts which I have understood through all
        your replies. Please correct me wherever I am wrong.

        To summarize:
               1.  Best way to prevent POODLE attack is to disable
        SSLV3 on both client and server side.
        2.  If for some reason, you cannot disable SSLv3 on server
        side even if Server support TLS 1.0 or higher(e.g server
        having SSLV23 set), Server definitely need to be patched to
        prevent fallback. Once server is patched, it will prevent
        updated clients from fallback attack.
        3.  After server is patched with OpenSSL FALLBACK flag fix,
        Server’s behavior will not change for the clients which do not
        send FALLBACK flag in their clienthello request. Server will
        continue to work with older client as usual. Only if an
        updated client sends FALLBACK flag into its clienthello
        request, server will be able to prevent fallback.
        4.  If for some reason, client has to keep SSLV3 enable even
        if it supports TLS 1.0 or higher version, client need to patch
        itself and set FALLBACK flag so that it does not come under
        fallback attack.

    WRONG, See below

        5.  Clients should never set protocol as SSLV23 to support
        both SSL3.0 and TLS Servers. Clients should always explicitly
        first try to connect using its highest supported
        version(TLS1.0 or higher) and if the server rejects the
        connection, then clients should explicitly try to connect
        using next supported lower version protocol.

    WRONG, If client simply calls the SSL23_ (aka SSLAUTONEGOTIATE_) with
    options to allow both SSLv3 and higher TLSvX.XX, it is already secure
    and will never need to send the fallback flag.

        6.  While connecting to server using higher protocol like TLS1
        or higher, client should set FALLBACK flag so that server do
        not allow automatically downgrade to a lower version protocol.

    WRONG, Client should always try its full range of enabled SSL/TLS
    versions in one attempt, in which case the protocols themselves
    (even without the latest patch) will automatically detect and
    prevent a fallback MiTM attack.

    However if client needs to work around some (extremely rare) old
    SSLv3 servers which completely fail to accept a request for (SSLv3
    r TLSv1+, the best you have), that client may use a workaround of:

    Step 6.1: Attempt to connect with SSLAUTONEGOTIATE_(SSLv3 up to
    TLSv1.2).  Do not set/send FALLBACK flag.

    Step 6.2: If Step 6.1 fails (either because of old broken server or
    because of new fallback MiTM attack), try again with SSLV3ONLY_(),
    and set the FALLBACK flag to tell the server that the maximum
    version specified in this call is not the true maximum version of
    the client (in case it is not an old server, but a MiTM attack
    trying to trick this fallback code).

    Step 6.3: Step 6.2 could be extended to do retries with TLSv1.1,
    then TLSv1.0, then SSLv3 etc. all of which would need the FALLBACK
    flag because the client would actually have wanted TLSv1.2 if it
    could get it.
    **

        Few questions which still remains in my mind are:
        As part of my question’s reply, Florian replied that following:
        *Unconditionally setting SSL_MODE_SEND_FALLBACK_SCSV (if by
        default or after user configuration) is a time bomb—your
        client application will break once the server implements TLS
        1.3 (or any newer TLS version than what is supported by the
        OpenSSL version you use).  Extremely few applications have to
        deal with SSL_MODE_SEND_FALLBACK_SCSV.*
        Why client application will break if FALLBACK flag is set and
        the server is upgrade to TLS 1.3 or higher version? Isn’t that
        the server should take care of this flag  when it is updated
        with higher version protocol?

    Note: If client calls with SSLAUTONEGOTIATE_(SSLvX up to TLSv1.1)
    and sets the FALLBACK flag, then a server which understands
    TLSv1.2 will read this as "I know this call says I only understand
    up to TLSv1.1, but that is only because I think you refused my
    attempt to use TLSv1.2 or higher", and therefore the server will
    REJECT the connection as if a MiTM attack in progress.

    Note 2: If a client calls with SSLAUTONEGOTIATE_(SSLvX up to
    TLSv1.2) and sets the FALLBACK flag, then a server which understands
    TLSv1.3 will read this as "I know this call says I only understand
    up to TLSv1.2, but that is only because I think you refused my
    attempt to use TLSv1.3 or higher", and therefore the server will
    REJECT the connection as if a MiTM attack is in progress.

        Please let me know your opinion on this.
        Once again thanks everyone for your response.
        -Aditya




Enjoy

Jakob
--
Jakob Bohm, CIO, Partner, WiseMo A/S.  http://www.wisemo.com
Transformervej 29, 2860 Søborg, Denmark.  Direct +45 31 13 16 10
This public discussion message is non-binding and may contain errors.
WiseMo - Remote Service Management for PCs, Phones and Embedded

Reply via email to