bcgov / wps

Wildfire Predictive Services to support decision making in prevention, preparedness, response and recovery
Apache License 2.0
41 stars 9 forks source link

Update dependency aiohttp to v3.10.11 [SECURITY] #4108

Closed bcgov-wps closed 6 days ago

bcgov-wps commented 6 days ago

This PR contains the following updates:

Package Type Update Change
aiohttp dependencies patch 3.10.8 -> 3.10.11

GitHub Vulnerability Alerts

CVE-2024-52303

Summary

A memory leak can occur when a request produces a MatchInfoError. This was caused by adding an entry to a cache on each request, due to the building of each MatchInfoError producing a unique cache entry.

Impact

If the user is making use of any middlewares with aiohttp.web then it is advisable to upgrade immediately.

An attacker may be able to exhaust the memory resources of a server by sending a substantial number (100,000s to millions) of such requests.


Patch: https://github.com/aio-libs/aiohttp/commit/bc15db61615079d1b6327ba42c682f758fa96936

CVE-2024-52304

Summary

The Python parser parses newlines in chunk extensions incorrectly which can lead to request smuggling vulnerabilities under certain conditions.

Impact

If a pure Python version of aiohttp is installed (i.e. without the usual C extensions) or AIOHTTP_NO_EXTENSIONS is enabled, then an attacker may be able to execute a request smuggling attack to bypass certain firewalls or proxy protections.


Patch: https://github.com/aio-libs/aiohttp/commit/259edc369075de63e6f3a4eaade058c62af0df71


Release Notes

aio-libs/aiohttp (aiohttp) ### [`v3.10.11`](https://redirect.github.com/aio-libs/aiohttp/blob/HEAD/CHANGES.rst#31011-2024-11-13) [Compare Source](https://redirect.github.com/aio-libs/aiohttp/compare/v3.10.10...v3.10.11) \==================== ## Bug fixes - Authentication provided by a redirect now takes precedence over provided `auth` when making requests with the client -- by :user:`PLPeeters`. *Related issues and pull requests on GitHub:* :issue:`9436`. - Fixed :py:meth:`WebSocketResponse.close() ` to discard non-close messages within its timeout window after sending close -- by :user:`lenard-mosys`. *Related issues and pull requests on GitHub:* :issue:`9506`. - Fixed a deadlock that could occur while attempting to get a new connection slot after a timeout -- by :user:`bdraco`. The connector was not cancellation-safe. *Related issues and pull requests on GitHub:* :issue:`9670`, :issue:`9671`. - Fixed the WebSocket flow control calculation undercounting with multi-byte data -- by :user:`bdraco`. *Related issues and pull requests on GitHub:* :issue:`9686`. - Fixed incorrect parsing of chunk extensions with the pure Python parser -- by :user:`bdraco`. *Related issues and pull requests on GitHub:* :issue:`9851`. - Fixed system routes polluting the middleware cache -- by :user:`bdraco`. *Related issues and pull requests on GitHub:* :issue:`9852`. ## Removals and backward incompatible breaking changes - Improved performance of the connector when a connection can be reused -- by :user:`bdraco`. If `BaseConnector.connect` has been subclassed and replaced with custom logic, the `ceil_timeout` must be added. *Related issues and pull requests on GitHub:* :issue:`9600`. ## Miscellaneous internal changes - Improved performance of the client request lifecycle when there are no cookies -- by :user:`bdraco`. *Related issues and pull requests on GitHub:* :issue:`9470`. - Improved performance of sending client requests when the writer can finish synchronously -- by :user:`bdraco`. *Related issues and pull requests on GitHub:* :issue:`9485`. - Improved performance of serializing HTTP headers -- by :user:`bdraco`. *Related issues and pull requests on GitHub:* :issue:`9603`. - Passing `enable_cleanup_closed` to :py:class:`aiohttp.TCPConnector` is now ignored on Python 3.12.7+ and 3.13.1+ since the underlying bug that caused asyncio to leak SSL connections has been fixed upstream -- by :user:`bdraco`. *Related issues and pull requests on GitHub:* :issue:`9726`, :issue:`9736`. *** ### [`v3.10.10`](https://redirect.github.com/aio-libs/aiohttp/blob/HEAD/CHANGES.rst#31010-2024-10-10) [Compare Source](https://redirect.github.com/aio-libs/aiohttp/compare/v3.10.9...v3.10.10) \==================== ## Bug fixes - Fixed error messages from :py:class:`~aiohttp.resolver.AsyncResolver` being swallowed -- by :user:`bdraco`. *Related issues and pull requests on GitHub:* :issue:`9451`, :issue:`9455`. ## Features - Added :exc:`aiohttp.ClientConnectorDNSError` for differentiating DNS resolution errors from other connector errors -- by :user:`mstojcevich`. *Related issues and pull requests on GitHub:* :issue:`8455`. ## Miscellaneous internal changes - Simplified DNS resolution throttling code to reduce chance of race conditions -- by :user:`bdraco`. *Related issues and pull requests on GitHub:* :issue:`9454`. *** ### [`v3.10.9`](https://redirect.github.com/aio-libs/aiohttp/blob/HEAD/CHANGES.rst#3109-2024-10-04) [Compare Source](https://redirect.github.com/aio-libs/aiohttp/compare/v3.10.8...v3.10.9) \=================== ## Bug fixes - Fixed proxy headers being used in the `ConnectionKey` hash when a proxy was not being used -- by :user:`bdraco`. If default headers are used, they are also used for proxy headers. This could have led to creating connections that were not needed when one was already available. *Related issues and pull requests on GitHub:* :issue:`9368`. - Widened the type of the `trace_request_ctx` parameter of :meth:`ClientSession.request() ` and friends \-- by :user:`layday`. *Related issues and pull requests on GitHub:* :issue:`9397`. ## Removals and backward incompatible breaking changes - Fixed failure to try next host after single-host connection timeout -- by :user:`brettdh`. The default client :class:`aiohttp.ClientTimeout` params has changed to include a `sock_connect` timeout of 30 seconds so that this correct behavior happens by default. *Related issues and pull requests on GitHub:* :issue:`7342`. ## Miscellaneous internal changes - Improved performance of resolving hosts with Python 3.12+ -- by :user:`bdraco`. *Related issues and pull requests on GitHub:* :issue:`9342`. - Reduced memory required for timer objects created during the client request lifecycle -- by :user:`bdraco`. *Related issues and pull requests on GitHub:* :issue:`9406`. ***

