I am still a little unclear by what exactly TLS_FALLBACK_SCSV option would
do.

What if the server only supports SSLv3 + TLSv1 and client only  connects
with SSLv3? Without the patch, both would agree to SSLv3. So this is a
problem.

What happens with the patch only on the server? And what happens with the
both server and client patched?



On Fri, Oct 24, 2014 at 9:30 AM, Jakob Bohm <jb-open...@wisemo.com> wrote:

>  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>
> 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