Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

scale down production deployment#128

Merged
thwllms merged 1 commit into
mainfema-ffrd/stormlit:mainfrom
scale-down-prodfema-ffrd/stormlit:scale-down-prodCopy head branch name to clipboard
May 29, 2026
Merged

scale down production deployment#128
thwllms merged 1 commit into
mainfema-ffrd/stormlit:mainfrom
scale-down-prodfema-ffrd/stormlit:scale-down-prodCopy head branch name to clipboard

Conversation

@barne856

@barne856 barne856 commented May 29, 2026

Copy link
Copy Markdown
Member

Scales EC2 to 0 and RDS to a micro instance. I also manually shutdown the bastion development instance. This should save roughly $300/month plus the cost of the dev EC2, but we're still paying around $100/month in RDS instance, NAT Gateway, ALB, and API Gateway NLB to make spinning things back up less time consuming

@barne856
barne856 requested a review from thwllms May 29, 2026 14:29
@github-actions

Copy link
Copy Markdown

🔍 SonarQube Analysis Results

Summary:

  • 🐛 Bugs: 1
  • 🔒 Vulnerabilities: 2
  • 🧹 Code Smells: 89
  • 📊 Total Issues: 92

📋 Detailed Reports Available

📥 Download Full Report - Click "Artifacts" section

The detailed report includes:

  • Complete breakdown by severity and type
  • Specific file locations and line numbers
  • Rule descriptions and fix suggestions
  • CSV format for spreadsheet analysis
  • Raw JSON data for custom processing

💡 Review the workflow summary for metrics and download the artifact for complete details.

@github-actions

Copy link
Copy Markdown

🔍 Vulnerabilities of ghcr.io/fema-ffrd/stormlit:pr-128

📦 Image Reference ghcr.io/fema-ffrd/stormlit:pr-128
digestsha256:d502528b8fbd08f684e8676e8f1b5c1c08203d991c4712c784b6fcbc0f15d2c2
vulnerabilitiescritical: 0 high: 4 medium: 0 low: 0
platformlinux/amd64
size1.0 GB
packages537
📦 Base Image ubuntu:24.04
also known as
  • 84bda043709f9066841484e9b8e440aa0d6d04ab49d09e367ef0fb68ace864cf
  • latest
  • noble
  • noble-20260410
digestsha256:cdb5fd928fced577cfecf12c8966e830fcdf42ee481fb0b91904eeddc2fe5eff
vulnerabilitiescritical: 0 high: 0 medium: 23 low: 3
critical: 0 high: 2 medium: 0 low: 0 urllib3 2.6.3 (pypi)

pkg:pypi/urllib3@2.6.3

# Dockerfile (46:46)
COPY --from=builder /opt/micromamba /opt/micromamba

high 8.9: CVE--2026--44432 Improper Handling of Highly Compressed Data (Data Amplification)

Affected range>=2.6.0
<2.7.0
Fixed version2.7.0
CVSS Score8.9
CVSS VectorCVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:H
EPSS Score0.019%
EPSS Percentile5th percentile
Description

Impact

urllib3's streaming API is designed for the efficient handling of large HTTP responses by reading the content in chunks, rather than loading the entire response body into memory at once.

urllib3 can perform decompression based on the HTTP Content-Encoding header (e.g., gzip, deflate, br, or zstd). When using the streaming API since version 2.6.0, the library decompresses only the necessary bytes, enabling partial content consumption.

However, urllib3 before version 2.7.0 could still decompress the whole response instead of the requested portion in two cases:

  1. During the second HTTPResponse.read(amt=N) call when the response was decompressed using the official Brotli library.
  2. When HTTPResponse.drain_conn() was called after the response had been read and decompressed partially (compression algorithm did not matter here).

These issues could cause urllib3 to fully decode a small amount of highly compressed data in a single operation. This could result in excessive resource consumption (high CPU usage and massive memory allocation for the decompressed data; CWE-409) on the client side.

Affected usages

Applications and libraries using urllib3 versions earlier than 2.7.0 may be affected when streaming compressed responses from untrusted sources in either of these cases, unless decompression is explicitly disabled:

  1. A response encoded with br is read incrementally with at least two HTTPResponse.read(amt=N) or HTTPResponse.stream(amt=N) calls while using the official Brotli library.
  2. HTTPResponse.drain_conn() is called after response decompression has already started.