Configuration

šŸ“… Schedule: Branch creation - "" (UTC), Automerge - At any time (no schedule defined).

šŸš¦ Automerge: Disabled by config. Please merge this manually once you are satisfied.

ā™» Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

šŸ”• Ignore: Close this PR and you won't be reminded about this update again.



This PR has been generated by Renovate Bot.

Test Links:

Landing Page MoreCast Percentile Calculator C-Haines FireBat FireBat bookmark Auto Spatial Advisory (ASA) HFI Calculator

sonarcloud[bot] commented 6 days ago

Quality Gate Passed Quality Gate passed

Issues
0 New issues
0 Accepted issues

Measures
0 Security Hotspots
0.0% Coverage on New Code
0.0% Duplication on New Code

See analysis details on SonarQube Cloud

codecov[bot] commented 6 days ago

Codecov Report

All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 80.40%. Comparing base (9ccd709) to head (2a91c73).

Additional details and impacted files ```diff @@ Coverage Diff @@ ## main #4108 +/- ## ======================================= Coverage 80.40% 80.40% ======================================= Files 309 309 Lines 11860 11860 Branches 537 537 ======================================= Hits 9536 9536 Misses 2138 2138 Partials 186 186 ```

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


šŸšØ Try these New Features:

bcgov-wps commented 5 days ago

Renovate Ignore Notification

Because you closed this PR without merging, Renovate will ignore this update (^3). You will get a PR once a newer version is released. To ignore this dependency forever, add it to the ignoreDeps array of your Renovate config.

If you accidentally closed this PR, or if you changed your mind: rename this PR to get a fresh replacement PR.