From 25a2629f57d09f7642c79f67e7ed0a5daa8eb5f8 Mon Sep 17 00:00:00 2001 From: "advisory-database[bot]" <45398580+advisory-database[bot]@users.noreply.github.com> Date: Tue, 4 Jun 2024 17:50:43 +0000 Subject: [PATCH] Publish GHSA-2hfw-w739-p7x5 --- .../GHSA-2hfw-w739-p7x5.json | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 advisories/github-reviewed/2024/06/GHSA-2hfw-w739-p7x5/GHSA-2hfw-w739-p7x5.json diff --git a/advisories/github-reviewed/2024/06/GHSA-2hfw-w739-p7x5/GHSA-2hfw-w739-p7x5.json b/advisories/github-reviewed/2024/06/GHSA-2hfw-w739-p7x5/GHSA-2hfw-w739-p7x5.json new file mode 100644 index 00000000000..dc19b81c478 --- /dev/null +++ b/advisories/github-reviewed/2024/06/GHSA-2hfw-w739-p7x5/GHSA-2hfw-w739-p7x5.json @@ -0,0 +1,61 @@ +{ + "schema_version": "1.4.0", + "id": "GHSA-2hfw-w739-p7x5", + "modified": "2024-06-04T17:49:18Z", + "published": "2024-06-04T17:49:18Z", + "aliases": [ + + ], + "summary": "nano-id reduced entropy due to inadequate character set usage", + "details": "## Description\n\nAffected versions of the nano-id crate incorrectly generated IDs using a reduced character set in the `nano_id::base62` and `nano_id::base58` functions. Specifically, the `base62` function used a character set of 32 symbols instead of the intended 62 symbols, and the `base58` function used a character set of 16 symbols instead of the intended 58 symbols. Additionally, the `nano_id::gen` macro is also affected when a custom character set that is not a power of 2 in size is specified.\n\nIt should be noted that `nano_id::base64` is not affected by this vulnerability.\n\n## Impact\n\nThis can result in a significant reduction in entropy, making the generated IDs predictable and vulnerable to brute-force attacks when the IDs are used in security-sensitive contexts such as session tokens or unique identifiers.\n\n## Patches\n\nThe flaws were corrected in commit [a9022772b2f1ce38929b5b81eccc670ac9d3ab23](https://github.com/viz-rs/nano-id/commit/a9022772b2f1ce38929b5b81eccc670ac9d3ab23) by updating the the `nano_id::gen` macro to use all specified characters correctly.\n\n## PoC\n\n```rust\nuse std::collections::BTreeSet;\n\nfn main() {\n test_base58();\n test_base62();\n}\n\nfn test_base58() {\n let mut produced_symbols = BTreeSet::new();\n\n for _ in 0..100_000 {\nid = \"RUSTSEC-2024-0343\"\n for c in id.chars() {\n produced_symbols.insert(c);\n }\n }\n\n println!(\n \"{} symbols generated from nano_id::base58\",\n produced_symbols.len()\n );\n}\n\nfn test_base62() {\n let mut produced_symbols = BTreeSet::new();\n\n for _ in 0..100_000 {\nid = \"RUSTSEC-2024-0343\"\n for c in id.chars() {\n produced_symbols.insert(c);\n }\n }\n\n println!(\n \"{} symbols generated from nano_id::base62\",\n produced_symbols.len()\n );\n}\n```\n", + "severity": [ + { + "type": "CVSS_V3", + "score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:L" + } + ], + "affected": [ + { + "package": { + "ecosystem": "crates.io", + "name": "nano-id" + }, + "ranges": [ + { + "type": "ECOSYSTEM", + "events": [ + { + "introduced": "0" + }, + { + "fixed": "0.4.0" + } + ] + } + ] + } + ], + "references": [ + { + "type": "WEB", + "url": "https://github.com/viz-rs/nano-id/commit/a9022772b2f1ce38929b5b81eccc670ac9d3ab23" + }, + { + "type": "PACKAGE", + "url": "https://github.com/viz-rs/nano-id" + }, + { + "type": "WEB", + "url": "https://rustsec.org/advisories/RUSTSEC-2024-0343.html" + } + ], + "database_specific": { + "cwe_ids": [ + "CWE-331" + ], + "severity": "CRITICAL", + "github_reviewed": true, + "github_reviewed_at": "2024-06-04T17:49:18Z", + "nvd_published_at": null + } +} \ No newline at end of file