{"id":"CVE-2024-21491","aliases":["EUVD-2024-0546","GHSA-747x-5m58-mq97","GHSA-w277-wpqf-rcfv","RUSTSEC-2024-0010"],"status":"published","title":"svix vulnerable to Authentication Bypass","description":"Versions of the package svix before 1.17.0 are vulnerable to Authentication Bypass due to an issue in the verify function where signatures of different lengths are incorrectly compared. An attacker can bypass signature verification by providing a shorter signature that matches the beginning of the actual signature.\r\r**Note:**\r\rThe attacker would need to know a victim uses the Rust library for verification,no easy way to automatically check that; and uses webhooks by a service that uses Svix, and then figure out a way to craft a malicious payload that will actually include all of the correct identifiers needed to trick the receivers to cause actual issues.","severity":{"version":"3.1","score":5.9,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:L/I:H/A:N","level":"medium","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-12","score":0.0041,"percentile":0.35739,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-288","CWE-347"],"published":"2024-02-06T12:00:00Z","modified":"2026-10-28T02:30:47Z","fixes":[{"ecosystem":"crates.io","package":"svix","fixed_in":["1.17.0"],"sources":["ghsa","osv"]}],"affected":[{"source":"ghsa","ecosystem":"crates.io","package":"svix","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.17.0"}]}]},{"source":"osv","ecosystem":"crates.io","package":"svix","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"1.17.0"}]}]},{"source":"osv","ecosystem":"crates.io","package":"svix","ranges":[{"type":"SEMVER","events":[{"introduced":"0.0.0-0"},{"fixed":"1.17.0"}]}]}],"products":[{"vendor":"svix","product":"svix-webhooks"}],"references":[{"url":"https://security.snyk.io/vuln/SNYK-RUST-SVIX-6230729","tags":["x_transferred","Third Party Advisory","web"]},{"url":"https://github.com/svix/svix-webhooks/pull/1190","tags":["x_transferred","Patch","fix","web"]},{"url":"https://github.com/svix/svix-webhooks/commit/958821bd3b956d1436af65f70a0964d4ffb7daf6","tags":["x_transferred","Patch","fix","web"]},{"url":"https://rustsec.org/advisories/RUSTSEC-2024-0010.html","tags":["x_transferred","Third Party Advisory","advisory","web"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2024-21491","tags":["advisory"]},{"url":"https://github.com/advisories/GHSA-747x-5m58-mq97"},{"url":"https://github.com/advisories/GHSA-w277-wpqf-rcfv"},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2024/21xxx/CVE-2024-21491.json","tags":["advisory"]},{"url":"https://github.com/svix/svix-webhooks","tags":["package"]},{"url":"https://crates.io/crates/svix","tags":["package"]}],"sources":{"cve":[{"id":"CVE-2024-21491","description":"Versions of the package svix before 1.17.0 are vulnerable to Authentication Bypass due to an issue in the verify function where signatures of different lengths are incorrectly compared. An attacker can bypass signature verification by providing a shorter signature that matches the beginning of the actual signature.\r\r**Note:**\r\rThe attacker would need to know a victim uses the Rust library for verification,no easy way to automatically check that; and uses webhooks by a service that uses Svix, and then figure out a way to craft a malicious payload that will actually include all of the correct identifiers needed to trick the receivers to cause actual issues.","status":"published","published":"2024-02-13T05:00:02.196Z","modified":"2025-05-09T18:25:35.884Z","cvss":[{"version":"3.1","score":5.9,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:L/I:H/A:N","level":"medium","assessor":"cna"}],"cwes":["CWE-288","CWE-288"],"updated_at":"2026-11-02T14:34:04.681315Z"}],"euvd":[{"id":"EUVD-2024-0546","description":"Versions of the package svix before 1.17.0 are vulnerable to Authentication Bypass due to an issue in the verify function where signatures of different lengths are incorrectly compared. An attacker can bypass signature verification by providing a shorter signature that matches the beginning of the actual signature.\r\r**Note:**\r\rThe attacker would need to know a victim uses the Rust library for verification,no easy way to automatically check that; and uses webhooks by a service that uses Svix, and then figure out a way to craft a malicious payload that will actually include all of the correct identifiers needed to trick the receivers to cause actual issues.","status":"published","published":"2024-02-13T05:00:02Z","modified":"2025-05-09T18:25:35Z","cvss":[{"version":"3.1","score":5.9,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:L/I:H/A:N","level":"medium"}],"updated_at":"2026-11-02T20:32:50.734545Z"}],"ghsa":[{"id":"GHSA-747x-5m58-mq97","title":"svix vulnerable to Authentication Bypass","description":"Versions of the package svix before 1.17.0 are vulnerable to Authentication Bypass due to an issue in the verify function where signatures of different lengths are incorrectly compared. An attacker can bypass signature verification by providing a shorter signature that matches the beginning of the actual signature.\n\n**Note:**\n\nThe attacker would need to know a victim uses the Rust library for verification,no easy way to automatically check that; and uses webhooks by a service that uses Svix, and then figure out a way to craft a malicious payload that will actually include all of the correct identifiers needed to trick the receivers to cause actual issues.","status":"published","published":"2024-02-13T06:30:28Z","modified":"2024-10-16T17:06:16Z","cvss":[{"version":"3.1","score":6.8,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:N","level":"medium"}],"cwes":["CWE-288","CWE-347"],"updated_at":"2026-11-02T14:38:11.479492Z"},{"id":"GHSA-w277-wpqf-rcfv","title":"Duplicate Advisory: Svix vulnerable to improper comparison of different-length signatures","description":"## Duplicate Advisory\nThis advisory has been withdrawn because it is a duplicate of GHSA-747x-5m58-mq97. This link is maintained to preserve external references.\n\n## Original Description\nThe `Webhook::verify` function incorrectly compared signatures of different lengths - the two signatures would only be compared up to the length of the shorter signature. This allowed an attacker to pass in `v1,` as the signature, which would always pass verification.","status":"withdrawn","published":"2024-02-06T20:30:14Z","modified":"2026-01-23T22:35:18Z","updated_at":"2026-11-02T14:39:19.525691Z"}],"nvd":[{"id":"CVE-2024-21491","description":"Versions of the package svix before 1.17.0 are vulnerable to Authentication Bypass due to an issue in the verify function where signatures of different lengths are incorrectly compared. An attacker can bypass signature verification by providing a shorter signature that matches the beginning of the actual signature.\r\r**Note:**\r\rThe attacker would need to know a victim uses the Rust library for verification,no easy way to automatically check that; and uses webhooks by a service that uses Svix, and then figure out a way to craft a malicious payload that will actually include all of the correct identifiers needed to trick the receivers to cause actual issues.","status":"published","published":"2024-02-13T05:15:08.873Z","modified":"2026-06-17T07:09:36.273Z","cvss":[{"version":"3.1","score":5.9,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:L/I:H/A:N","level":"medium","assessor":"secondary"},{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:N","level":"medium","assessor":"primary"}],"cwes":["CWE-288","CWE-347"],"updated_at":"2026-11-02T14:09:35.738752Z"}],"osv":[{"id":"CVE-2024-21491","description":"Versions of the package svix before 1.17.0 are vulnerable to Authentication Bypass due to an issue in the verify function where signatures of different lengths are incorrectly compared. An attacker can bypass signature verification by providing a shorter signature that matches the beginning of the actual signature.\r\r**Note:**\r\rThe attacker would need to know a victim uses the Rust library for verification,no easy way to automatically check that; and uses webhooks by a service that uses Svix, and then figure out a way to craft a malicious payload that will actually include all of the correct identifiers needed to trick the receivers to cause actual issues.","status":"published","published":"2024-02-13T05:00:02.196Z","modified":"2026-10-28T02:30:47.653240905Z","cvss":[{"version":"3.1","score":5.9,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:L/I:H/A:N","level":"medium"}],"cwes":["CWE-288"],"updated_at":"2026-11-02T15:44:38.577405Z"},{"id":"GHSA-747x-5m58-mq97","title":"svix vulnerable to Authentication Bypass","description":"Versions of the package svix before 1.17.0 are vulnerable to Authentication Bypass due to an issue in the verify function where signatures of different lengths are incorrectly compared. An attacker can bypass signature verification by providing a shorter signature that matches the beginning of the actual signature.\n\n**Note:**\n\nThe attacker would need to know a victim uses the Rust library for verification,no easy way to automatically check that; and uses webhooks by a service that uses Svix, and then figure out a way to craft a malicious payload that will actually include all of the correct identifiers needed to trick the receivers to cause actual issues.","status":"published","published":"2024-02-13T06:30:28Z","modified":"2024-10-16T17:06:15Z","cvss":[{"version":"3.1","score":6.8,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:N","level":"medium"}],"cwes":["CWE-288","CWE-347"],"updated_at":"2026-11-02T15:46:40.308826Z"},{"id":"GHSA-w277-wpqf-rcfv","title":"Duplicate Advisory: Svix vulnerable to improper comparison of different-length signatures","description":"## Duplicate Advisory\nThis advisory has been withdrawn because it is a duplicate of GHSA-747x-5m58-mq97. This link is maintained to preserve external references.\n\n## Original Description\nThe `Webhook::verify` function incorrectly compared signatures of different lengths - the two signatures would only be compared up to the length of the shorter signature. This allowed an attacker to pass in `v1,` as the signature, which would always pass verification.","status":"withdrawn","published":"2024-02-06T20:30:14Z","modified":"2026-02-03T03:08:16.513003Z","updated_at":"2026-11-02T15:46:58.04805Z"},{"id":"RUSTSEC-2024-0010","title":"Improper comparison of different-length signatures","description":"The `Webhook::verify` function incorrectly compared signatures of\ndifferent lengths - the two signatures would only be compared up to\nthe length of the shorter signature. This allowed an attacker to\npass in `v1,` as the signature, which would always pass verification.","status":"published","published":"2024-02-06T12:00:00Z","modified":"2024-02-15T01:26:41.857241Z","updated_at":"2026-11-02T15:53:39.971022Z"}]}}
