{"id":"CVE-2026-28413","aliases":["GHSA-43gx-6gv6-3jcp","PYSEC-2026-112"],"url":"https://o3.security/vulnerability/CVE-2026-28413","summary":"Products.isurlinportal: Possible open redirect when using more than 2 forward slashes","details":"### Impact\nA url `/login?came_from=////evil.example` may redirect to an external website after login.\n\nStandard Plone is not affected, but if you have customised the login, for example with add-ons, you might be affected. You can try the url to check if you are affected or not.\n\n### Patches\nThe problem has been patched in `Products.isurlinportal`.\n\n* Plone 6.2: upgrade to `Products.isurlinportal` 4.0.0.\n* Plone 6.1: upgrade to `Products.isurlinportal` 3.1.0.\n* Plone 6.0: upgrade to `Products.isurlinportal` 2.1.0.\n* Older Plone versions don't have security support anymore.\n\n### Workarounds\nThere are no known workarounds.\n\n### Background\nWhen you are anonymous and land on a page that requires a login, Plone sends you to the login form. After successful login, Plone redirects you back to the page you came from.  Various other forms and pages have a similar system.\n\nThis could get abused by an attacker to trick Plone into redirecting to a different website. Plone checks the page that would be redirected to. It is only accepted if it is within the Plone site domain or part of a different trusted domain.\n\nThe main check for this is in the `Products.isurlinportal` package. A lot of potentially malicious urls are already safely rejected, but here a loop hole was found.\n\nThis was discovered during a penetration test by the CERT-EU Team.","published":"2026-03-05T20:16:10.098Z","modified":"2026-08-12T03:51:35.948401947Z","cvss":{"score":5.3,"severity":"MEDIUM","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N"},"epss":null,"cisaKev":null,"exploitsKnown":0,"affectedPackages":[{"ecosystem":"PyPI","name":"products-isurlinportal","fixedVersion":"4.0.0"},{"ecosystem":"PyPI","name":"products-isurlinportal","fixedVersion":"3.1.0"},{"ecosystem":"PyPI","name":"products-isurlinportal","fixedVersion":"2.1.0"},{"ecosystem":"PyPI","name":"products-isurlinportal","fixedVersion":"2.1.0"},{"ecosystem":"PyPI","name":"products-isurlinportal","fixedVersion":"3.1.0"}],"fix":null,"references":[{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/28xxx/CVE-2026-28413.json"},{"type":"ADVISORY","url":"https://github.com/plone/Products.isurlinportal/security/advisories/GHSA-43gx-6gv6-3jcp"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-28413"},{"type":"PACKAGE","url":"https://github.com/plone/Products.isurlinportal"},{"type":"WEB","url":"https://github.com/pypa/advisory-database/tree/main/vulns/products-isurlinportal/PYSEC-2026-112.yaml"}],"provenance":{"sources":["OSV.dev","FIRST.org (EPSS)"],"lastVerified":"2026-08-12T03:51:35.948401947Z"}}