GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — gh-99418: Make urllib.parse.urlparse enforce that a scheme must begin with an alphabetical ASCII character. by kenballus · Pull Request #99421 · python/cpython

Conversation

@kenballus

@kenballus kenballus commented Nov 12, 2022 •
edited by bedevere-bot
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Contributor

urllib.parse.urlparse does not enforce that a scheme must begin with a character from [A-Za-z]. This patch adds a check to enforce that rule.

  • Issue: [tangentially related to CVE-2023-24329] urlparse does not correctly handle schemes that begin with ASCII digits, '+', '-', and '.' characters #99418

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
kenballus added 2 commits November 12, 2022 15:43
@kenballus
gh-99418: Prevent urllib.parse.urlparse from accepting schemes that d…
a284d69
…on't begin with an alphabetical ASCII character.
@kenballus
gh-99418: Prevent urllib.parse.urlparse from accepting schemes that d…
09d30c9
…on't begin with an alphabetical ASCII character.
@bedevere-bot bedevere-bot mentioned this pull request Nov 12, 2022
[tangentially related to CVE-2023-24329] urlparse does not correctly handle schemes that begin with ASCII digits, '+', '-', and '.' characters #99418
Closed
@bedevere-bot bedevere-bot added the awaiting review label Nov 12, 2022
@gpshead gpshead self-assigned this Nov 13, 2022
gpshead
gpshead approved these changes Nov 13, 2022
View reviewed changes
@bedevere-bot bedevere-bot added awaiting merge and removed awaiting review labels Nov 13, 2022
@gpshead gpshead added the needs backport to 3.11 only security fixes label Nov 13, 2022
@gpshead
gpshead merged commit 439b9cf into python:main Nov 13, 2022
@miss-islington

miss-islington commented Nov 13, 2022

Copy link
Copy Markdown
Contributor

Thanks @kenballus for the PR, and @gpshead for merging it 🌮🎉.. I'm working now to backport this PR to: 3.11.
🐍🍒⛏🤖 I'm not a witch! I'm not a witch!

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@bedevere-bot bedevere-bot removed the awaiting merge label Nov 13, 2022
@bedevere-bot

bedevere-bot commented Nov 13, 2022

Copy link
Copy Markdown

GH-99446 is a backport of this pull request to the 3.11 branch.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

miss-islington pushed a commit to miss-islington/cpython that referenced this pull request Nov 13, 2022
@kenballus @miss-islington
pythongh-99418: Make urllib.parse.urlparse enforce that a scheme must…
4e0f5af
… begin with an alphabetical ASCII character. (pythonGH-99421)

Prevent urllib.parse.urlparse from accepting schemes that don't begin with an alphabetical ASCII character.

RFC 3986 defines a scheme like this: `scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." )`
RFC 2234 defines an ALPHA like this: `ALPHA = %x41-5A / %x61-7A`

The WHATWG URL spec defines a scheme like this:
`"A URL-scheme string must be one ASCII alpha, followed by zero or more of ASCII alphanumeric, U+002B (+), U+002D (-), and U+002E (.)."`
(cherry picked from commit 439b9cf)

Co-authored-by: Ben Kallus <[email protected]>
@bedevere-bot bedevere-bot removed the needs backport to 3.11 only security fixes label Nov 13, 2022
miss-islington added a commit that referenced this pull request Nov 13, 2022
@miss-islington @kenballus
gh-99418: Make urllib.parse.urlparse enforce that a scheme must begin…
72d356e
… with an alphabetical ASCII character. (GH-99421)

Prevent urllib.parse.urlparse from accepting schemes that don't begin with an alphabetical ASCII character.

RFC 3986 defines a scheme like this: `scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." )`
RFC 2234 defines an ALPHA like this: `ALPHA = %x41-5A / %x61-7A`

The WHATWG URL spec defines a scheme like this:
`"A URL-scheme string must be one ASCII alpha, followed by zero or more of ASCII alphanumeric, U+002B (+), U+002D (-), and U+002E (.)."`
(cherry picked from commit 439b9cf)

Co-authored-by: Ben Kallus <[email protected]>
@AdrianBunk AdrianBunk mentioned this pull request Feb 22, 2023
urllib.parse space handling CVE-2023-24329 appears unfixed #102153
Closed
@kwsp kwsp mentioned this pull request Mar 9, 2023
Unexpected urllib parse result #98022
Closed
@vstinner

vstinner commented Apr 5, 2023

Copy link
Copy Markdown
Member

CVE-2023-24329 was assigned to this issue.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@vstinner vstinner changed the title gh-99418: Make urllib.parse.urlparse enforce that a scheme must begin with an alphabetical ASCII character. [CVE-2023-24329] gh-99418: Make urllib.parse.urlparse enforce that a scheme must begin with an alphabetical ASCII character. Apr 5, 2023
@gpshead

gpshead commented Apr 27, 2023

Copy link
Copy Markdown
Member

CVE-2023-24329 was assigned to this issue.