Remediation

Upgrade to at least urllib3 version 2.7.0 in which the library:

  1. Is more efficient for reads with Brotli.
  2. Always skips decompression for HTTPResponse.drain_conn().

If upgrading is not immediately possible, the following workarounds may reduce exposure in specific cases:

  1. For the Brotli-specific issue only, switch from brotli to brotlicffi until you can upgrade urllib3; the official Brotli package is affected because of [Python] output_buffer_limit is not fully respected google/brotli#1396.
  2. If your code explicitly calls HTTPResponse.drain_conn(), call HTTPResponse.close() instead when connection reuse is not important.

Credits

The Brotli-specific issue was reported by @kimkou2024.
HTTPResponse.drain_conn() inefficiency was reported by @Cycloctane.

high 8.2: CVE--2026--44431 Exposure of Sensitive Information to an Unauthorized Actor

Affected range>=1.23
<2.7.0
Fixed version2.7.0
CVSS Score8.2
CVSS VectorCVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N
EPSS Score0.013%
EPSS Percentile2nd percentile
Description

Impact

When following cross-origin redirects for requests made using urllib3’s high-level APIs, such as urllib3.request(), PoolManager.request(), and ProxyManager.request(), sensitive headers — Authorization, Cookie, and Proxy-Authorization (defined in Retry.DEFAULT_REMOVE_HEADERS_ON_REDIRECT) — are stripped by default, as expected.

However, cross-origin redirects followed from the low-level API via ProxyManager.connection_from_url().urlopen(..., assert_same_host=False) still forward these sensitive headers.

Affected usage

Applications and libraries using urllib3 versions earlier than 2.7.0 may be affected if they allow cross-origin redirects while making requests through HTTPConnection.urlopen() instances created via ProxyManager.connection_from_url().

Remediation

Upgrade to urllib3 version 2.7.0 or later, in which sensitive headers are stripped from redirects followed by HTTPConnection.

If upgrading is not immediately possible, avoid using this low-level redirect flow for cross-origin redirects. If appropriate for your use case, switch to ProxyManager.request().

critical: 0 high: 2 medium: 0 low: 0 pillow 12.1.1 (pypi)

pkg:pypi/pillow@12.1.1

# Dockerfile (46:46)
COPY --from=builder /opt/micromamba /opt/micromamba

high 8.7: CVE--2026--40192 Uncontrolled Resource Consumption

Affected range>=10.3.0
<12.2.0
Fixed version12.2.0
CVSS Score8.7
CVSS VectorCVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
EPSS Score0.018%
EPSS Percentile5th percentile
Description

Impact

Pillow did not limit the amount of GZIP-compressed data read when decoding a FITS image, making it vulnerable to decompression bomb attacks. A specially crafted FITS file could cause unbounded memory consumption, leading to denial of service (OOM crash or severe performance degradation).

Patches

The amount of data read is now limited to the necessary amount.
Fixed in Pillow 12.2.0 (PR #9521).

Workarounds

Avoid Pillow >= 10.3.0, < 12.2.0
Only open specific image formats, excluding FITS.

high 8.6: CVE--2026--42311 Integer Overflow or Wraparound

Affected range>=10.3.0
<12.2.0
Fixed version12.2.0
CVSS Score8.6
CVSS VectorCVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
EPSS Score0.020%
EPSS Percentile6th percentile
Description

Impact

Processing a malicious PSD file could lead to memory corruption, potentially resulting in a crash or arbitrary code execution.

Patches

Patched version: 12.2.0

Pillow 12.1.1 addressed CVE-2026-25990 by adding checks for tile extents in PSD image decoding/encoding to prevent an out-of-bounds write. However, the bounds checks computed tile extent sums using types susceptible to integer overflow, meaning a PSD image with carefully chosen tile dimensions could produce values that wrap around and bypass the checks, still triggering an out-of-bounds write in src/decode.c and src/encode.c. The fix avoids adding extents together before comparison.

Workarounds

Use any version but affected versions: >= 10.3.0, < 12.2.0

Resources

@thwllms
thwllms merged commit b7a575c into main May 29, 2026
8 of 9 checks passed
@thwllms
thwllms deleted the scale-down-prod branch May 29, 2026 18:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

Morty Proxy This is a proxified and sanitized view of the page, visit original site.