Skip to main content

Slack Morphism EUVDEUVD-2026-107388

| CVE-2026-113799 MEDIUM
Insertion of Sensitive Information into Log File (CWE-532)
2026-10-21 GitHub_M GHSA-26w4-8w32-4x3v
5.3
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Reach application Slack callback endpoint
  2. Delivery
    Send request with invalid signature
  3. Exploit
    Read computed HMAC from error logs
  4. Execution
    Replay request with recovered signature
  5. Impact
    Bypass verification, deliver forged event

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A09:2025 - Security Logging & Alerting Failures
ASVS 5.0
V16 - Security Logging and Error Handling Log data sanitization
Exploitation Conditions

Exploitation requires a specific combination: (1) the application uses slack-morphism 1.0.0-2.27.0 with its Axum (or Hyper) listener and the DEFAULT listener error handler, which logs SlackEventWrongSignatureError at error level including the public generated_hash field; (2) the attacker can send requests to the application's Slack callback/events endpoint; and (3) the attacker can read the application's or service's logs where the error is written. Given those, the attacker sends any chosen body with a deliberately invalid signature, recovers the correct HMAC from the log entry, and must replay the identical request within Slack's five-minute timestamp freshness window. Limiting factors that reduce real-world risk: the mandatory log-read access (an elevated/trusted position rather than purely remote-anonymous), the tight five-minute replay window (AC:H), dependence on the unmodified default error handler, and that applications using a custom error handler which suppresses the hash are not affected. No signing secret is needed, but the forged request is confined to the same body and timestamp for which the oracle leaked a signature.

Impact

This is a moderate, conditional-risk flaw rather than a drop-everything priority. The supplied CVSS 3.1 vector (AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:H/A:N, base 5.3 MEDIUM) is internally consistent with the mechanism: network-reachable (AV:N), but with high attack complexity (AC:H) because the attacker must win a race against the five-minute freshness window and already possess log-read access, and with required privileges (PR:L) reflecting that very need to read application/service logs. The headline impact is integrity (I:H) - forged, attacker-chosen requests pass signature verification and reach the protected callback - with no direct confidentiality or availability loss (C:N/A:N). No EPSS score, CISA KEV entry, or SSVC decision data was provided, so automatability and widespread-exploitation signals cannot be assessed from the input. No public exploit code is referenced, though the reporter (GitHub_M) states they reproduced the issue end-to-end against both the Axum and Hyper integrations in 2.26.0 and 2.27.0; reproduction by the researcher is not the same as a released weaponized PoC. The key real-world limiter, and the reason this is not critical, is the dual precondition: an attacker needs BOTH network access to the Slack callback endpoint AND read access to the service's logs. That log-access requirement typically implies an already-partially-trusted or compromised position (shared log aggregation, insider, or a secondary log-exposure bug), making this more of an exploit-chain primitive than a standalone internet-facing break.

Exploit ScenarioDerived

An attacker with the ability to read the target service's logs (e.g., via a shared logging/observability platform) sends a crafted request to the application's Slack callback endpoint carrying a deliberately invalid X-Slack-Signature. Slack Morphism's default Axum error handler logs the SlackEventWrongSignatureError, which contains the correct HMAC it computed for that exact body and timestamp. The attacker reads the valid signature from the log and replays the identical request within the five-minute freshness window, passing signature verification and delivering a forged Slack event to the protected callback without ever knowing the signing secret. The reporter confirmed end-to-end reproduction against the Axum and Hyper integrations, but no public exploit code is referenced.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.4% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Oct 21, 2026

Slack Morphism 1.0.0 through 2.27.0 writes the correct Slack request HMAC into its error output when signature verification fails, so anyone who can both hit the app's Slack callback endpoint and read its application or service logs can use the verifier as a chosen-message HMAC oracle and replay a fully signed request within Slack's five-minute freshness window - without ever knowing the signing secret. The exposure only occurs in deployments using the default Axum or Hyper listener error handler, which logs SlackEventWrongSignatureError (including the public generated_hash field) at error level; applications with a custom handler that suppresses the hash are not affected. The vendor released 2.28.0 to remove the expected signature from the error type, and no public exploit code has been identified at time of analysis; real-world risk is bounded by the mandatory log-read access, the tight replay window, and the fact that a forged request is confined to the exact body and timestamp the oracle signed.

RemediationAI