That this PR does not fix that CVE. The CVE is inaccurate. See #102153.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@gpshead gpshead changed the title [CVE-2023-24329] gh-99418: Make urllib.parse.urlparse enforce that a scheme must begin with an alphabetical ASCII character. gh-99418: Make urllib.parse.urlparse enforce that a scheme must begin with an alphabetical ASCII character. Apr 27, 2023
This was referenced Oct 11, 2023
Patch for Python CVE-2023-24329 microsoft/azurelinux#6405
Closed
Patch Python CVE-2023-24329 microsoft/azurelinux#6412
Merged
gentoo-bot pushed a commit to gentoo/cpython that referenced this pull request May 21, 2024
@miss-islington @kenballus @mgorny
pythongh-99418: Make urllib.parse.urlparse enforce that a scheme must…
5355793
… begin with an alphabetical ASCII character. (pythonGH-99421)

Prevent urllib.parse.urlparse from accepting schemes that don't begin with an alphabetical ASCII character.

RFC 3986 defines a scheme like this: `scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." )`
RFC 2234 defines an ALPHA like this: `ALPHA = %x41-5A / %x61-7A`

The WHATWG URL spec defines a scheme like this:
`"A URL-scheme string must be one ASCII alpha, followed by zero or more of ASCII alphanumeric, U+002B (+), U+002D (-), and U+002E (.)."`
(cherry picked from commit 439b9cf)

Co-authored-by: Ben Kallus <[email protected]>
gentoo-bot pushed a commit to gentoo/cpython that referenced this pull request May 21, 2024
@miss-islington @kenballus @mgorny
pythongh-99418: Make urllib.parse.urlparse enforce that a scheme must…
60effed
… begin with an alphabetical ASCII character. (pythonGH-99421)

Prevent urllib.parse.urlparse from accepting schemes that don't begin with an alphabetical ASCII character.

RFC 3986 defines a scheme like this: `scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." )`
RFC 2234 defines an ALPHA like this: `ALPHA = %x41-5A / %x61-7A`

The WHATWG URL spec defines a scheme like this:
`"A URL-scheme string must be one ASCII alpha, followed by zero or more of ASCII alphanumeric, U+002B (+), U+002D (-), and U+002E (.)."`
(cherry picked from commit 439b9cf)

Co-authored-by: Ben Kallus <[email protected]>
gentoo-bot pushed a commit to gentoo/cpython that referenced this pull request Sep 19, 2024
@miss-islington @kenballus @mgorny
pythongh-99418: Make urllib.parse.urlparse enforce that a scheme must…
64a1112
… begin with an alphabetical ASCII character. (pythonGH-99421)

Prevent urllib.parse.urlparse from accepting schemes that don't begin with an alphabetical ASCII character.

RFC 3986 defines a scheme like this: `scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." )`
RFC 2234 defines an ALPHA like this: `ALPHA = %x41-5A / %x61-7A`

The WHATWG URL spec defines a scheme like this:
`"A URL-scheme string must be one ASCII alpha, followed by zero or more of ASCII alphanumeric, U+002B (+), U+002D (-), and U+002E (.)."`
(cherry picked from commit 439b9cf)

Co-authored-by: Ben Kallus <[email protected]>
gentoo-bot pushed a commit to gentoo/cpython that referenced this pull request Sep 19, 2024
@miss-islington @kenballus @mgorny
pythongh-99418: Make urllib.parse.urlparse enforce that a scheme must…
8ba4d66
… begin with an alphabetical ASCII character. (pythonGH-99421)

Prevent urllib.parse.urlparse from accepting schemes that don't begin with an alphabetical ASCII character.

RFC 3986 defines a scheme like this: `scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." )`
RFC 2234 defines an ALPHA like this: `ALPHA = %x41-5A / %x61-7A`

The WHATWG URL spec defines a scheme like this:
`"A URL-scheme string must be one ASCII alpha, followed by zero or more of ASCII alphanumeric, U+002B (+), U+002D (-), and U+002E (.)."`
(cherry picked from commit 439b9cf)

Co-authored-by: Ben Kallus <[email protected]>
@sajjaphani sajjaphani mentioned this pull request May 19, 2025
[Security] Vulnerability found in Security vulnerability CVE-2023-24329 in package python habitat-sh/foundational-packages#60
Closed
gentoo-bot pushed a commit to gentoo/cpython that referenced this pull request Jul 30, 2025
@miss-islington @kenballus @mgorny
pythongh-99418: Make urllib.parse.urlparse enforce that a scheme must…
7e53cdb
… begin with an alphabetical ASCII character. (pythonGH-99421)

Prevent urllib.parse.urlparse from accepting schemes that don't begin with an alphabetical ASCII character.

RFC 3986 defines a scheme like this: `scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." )`
RFC 2234 defines an ALPHA like this: `ALPHA = %x41-5A / %x61-7A`

The WHATWG URL spec defines a scheme like this:
`"A URL-scheme string must be one ASCII alpha, followed by zero or more of ASCII alphanumeric, U+002B (+), U+002D (-), and U+002E (.)."`
(cherry picked from commit 439b9cf)

Co-authored-by: Ben Kallus <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@gpshead gpshead gpshead approved these changes

Uh oh!

There was an error while loading. Please reload this page.

Assignees

@gpshead gpshead

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

5 participants

@kenballus @miss-islington @bedevere-bot @vstinner @gpshead
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.