ex_aws_sns SigningCertURL not validated in verify_message/1
Improper Certificate Validation vulnerability in ex-aws ex_aws_sns (ExAws.SNS, ExAws.SNS.PublicKeyCache modules) allows Signature Spoofing by Improper Validation. This vulnerability is associated with program files lib/ex_aws/sns.ex, lib/ex_aws/sns/public_key_cache.ex and program routines 'Elixir.ExAws.SNS':verify_message/1, 'Elixir.ExAws.SNS.PublicKeyCache':get/1. 'Elixir.ExAws.SNS':verify_message/1 fetches the signing certificate from the SigningCertURL field of the incoming SNS message without validating that the URL uses HTTPS or that the host matches an AWS-owned SNS certificate domain. An unauthenticated attacker who can POST to an endpoint that calls verify_message/1 can supply an attacker-controlled SigningCertURL, sign a forged SNS message with their own key, and cause the function to return :ok, completely bypassing SNS signature verification. This issue affects ex_aws_sns: from 2.0.1 before 2.3.5.
- Products
- Not specified
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2026-47074
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 3 Nov 2026, 07:32 UTC · Revision 1
Source evidence
ex_aws_sns SigningCertURL not validated in verify_message/1
core-osv · Original sourcePublished 28 May 2026, 09:05 UTC
Improper Certificate Validation vulnerability in ex-aws ex_aws_sns (ExAws.SNS, ExAws.SNS.PublicKeyCache modules) allows Signature Spoofing by Improper Validation. This vulnerability is associated with program files lib/ex_aws/sns.ex, lib/ex_aws/sns/public_key_cache.ex and program routines 'Elixir.ExAws.SNS':verify_message/1, 'Elixir.ExAws.SNS.PublicKeyCache':get/1. 'Elixir.ExAws.SNS':verify_message/1 fetches the signing certificate from the SigningCertURL field of the incoming SNS message without validating that the URL uses HTTPS or that the host matches an AWS-owned SNS certificate domain. An unauthenticated attacker who can POST to an endpoint that calls verify_message/1 can supply an attacker-controlled SigningCertURL, sign a forged SNS message with their own key, and cause the function to return :ok, completely bypassing SNS signature verification. This issue affects ex_aws_sns: from 2.0.1 before 2.3.5.
osv:CVE-2026-47074
Complete source record
{
"id": "7680e94ddb6a2789ae94fa3f99ab6a378cbe5dce73af9c0889737cd7af1eccf9",
"url": "https://osv.dev/vulnerability/CVE-2026-47074",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "ex_aws_sns SigningCertURL not validated in verify_message/1",
"summary": "Improper Certificate Validation vulnerability in ex-aws ex_aws_sns (ExAws.SNS, ExAws.SNS.PublicKeyCache modules) allows Signature Spoofing by Improper Validation. This vulnerability is associated with program files lib/ex_aws/sns.ex, lib/ex_aws/sns/public_key_cache.ex and program routines 'Elixir.ExAws.SNS':verify_message/1, 'Elixir.ExAws.SNS.PublicKeyCache':get/1. 'Elixir.ExAws.SNS':verify_message/1 fetches the signing certificate from the SigningCertURL field of the incoming SNS message without validating that the URL uses HTTPS or that the host matches an AWS-owned SNS certificate domain. An unauthenticated attacker who can POST to an endpoint that calls verify_message/1 can supply an attacker-controlled SigningCertURL, sign a forged SNS message with their own key, and cause the function to return :ok, completely bypassing SNS signature verification. This issue affects ex_aws_sns: from 2.0.1 before 2.3.5.",
"evidence": "osv:CVE-2026-47074",
"products": [],
"severity": "high",
"structured": {
"id": "CVE-2026-47074",
"aliases": [
"CVE-2026-47074",
"EEF-CVE-2026-47074",
"GHSA-8jgf-23q5-x7xx"
],
"metrics": [
{
"type": "CVSS_V4",
"score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N"
}
],
"affected": [
{
"ranges": [
{
"repo": "https://github.com/ex-aws/ex_aws_sns",
"type": "GIT",
"events": [
{
"introduced": "a7ec21880943f4dac1d59bda557db0ffcd2b61fa"
},
{
"fixed": "1853d280b152d10384a1e21a22cf22152a60be48"
},
{
"introduced": "775d31ffb1e78702d78275ad8841be132d678b50"
},
{
"fixed": "97626db164a68b60c87f03fd3238551076b8a9ac"
}
],
"database_specific": {
"extracted_events": [
{
"range": [
{
"introduced": "a7ec21880943f4dac1d59bda557db0ffcd2b61fa"
},
{
"fixed": "1853d280b152d10384a1e21a22cf22152a60be48"
}
],
"source": "AFFECTED_FIELD",
"strategy": "StandardRange"
},
{
"range": [
{
"introduced": "2.0.1"
},
{
"fixed": "2.3.5"
}
],
"source": "AFFECTED_FIELD",
"strategy": "StandardRange"
},
{
"range": [
{
"fixed": "1853d280b152d10384a1e21a22cf22152a60be48"
}
],
"source": "REFERENCES_COMMIT"
}
]
}
}
],
"versions": [
"v2.3.3",
"v2.3.2",
"v2.3.1",
"v2.3.0",
"v2.2.0",
"v2.0.1"
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-47074.json"
}
}
],
"modified": "2026-10-28T02:30:26.751022787Z",
"provider": "osv",
"references": [
"https://cna.erlef.org/cves/CVE-2026-47074.html",
"https://github.com",
"https://hex.pm",
"https://osv.dev/vulnerability/EEF-CVE-2026-47074",
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/47xxx/CVE-2026-47074.json",
"https://github.com/ex-aws/ex_aws_sns/security/advisories/GHSA-8jgf-23q5-x7xx",
"https://nvd.nist.gov/vuln/detail/CVE-2026-47074",
"https://github.com/ex-aws/ex_aws_sns/commit/1853d280b152d10384a1e21a22cf22152a60be48",
"https://github.com/ex-aws/ex_aws_sns"
],
"provider_metadata": {
"cwe_ids": [
"CWE-295"
],
"cna_assigner": "EEF",
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/47xxx/CVE-2026-47074.json"
}
},
"related_cves": [
{
"value": "CVE-2026-47074",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 493380,
"published_at": "2026-05-28T09:05:54.815+00:00"
}