Atozed Forums

Full Version: SSL/TLS: BREACH attack against HTTP compression
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Kindly assist to resolve the below issue.
I am using the version 15.2.62

'SSL/TLS connections are vulnerable to the 'BREACH' (Browser Reconnaissance & Exfiltration via Adaptive Compression of Hypertext) attack.Angelo Prado Neal Harris and Yoel Gluck reported that SSL/TLS attacks are still viable via a 'BREACH' (Browser Reconnaissance & Exfiltration via Adaptive Compression of Hypertext) attack which they describe as: While CRIME was mitigated by disabling TLS/SPDY compression (and by modifying gzip to allow for explicit separation of compression contexts in SPDY) BREACH attacks HTTP responses. These are compressed using the common HTTP compression which is much more common than TLS-level compression. This allows essentially the same attack demonstrated by Duong and Rizzo but without relying on TLS-level compression (as they anticipated). It is important to note that the attack is agnostic to the version of TLS/SSL and does not require TLS-layer compression. Additionally the attack works against any cipher suite. Against a stream cipher the attack is simpler: The difference in sizes across response bodies is much more granular in this case. If a block cipher is used additional work must be done to align the output to the cipher text blocks.The flaw makes it easier for man-in-the-middle attackers to obtain plaintext secret values.'


Recommendation:
Mitigation The following mitigation possibilities are available: 1. Disabling HTTP compression 2. Separating secrets from user input 3. Randomizing secrets per request 4. Masking secrets (effectively randomizing by XORing with a random secret per request) 5. Protecting vulnerable pages with CSRF 6. Length hiding (by adding random number of bytes to the responses) 7. Rate-limiting the requests Note: The mitigations are ordered by effectiveness (not by their practicality - as this may differ from one application to another).
Are you using Indy based server? If so, what's your OpenSSL versions?
(10-17-2022, 07:48 AM)Alexandre Machado Wrote: [ -> ]Are you using Indy based server? If so, what's your OpenSSL versions?
yes using SA server. as you advised last time we are using the dlls from the below link


https://indy.fulgan.com/SSL/openssl-1.0....-win64.zip
(10-25-2022, 07:28 AM)pgnair Wrote: [ -> ]
(10-17-2022, 07:48 AM)Alexandre Machado Wrote: [ -> ]Are you using Indy based server? If so, what's your OpenSSL versions?
yes using SA server. as you advised last time we are using the dlls from the below link


https://indy.fulgan.com/SSL/openssl-1.0....-win64.zip

Sorry,  did you get a chance to look on it please?
BREACH attack is extremely difficult to happen in practice (it requires several conditions to be met simultaneously). Most sites and applications just ignore this risk.

It can be easily avoided by disabling the HTTP compression, something that we are strongly against because it will just make your application slower for no reason.

Other than that, you can mitigate the risk by using CheckFormId and CheckWindowId (both options from ServerController.SecuirtyOptions). Combined these options prevent all sorts of CSRF attacks, including BREACH attack. I recommend you to start with CheckFormId only (in case CheckWindowId is not set). This option alone should be enough to stop it.
(11-08-2022, 06:44 AM)Alexandre Machado Wrote: [ -> ]BREACH attack is extremely difficult to happen in practice (it requires several conditions to be met simultaneously). Most sites and applications just ignore this risk.

It can be easily avoided by disabling the HTTP compression, something that we are strongly against because it will just make your application slower for no reason.

Other than that, you can mitigate the risk by using CheckFormId and CheckWindowId (both options from ServerController.SecuirtyOptions). Combined these options prevent all sorts of CSRF attacks, including BREACH attack. I recommend you to start with CheckFormId only (in case CheckWindowId is not set). This option alone should be enough to stop it.

I am also not interested to disable the HTTP compression as it will affect the performance.

CheckwindowID is already enabled. I will enable the CheckFormID and check it

Thank you very much
CheckFormID is a unique identifier (as the name states, each form has its own ID) which is sent in each request and guarantees that the sender is not someone impersonating a legitimate user. IntraWeb will just refuse to process a requests if the FormID doesn't match. This alone is enough to stop most CSRF attacks including BREACH.
Possibly you just need to explain this to the auditors.