{"id":"CVE-2021-3907","aliases":["DEBIAN-CVE-2021-3907","DSA-5033-1","DSA-5041-1","EUVD-2021-2338","GHSA-8459-6rc9-8vf8","GHSA-cqh2-vc2f-q4fh","GO-2022-0248","UBUNTU-CVE-2021-3907"],"status":"published","title":"Arbitrary filepath traversal via URI injection","description":"OctoRPKI does not escape a URI with a filename containing \"..\", this allows a repository to create a file, (ex. rsync://example.org/repo/../../etc/cron.daily/evil.roa), which would then be written to disk outside the base cache folder. This could allow for remote code execution on the host machine OctoRPKI is running on.","severity":{"version":"3.1","score":7.4,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:H","level":"high","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-09","score":0.04199,"percentile":0.91021,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-20","CWE-22"],"published":"2021-11-10T20:08:29Z","modified":"2026-10-23T18:03:32Z","fixes":[{"ecosystem":"Go","package":"github.com/cloudflare/cfrpki","fixed_in":["1.4.3","1.4.4"],"sources":["ghsa","osv"]},{"ecosystem":"Debian:12","package":"cfrpki","fixed_in":["1.4.0-1"],"sources":["osv"]},{"ecosystem":"Debian:12","package":"fort-validator","fixed_in":["1.5.3-1"],"sources":["osv"]},{"ecosystem":"Debian:13","package":"fort-validator","fixed_in":["1.5.3-1"],"sources":["osv"]},{"ecosystem":"Debian:14","package":"fort-validator","fixed_in":["1.5.3-1"],"sources":["osv"]}],"affected":[{"source":"ghsa","ecosystem":"Go","package":"github.com/cloudflare/cfrpki","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"last_affected":"1.4.2"},{"fixed":"1.4.3"}]}]},{"source":"ghsa","ecosystem":"Go","package":"github.com/cloudflare/cfrpki","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.4.4"}]}]},{"source":"osv","ecosystem":"Debian:12","package":"cfrpki","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.4.0-1"}]}]},{"source":"osv","ecosystem":"Debian:12","package":"fort-validator","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.5.3-1"}]}]},{"source":"osv","ecosystem":"Debian:13","package":"fort-validator","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.5.3-1"}]}]},{"source":"osv","ecosystem":"Debian:14","package":"fort-validator","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.5.3-1"}]}]},{"source":"osv","ecosystem":"Debian:11","package":"fort-validator","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.5.3-1~deb11u1"}]}],"versions":["1.5.0-1","1.5.1-1","1.5.2-1"],"bundled":4},{"source":"osv","ecosystem":"Debian:11","package":"cfrpki","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.4.2-1~deb11u1"}]}],"versions":["1.2.2-1","1.3.0-1","1.4.0-1"],"bundled":10},{"source":"osv","ecosystem":"Go","package":"github.com/cloudflare/cfrpki","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"1.4.3"}]}]},{"source":"osv","ecosystem":"Go","package":"github.com/cloudflare/cfrpki","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"1.4.4"}]}]},{"source":"osv","ecosystem":"Go","package":"github.com/cloudflare/cfrpki","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"1.4.4"}]}]},{"source":"osv","ecosystem":"Ubuntu:Pro:20.04:LTS","package":"fort-validator","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.1.1-2","1.1.2-1","1.1.3-1","1.2.0-1","1.2.0-1ubuntu0.1~esm1"]}],"products":[{"vendor":"cloudflare","product":"octorpki"},{"vendor":"debian","product":"debian_linux"}],"references":[{"url":"https://github.com/cloudflare/cfrpki/security/advisories/GHSA-cqh2-vc2f-q4fh","tags":["x_refsource_MISC","x_transferred","Third Party Advisory","advisory","web","report"]},{"url":"https://www.debian.org/security/2021/dsa-5033","tags":["vendor-advisory","x_refsource_DEBIAN","x_transferred","Third Party Advisory","advisory","web"]},{"url":"https://www.debian.org/security/2022/dsa-5041","tags":["vendor-advisory","x_refsource_DEBIAN","x_transferred","Third Party Advisory","advisory","web"]},{"url":"https://github.com/cloudflare/cfrpki/security/advisories/GHSA-3jhm-87m6-x959","tags":["x_refsource_MISC","x_transferred","Third Party Advisory","advisory","web"]},{"url":"https://github.com/cloudflare/cfrpki/security/advisories/GHSA-8459-6rc9-8vf8","tags":["web"]},{"url":"https://github.com/cloudflare/cfrpki/commit/a053a808feeb3115c76b6cc263ee55598ce6e8cd","tags":["web","fix","report"]},{"url":"https://github.com/cloudflare/cfrpki/commit/eb9cc4db7b7b79e44f56dfaa959fccdfb2af8284","tags":["web","fix"]},{"url":"https://github.com/cloudflare/cfrpki/releases/tag/v1.4.3","tags":["web"]},{"url":"https://github.com/advisories/GHSA-8459-6rc9-8vf8"},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2021-3907","tags":["advisory"]},{"url":"https://pkg.go.dev/vuln/GO-2022-0248","tags":["web"]},{"url":"https://github.com/advisories/GHSA-cqh2-vc2f-q4fh"},{"url":"https://security-tracker.debian.org/tracker/CVE-2021-3907","tags":["advisory"]},{"url":"https://github.com/cloudflare/cfrpki","tags":["package"]},{"url":"https://ubuntu.com/security/CVE-2021-3907","tags":["report"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2021-3907","tags":["report"]}],"sources":{"cve":[{"id":"CVE-2021-3907","title":"Arbitrary filepath traversal via URI injection","description":"OctoRPKI does not escape a URI with a filename containing \"..\", this allows a repository to create a file, (ex. rsync://example.org/repo/../../etc/cron.daily/evil.roa), which would then be written to disk outside the base cache folder. This could allow for remote code execution on the host machine OctoRPKI is running on.","status":"published","published":"2021-11-11T21:45:16.585Z","modified":"2024-09-17T03:18:30.852Z","cvss":[{"version":"3.1","score":7.4,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:H","level":"high","assessor":"cna"}],"cwes":["CWE-20","CWE-22"],"updated_at":"2026-11-02T14:33:03.671751Z"}],"euvd":[{"id":"EUVD-2021-2338","description":"OctoRPKI does not escape a URI with a filename containing \"..\", this allows a repository to create a file, (ex. rsync://example.org/repo/../../etc/cron.daily/evil.roa), which would then be written to disk outside the base cache folder. This could allow for remote code execution on the host machine OctoRPKI is running on.","status":"published","published":"2021-11-11T21:45:16Z","modified":"2024-09-17T03:18:30Z","cvss":[{"version":"3.1","score":7.4,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:H","level":"high"}],"updated_at":"2026-11-03T00:28:32.883624Z"}],"ghsa":[{"id":"GHSA-cqh2-vc2f-q4fh","title":"Arbitrary filepath traversal via URI injection ","description":"OctoRPKI does not escape a URI with a filename containing \"..\", this allows a repository to create a file, (ex.  `rsync://example.org/repo/../../etc/cron.daily/evil.roa`), which would then be written to disk outside the base cache folder. This could allow for remote code execution on the host machine OctoRPKI is running on. \n\n## Patches\n\n## For more information\nIf you have any questions or comments about this advisory email us at security@cloudflare.com\n","status":"published","published":"2021-11-10T20:08:29Z","modified":"2024-01-23T20:36:22Z","cvss":[{"version":"3.1","score":7.4,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:H","level":"high"}],"cwes":["CWE-20","CWE-22"],"updated_at":"2026-11-02T14:37:32.302254Z"},{"id":"GHSA-8459-6rc9-8vf8","title":"Path traversal in github.com/cloudflare/cfrpki/cmd/octorpki","description":"### Impact\n\nIn the case that a malicious TAL file is parsed pointing to a repository that provides a malicious ROA file which octorpki downloads, it is possible to bypass the current directory traversal mitigation to allow writing outside of the current directory. \n\n### Patches\n\nNo patch release has been made","status":"published","published":"2022-02-14T22:52:15Z","modified":"2023-11-07T14:29:13Z","cwes":["CWE-22"],"updated_at":"2026-11-02T14:37:15.931647Z"}],"nvd":[{"id":"CVE-2021-3907","description":"OctoRPKI does not escape a URI with a filename containing \"..\", this allows a repository to create a file, (ex. rsync://example.org/repo/../../etc/cron.daily/evil.roa), which would then be written to disk outside the base cache folder. This could allow for remote code execution on the host machine OctoRPKI is running on.","status":"published","published":"2021-11-11T22:15:07.82Z","modified":"2026-06-17T04:05:58.127Z","cvss":[{"version":"3.1","score":7.4,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:H","level":"high","assessor":"secondary"},{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical","assessor":"primary"},{"version":"2.0","score":7.5,"vector":"AV:N/AC:L/Au:N/C:P/I:P/A:P","level":"high","assessor":"primary"}],"cwes":["CWE-20","CWE-22"],"updated_at":"2026-11-02T14:07:00.984108Z"}],"osv":[{"id":"CVE-2021-3907","description":"OctoRPKI does not escape a URI with a filename containing \"..\", this allows a repository to create a file, (ex. rsync://example.org/repo/../../etc/cron.daily/evil.roa), which would then be written to disk outside the base cache folder. This could allow for remote code execution on the host machine OctoRPKI is running on.","status":"published","published":"2021-11-11T22:15:07.82Z","modified":"2026-10-20T10:54:52.649200877Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"updated_at":"2026-11-02T15:44:20.843843Z"},{"id":"DEBIAN-CVE-2021-3907","description":"OctoRPKI does not escape a URI with a filename containing \"..\", this allows a repository to create a file, (ex. rsync://example.org/repo/../../etc/cron.daily/evil.roa), which would then be written to disk outside the base cache folder. This could allow for remote code execution on the host machine OctoRPKI is running on.","status":"published","published":"2021-11-11T22:15:07.82Z","modified":"2026-10-23T18:03:32.323963239Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"updated_at":"2026-11-02T15:45:35.521549Z"},{"id":"GHSA-cqh2-vc2f-q4fh","title":"Arbitrary filepath traversal via URI injection ","description":"OctoRPKI does not escape a URI with a filename containing \"..\", this allows a repository to create a file, (ex.  `rsync://example.org/repo/../../etc/cron.daily/evil.roa`), which would then be written to disk outside the base cache folder. This could allow for remote code execution on the host machine OctoRPKI is running on. \n\n## Patches\n\n## For more information\nIf you have any questions or comments about this advisory email us at security@cloudflare.com\n","status":"published","published":"2021-11-10T20:08:29Z","modified":"2026-02-04T02:22:56.432665Z","cvss":[{"version":"3.1","score":7.4,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:H","level":"high"}],"cwes":["CWE-20","CWE-22"],"updated_at":"2026-11-02T15:46:45.28161Z"},{"id":"UBUNTU-CVE-2021-3907","description":"OctoRPKI does not escape a URI with a filename containing \"..\", this allows a repository to create a file, (ex. rsync://example.org/repo/../../etc/cron.daily/evil.roa), which would then be written to disk outside the base cache folder. This could allow for remote code execution on the host machine OctoRPKI is running on.","status":"published","published":"2021-11-11T22:15:00Z","modified":"2025-10-10T15:00:46Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"},{"version":"3.1","score":7.4,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:H","level":"high"}],"updated_at":"2026-11-02T15:54:28.526929Z"},{"id":"DSA-5033-1","title":"fort-validator - security update","status":"published","published":"2021-12-30T00:00:00Z","modified":"2026-03-09T02:10:05.508428Z","updated_at":"2026-11-02T15:46:17.543497Z"},{"id":"DSA-5041-1","title":"cfrpki - security update","status":"published","published":"2022-01-11T00:00:00Z","modified":"2026-03-09T02:10:29.476256Z","updated_at":"2026-11-02T15:46:17.543497Z"},{"id":"GHSA-8459-6rc9-8vf8","title":"Path traversal in github.com/cloudflare/cfrpki/cmd/octorpki","description":"### Impact\n\nIn the case that a malicious TAL file is parsed pointing to a repository that provides a malicious ROA file which octorpki downloads, it is possible to bypass the current directory traversal mitigation to allow writing outside of the current directory. \n\n### Patches\n\nNo patch release has been made","status":"published","published":"2022-02-14T22:52:15Z","modified":"2025-01-14T09:41:54.827947Z","cwes":["CWE-22"],"updated_at":"2026-11-02T15:46:41.732368Z"},{"id":"GO-2022-0248","title":"Directory traversal in manifest path extraction in github.com/cloudflare/cfrpki","description":"Manifest path extraction is vulnerable to directory traversal attacks.\n\nThe ExtractPathManifest function permits file paths containing relative directory components (\"..\"), permitting files to reference arbitrary locations on the filesystem.","status":"published","published":"2022-07-15T23:07:18Z","modified":"2026-02-04T03:00:30.292123Z","updated_at":"2026-11-02T15:47:00.604718Z"}]}}