Upgrade the slack-morphism crate to 2.28.0 (release v2.28.0, https://github.com/abdolence/slack-morphism-rust/releases/tag/v2.28.0), which removes the generated_hash field and truncates the received signature to an 11-character prefix per PR https://github.com/abdolence/slack-morphism-rust/pull/387 / commit ac95d0d4539d0eac548a8db99c51c0c1ae832756; note that this is a breaking API change if your code reads SlackEventWrongSignatureError.generated_hash or received_hash, so update any custom logging or metrics code accordingly. If immediate upgrade is not possible, replace the default listener error handler with one that matches on SlackEventSignatureVerifierError::WrongSignatureError and logs only a generic message plus body length and timestamp, never the error's Debug/Display output - the trade-off is reduced diagnostics for genuine signing-secret misconfiguration, which is exactly what the received-hash prefix previously helped triage. In parallel, restrict read access to application and service logs to the smallest possible set of operators, since any log reader becomes an HMAC oracle, and scrub or rotate existing log stores that may already contain generated hash: entries. Optionally rate-limit or network-restrict the Slack callback endpoint to reduce an attacker's ability to harvest signatures, though this is only defense in depth: Slack does not warrant a stable ingress range for all event delivery modes, so IP allowlisting can break legitimate traffic if applied too tightly. Confirming the fix requires the advisory's regression behavior - invalid requests must produce log output that contains neither the expected nor the full received signature.

Affected VersionsENISA

slack-morphism-rust 1.0.0, < 2.28.0

Affected Packages

cargo slack-morphism fix: 2.28.0
euvd slack_morphism_rust fix: 2.28.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 2 packages in cargo, euvd

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

Technical ContextAI · show details

Slack authenticates inbound Events API / interactivity traffic with a versioned HMAC-SHA256 scheme: the signing secret keys an HMAC over the string v0:{X-Slack-Request-Timestamp}:{raw_body}, sent as X-Slack-Signature, and verifiers must also reject timestamps older than five minutes to prevent replay. Slack Morphism's SlackEventSignatureVerifier::verify (src/signature_verifier.rs:46-59) correctly computes this expected signature before comparing it to the untrusted header, but on mismatch it populated SlackEventWrongSignatureError.generated_hash with the full correct HMAC and kept the full received hash in received_hash; the error type (src/signature_verifier.rs:182-199) derives Debug and implements Display to print both values. The Axum middleware (src/axum_support/slack_events_middleware.rs) propagates the error into the default listener error handler (src/listener.rs), which logs it at error level - the classic CWE-532 pattern of inserting sensitive authentication material into a log file. Because the logged value is the valid signature for attacker-chosen body/timestamp material, the error path converts the verifier into an oracle, and the leaked credential is directly reusable for the same message. The patch in PR #387 (commit ac95d0d) removes generated_hash entirely and truncates the received value to an 11-character prefix, with regression tests asserting neither the expected nor the full received hash appears in Display/Debug output. Affected packages are the Rust crate slack-morphism (CPE cpe:2.3:a:abdolence:slack-morphism-rust), versions 1.0.0 through 2.27.0, in the Axum and Hyper integrations.

Know when Slack Morphism Rust 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 (GitHub_M) PRIMARY 5.3 MEDIUM
AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:H/A:N
vuln.today AI 5.3 MEDIUM

AC:H for the five-minute replay race, PR:L because log-read access is required, I:H as forged events bypass verification, C:N/A:N as no data read or availability loss occurs.

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

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

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

Lifecycle Timeline

1
Patch available
Oct 21, 2026 - 18:03 EUVD

DescriptionCVE.org

Slack Morphism is a client library for Slack Web/Events API/Socket Mode and Block Kit. Versions 1.0.0 through 2.27.0 expose the correct Slack request HMAC when signature verification fails. For an invalid request, slack-morphism computes the correct signature for the attacker-controlled timestamp and request body and stores it in SlackEventWrongSignatureError.generated_hash. The error's Debug and Display representations expose that value, and the default Axum listener error handler logs it at error level. An attacker who can both reach the application's Slack callback endpoint and read its application/service logs can therefore use the verifier as a chosen-message HMAC oracle. The attacker can send an arbitrary request with an invalid signature, recover the correct signature from the resulting log entry, and resend the same request within the five-minute freshness window. The second request passes Slack Morphism's signature verification and reaches the protected application callback without the attacker knowing the Slack signing secret. Version 2.28.0 patches the issue.

Threat Intelligence Overview

EPSS Score
0.4%
Top 69% exploitable
Prevalence
Low
niche Rust Slack client crate, specialized integration library
Threat Intel
1
1 source
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 MEDIUM
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

26
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +26
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

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