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-104049: do not expose on-disk location used by SimpleHTTPServer by ethanfurman · Pull Request #104067 · python/cpython

Conversation

@ethanfurman

@ethanfurman ethanfurman commented May 1, 2023 •
edited by bedevere-bot
Loading

Uh oh!

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

Copy link
Copy Markdown
Member
  • Issue: python 3.11 http.server internal path disclosure #104049

Sorry, something went wrong.

Uh oh!

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

All reactions
@ethanfurman
do not expose on-disk location used by SimpleHTTPServer
346e1a3
@bedevere-bot bedevere-bot added the awaiting core review label May 1, 2023
@bedevere-bot bedevere-bot mentioned this pull request May 1, 2023
python 3.11 http.server internal path disclosure #104049
Closed
@ethanfurman
ethanfurman requested a review from gpshead May 1, 2023 22:06
gpshead
gpshead approved these changes May 2, 2023
View reviewed changes

@gpshead gpshead left a comment

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this fixes the fundamental problem, the local path should never have been exposed. I'm not sure taking the arbitrary binary data from the http request and allowing that to be rendered in the html's codec makes sense (high mojibake potential), but that doesn't feel important here.

using an error handler other than surrogatepass that elides or escapes values might also make sense.

Sorry, something went wrong.

Uh oh!

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

furkanonder and ethanfurman reacted with thumbs up emoji
All reactions
  • 👍 2 reactions
@bedevere-bot bedevere-bot added awaiting merge and removed awaiting core review labels May 2, 2023
@gpshead gpshead added type-security A security issue needs backport to 3.7 needs backport to 3.11 only security fixes labels May 2, 2023
@gpshead gpshead self-assigned this May 2, 2023
@gpshead
reword and ReSTify the news more.
db14615
furkanonder
furkanonder approved these changes May 2, 2023
View reviewed changes
JelleZijlstra
JelleZijlstra reviewed May 3, 2023
View reviewed changes
Comment thread Lib/test/test_httpservers.py Resolved

Uh oh!

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

JelleZijlstra and others added 2 commits May 2, 2023 19:03
@JelleZijlstra
Update Lib/test/test_httpservers.py
0621063
@gpshead
use f-strings
0e6d72b
@gpshead
gpshead enabled auto-merge (squash) May 3, 2023 03:41
@gpshead
gpshead merged commit c7c3a60 into python:main May 3, 2023
@miss-islington

miss-islington commented May 3, 2023

Copy link
Copy Markdown
Contributor

Thanks @ethanfurman for the PR, and @gpshead for merging it 🌮🎉.. I'm working now to backport this PR to: 3.7, 3.8, 3.9, 3.10, 3.11.
🐍🍒⛏🤖

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 May 3, 2023
@miss-islington

miss-islington commented May 3, 2023

Copy link
Copy Markdown
Contributor

Sorry @ethanfurman and @gpshead, I had trouble checking out the 3.11 backport branch.
Please retry by removing and re-adding the "needs backport to 3.11" label.
Alternatively, you can backport using cherry_picker on the command line.
cherry_picker c7c3a60c88de61a79ded9fdaf6bc6a29da4efb9a 3.11

All reactions

Sorry, something went wrong.

Uh oh!

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

@bedevere-bot

bedevere-bot commented May 3, 2023

Copy link
Copy Markdown

GH-104119 is a backport of this pull request to the 3.10 branch.

All reactions

Sorry, something went wrong.

Uh oh!

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

@bedevere-bot bedevere-bot removed the needs backport to 3.10 label May 3, 2023
@bedevere-bot

bedevere-bot commented May 3, 2023

Copy link
Copy Markdown

GH-104120 is a backport of this pull request to the 3.9 branch.

All reactions

Sorry, something went wrong.

Uh oh!

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

@bedevere-bot bedevere-bot removed the needs backport to 3.9 label May 3, 2023
miss-islington pushed a commit to miss-islington/cpython that referenced this pull request May 3, 2023
@ethanfurman @gpshead
@JelleZijlstra @miss-islington
pythongh-104049: do not expose on-disk location from SimpleHTTPReques…
c79e880
…tHandler (pythonGH-104067)

Do not expose the local server's on-disk location from `SimpleHTTPRequestHandler` when generating a directory index. (unnecessary information disclosure)

---------

(cherry picked from commit c7c3a60)

Co-authored-by: Ethan Furman <[email protected]>
Co-authored-by: Gregory P. Smith <[email protected]>
Co-authored-by: Jelle Zijlstra <[email protected]>
@bedevere-bot

bedevere-bot commented May 3, 2023

Copy link
Copy Markdown

GH-104121 is a backport of this pull request to the 3.8 branch.

All reactions

Sorry, something went wrong.

Uh oh!

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

@bedevere-bot bedevere-bot removed the needs backport to 3.8 label May 3, 2023
@bedevere-bot

bedevere-bot commented May 3, 2023

Copy link
Copy Markdown

GH-104122 is a backport of this pull request to the 3.7 branch.

All reactions

Sorry, something went wrong.

Uh oh!

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

@bedevere-bot bedevere-bot removed the needs backport to 3.7 label May 3, 2023
miss-islington pushed a commit to miss-islington/cpython that referenced this pull request May 3, 2023
@ethanfurman @gpshead
@JelleZijlstra @miss-islington
pythongh-104049: do not expose on-disk location from SimpleHTTPReques…
7222d2e
…tHandler (pythonGH-104067)

Do not expose the local server's on-disk location from `SimpleHTTPRequestHandler` when generating a directory index. (unnecessary information disclosure)

---------

(cherry picked from commit c7c3a60)

Co-authored-by: Ethan Furman <[email protected]>
Co-authored-by: Gregory P. Smith <[email protected]>
Co-authored-by: Jelle Zijlstra <[email protected]>
miss-islington pushed a commit to miss-islington/cpython that referenced this pull request May 3, 2023
@ethanfurman @gpshead
@JelleZijlstra @miss-islington
pythongh-104049: do not expose on-disk location from SimpleHTTPReques…
249a115
…tHandler (pythonGH-104067)

Do not expose the local server's on-disk location from `SimpleHTTPRequestHandler` when generating a directory index. (unnecessary information disclosure)

---------

(cherry picked from commit c7c3a60)

Co-authored-by: Ethan Furman <[email protected]>
Co-authored-by: Gregory P. Smith <[email protected]>
Co-authored-by: Jelle Zijlstra <[email protected]>
@gpshead gpshead added needs backport to 3.11 only security fixes and removed needs backport to 3.11 only security fixes labels May 3, 2023
@miss-islington

miss-islington commented May 3, 2023

Copy link
Copy Markdown
Contributor

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

All reactions

Sorry, something went wrong.

Uh oh!

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

@bedevere-bot

bedevere-bot commented May 3, 2023

Copy link
Copy Markdown

GH-104123 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.

@bedevere-bot bedevere-bot removed the needs backport to 3.11 only security fixes label May 3, 2023
miss-islington pushed a commit to miss-islington/cpython that referenced this pull request May 3, 2023
@ethanfurman @gpshead
@JelleZijlstra @miss-islington
pythongh-104049: do not expose on-disk location from SimpleHTTPReques…
9bfc314
…tHandler (pythonGH-104067)

Do not expose the local server's on-disk location from `SimpleHTTPRequestHandler` when generating a directory index. (unnecessary information disclosure)

---------

(cherry picked from commit c7c3a60)

Co-authored-by: Ethan Furman <[email protected]>
Co-authored-by: Gregory P. Smith <[email protected]>
Co-authored-by: Jelle Zijlstra <[email protected]>
gpshead added a commit that referenced this pull request May 3, 2023
@miss-islington @ethanfurman
@gpshead @JelleZijlstra
[3.11] gh-104049: do not expose on-disk location from SimpleHTTPReque…
4536b2e
…stHandler (GH-104067) (#104123)

gh-104049: do not expose on-disk location from SimpleHTTPRequestHandler (GH-104067)

Do not expose the local server's on-disk location from `SimpleHTTPRequestHandler` when generating a directory index. (unnecessary information disclosure)

---------

(cherry picked from commit c7c3a60)

Co-authored-by: Ethan Furman <[email protected]>
Co-authored-by: Gregory P. Smith <[email protected]>
Co-authored-by: Jelle Zijlstra <[email protected]>
@erlend-aasland erlend-aasland mentioned this pull request May 3, 2023
gh-104146: Remove unused 'second_pass_replacements' from clinic.py #104147
Merged
gpshead added a commit that referenced this pull request May 9, 2023
@miss-islington @ethanfurman
@gpshead @JelleZijlstra
[3.10] gh-104049: do not expose on-disk location from SimpleHTTPReque…
d77e77c
…stHandler (GH-104067) (#104119)

gh-104049: do not expose on-disk location from SimpleHTTPRequestHandler (GH-104067)

Do not expose the local server's on-disk location from `SimpleHTTPRequestHandler` when generating a directory index. (unnecessary information disclosure)

---------

(cherry picked from commit c7c3a60)

Co-authored-by: Ethan Furman <[email protected]>
Co-authored-by: Gregory P. Smith <[email protected]>
Co-authored-by: Jelle Zijlstra <[email protected]>
ambv pushed a commit that referenced this pull request May 22, 2023
@miss-islington @ethanfurman
@gpshead @JelleZijlstra
[3.8] gh-104049: do not expose on-disk location from SimpleHTTPReques…
2062fce
…tHandler (GH-104067) (#104121)

Do not expose the local server's on-disk location from `SimpleHTTPRequestHandler` when generating a directory index. (unnecessary information disclosure)

(cherry picked from commit c7c3a60)

Co-authored-by: Ethan Furman <[email protected]>
Co-authored-by: Gregory P. Smith <[email protected]>
Co-authored-by: Jelle Zijlstra <[email protected]>
ambv pushed a commit that referenced this pull request May 22, 2023
@miss-islington @ethanfurman
@gpshead @JelleZijlstra
[3.9] gh-104049: do not expose on-disk location from SimpleHTTPReques…
b53d0ff
…tHandler (GH-104067) (#104120)

Do not expose the local server's on-disk location from `SimpleHTTPRequestHandler` when generating a directory index. (unnecessary information disclosure)

(cherry picked from commit c7c3a60)

Co-authored-by: Ethan Furman <[email protected]>
Co-authored-by: Gregory P. Smith <[email protected]>
Co-authored-by: Jelle Zijlstra <[email protected]>
@lazka

lazka commented Jun 13, 2023

Copy link
Copy Markdown
Contributor

The invalid escape sequence used in the tests makes some tests fail here.. I wonder why only I see it:

test test___all__ failed -- Traceback (most recent call last):
  File "C:\msys64\home\user\git\cpython-mingw\Lib\test\test___all__.py", line 111, in test_all
    self.check_all(modname)
  File "C:\msys64\home\user\git\cpython-mingw\Lib\test\test___all__.py", line 26, in check_all
    with warnings_helper.check_warnings(
  File "C:\msys64\home\user\git\cpython-mingw\Lib\contextlib.py", line 142, in __exit__
    next(self.gen)
  File "C:\msys64\home\user\git\cpython-mingw\Lib\test\support\warnings_helper.py", line 177, in _filterwarnings
    raise AssertionError("unhandled warning %s" % reraise[0])
AssertionError: unhandled warning {message : DeprecationWarning("invalid escape sequence '\\?'"), category : 'DeprecationWarning', filename : 'C:\\msys64\\home\\user\\git\\cpython-mingw\\Lib\\test\\test_httpservers.py', lineno : 423, line : None}
All reactions

Sorry, something went wrong.

Uh oh!

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

lazka added a commit to msys2-contrib/cpython-mingw that referenced this pull request Jun 13, 2023
@lazka
tests: fix invalid escape sequence
b063029
fallout from python#104067
lazka added a commit to msys2-contrib/cpython-mingw that referenced this pull request Jun 14, 2023
@lazka
tests: fix invalid escape sequence
d3fd6a9
fallout from python#104067
@mattip mattip mentioned this pull request Jun 14, 2023
test added in gh-104067 has an fstring with an invalid escape sequence #105784
Closed
carlosroman added a commit to DataDog/cpython that referenced this pull request Jun 22, 2023
@carlosroman @ambv
@benjaminp @ned-deily @miss-islington @thunder-007 @gpshead @ucodery @hugovk @zooba @OTheDev Éric @arhadthedev @corona10 @Blind4Basics @CAM-Gerlach @pradyunsg @encukou @samcarroll42 @ethanfurman @JelleZijlstra @gaogaotiantian @iritkatriel @stratakis @illia-v
Upgrade to 3.8.17 (#26)
e0a363f
* Post 3.8.16

* [3.8] Update copyright years to 2023. (pythongh-100852)

* [3.8] Update copyright years to 2023. (pythongh-100848).
(cherry picked from commit 11f9932)

Co-authored-by: Benjamin Peterson <[email protected]>

* Update additional copyright years to 2023.

Co-authored-by: Ned Deily <[email protected]>

* [3.8] Update copyright year in README (pythonGH-100863) (pythonGH-100867)

(cherry picked from commit 30a6cc4)

Co-authored-by: Ned Deily <[email protected]>
Co-authored-by: HARSHA VARDHAN <[email protected]>

* [3.8] Correct CVE-2020-10735 documentation (pythonGH-100306) (python#100698)

(cherry picked from commit 1cf3d78)
(cherry picked from commit 88fe8d7)

Co-authored-by: Jeremy Paige <[email protected]>
Co-authored-by: Gregory P. Smith <[email protected]>

* [3.8] Bump Azure Pipelines to ubuntu-22.04 (pythonGH-101089) (python#101215)

(cherry picked from commit c22a55c)

Co-authored-by: Hugo van Kemenade <[email protected]>

* [3.8] pythongh-100180: Update Windows installer to OpenSSL 1.1.1s (pythonGH-100903) (python#101258)

* pythongh-101422: (docs) TarFile default errorlevel argument is 1, not 0 (pythonGH-101424)

(cherry picked from commit ea23271)

Co-authored-by: Owain Davies <[email protected]>

* [3.8] pythongh-95778: add doc missing in some places (pythonGH-100627) (python#101630)

(cherry picked from commit 4652182)

* [3.8] pythongh-101283: Improved fallback logic for subprocess with shell=True on Windows (pythonGH-101286) (python#101710)

Co-authored-by: Oleg Iarygin <[email protected]>
Co-authored-by: Steve Dower <[email protected]>

* [3.8] pythongh-101981: Fix Ubuntu SSL tests with OpenSSL (3.1.0-beta1) CI i… (python#102095)

[3.8] pythongh-101981: Fix Ubuntu SSL tests with OpenSSL (3.1.0-beta1) CI issue (pythongh-102079)

* [3.8] pythonGH-102306 Avoid GHA CI macOS test_posix failure by using the appropriate macOS SDK (pythonGH-102307)

[3.8] Avoid GHA CI macOS test_posix failure by using the appropriate macOS SDK.

* [3.8] pythongh-101726: Update the OpenSSL version to 1.1.1t (pythonGH-101727) (pythonGH-101752)

Fixes CVE-2023-0286 (High) and a couple of Medium security issues.
https://www.openssl.org/news/secadv/20230207.txt

Co-authored-by: Gregory P. Smith <[email protected]>
Co-authored-by: Ned Deily <[email protected]>

* [3.8] pythongh-102627: Replace address pointing toward malicious web page (pythonGH-102630) (pythonGH-102667)

(cherry picked from commit 61479d4)

Co-authored-by: Blind4Basics <[email protected]>
Co-authored-by: C.A.M. Gerlach <[email protected]>
Co-authored-by: Hugo van Kemenade <[email protected]>

* [3.8] pythongh-101997: Update bundled pip version to 23.0.1 (pythonGH-101998). (python#102244)

(cherry picked from commit 89d9ff0)

* [3.8] pythongh-102950: Implement PEP 706 – Filter for tarfile.extractall (pythonGH-102953) (python#104548)

Backport of c8c3956

* [3.8] pythongh-99889: Fix directory traversal security flaw in uu.decode() (pythonGH-104096) (python#104332)

(cherry picked from commit 0aeda29)

Co-authored-by: Sam Carroll <[email protected]>

* [3.8] pythongh-104049: do not expose on-disk location from SimpleHTTPRequestHandler (pythonGH-104067) (python#104121)

Do not expose the local server's on-disk location from `SimpleHTTPRequestHandler` when generating a directory index. (unnecessary information disclosure)

(cherry picked from commit c7c3a60)

Co-authored-by: Ethan Furman <[email protected]>
Co-authored-by: Gregory P. Smith <[email protected]>
Co-authored-by: Jelle Zijlstra <[email protected]>

* [3.8] pythongh-103935: Use `io.open_code()` when executing code in trace and profile modules (pythonGH-103947) (python#103954)

Co-authored-by: Tian Gao <[email protected]>

* [3.8] pythongh-68966: fix versionchanged in docs (pythonGH-105299)

* [3.8] Update GitHub CI workflow for macOS. (pythonGH-105302)

* [3.8] pythongh-105184: document that marshal functions can fail and need to be checked with PyErr_Occurred (pythonGH-105185) (python#105222)

(cherry picked from commit ee26ca1)

Co-authored-by: Irit Katriel <[email protected]>

* [3.8] pythongh-102153: Start stripping C0 control and space chars in `urlsplit` (pythonGH-102508) (pythonGH-104575) (pythonGH-104592) (python#104593) (python#104895)

`urllib.parse.urlsplit` has already been respecting the WHATWG spec a bit pythonGH-25595.

This adds more sanitizing to respect the "Remove any leading C0 control or space from input" [rule](https://url.spec.whatwg.org/GH-url-parsing:~:text=Remove%20any%20leading%20and%20trailing%20C0%20control%20or%20space%20from%20input.) in response to [CVE-2023-24329](https://nvd.nist.gov/vuln/detail/CVE-2023-24329).

I simplified the docs by eliding the state of the world explanatory
paragraph in this security release only backport.  (people will see
that in the mainline /3/ docs)

(cherry picked from commit d7f8a5f)
(cherry picked from commit 2f630e1)
(cherry picked from commit 610cc0a)
(cherry picked from commit f48a96a)

Co-authored-by: Miss Islington (bot) <[email protected]>
Co-authored-by: Illia Volochii <[email protected]>
Co-authored-by: Gregory P. Smith [Google] <[email protected]>

* [3.8] pythongh-103142: Upgrade binary builds and CI to OpenSSL 1.1.1u (pythonGH-105174) (pythonGH-105200) (pythonGH-105205) (python#105370)

Upgrade builds to OpenSSL 1.1.1u.

Also updates _ssl_data_111.h from OpenSSL 1.1.1u, _ssl_data_300.h from 3.0.9.

Manual edits to the _ssl_data_300.h file prevent it from removing any
existing definitions in case those exist in some peoples builds and were
important (avoiding regressions during backporting).

(cherry picked from commit ede89af)
(cherry picked from commit e15de14)

Co-authored-by: Gregory P. Smith <[email protected]>
Co-authored-by: Ned Deily <[email protected]>

* Python 3.8.17

* Post 3.8.17

* Updated CI to build 3.8.17

---------

Co-authored-by: Łukasz Langa <[email protected]>
Co-authored-by: Benjamin Peterson <[email protected]>
Co-authored-by: Ned Deily <[email protected]>
Co-authored-by: Miss Islington (bot) <[email protected]>
Co-authored-by: HARSHA VARDHAN <[email protected]>
Co-authored-by: Gregory P. Smith <[email protected]>
Co-authored-by: Jeremy Paige <[email protected]>
Co-authored-by: Hugo van Kemenade <[email protected]>
Co-authored-by: Steve Dower <[email protected]>
Co-authored-by: Owain Davies <[email protected]>
Co-authored-by: Éric <[email protected]>
Co-authored-by: Oleg Iarygin <[email protected]>
Co-authored-by: Steve Dower <[email protected]>
Co-authored-by: Dong-hee Na <[email protected]>
Co-authored-by: Blind4Basics <[email protected]>
Co-authored-by: C.A.M. Gerlach <[email protected]>
Co-authored-by: Pradyun Gedam <[email protected]>
Co-authored-by: Petr Viktorin <[email protected]>
Co-authored-by: Sam Carroll <[email protected]>
Co-authored-by: Ethan Furman <[email protected]>
Co-authored-by: Jelle Zijlstra <[email protected]>
Co-authored-by: Tian Gao <[email protected]>
Co-authored-by: Irit Katriel <[email protected]>
Co-authored-by: stratakis <[email protected]>
Co-authored-by: Illia Volochii <[email protected]>
@ethanfurman
ethanfurman deleted the http-path_reveal branch February 1, 2024 01:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@JelleZijlstra JelleZijlstra JelleZijlstra left review comments
@gpshead gpshead gpshead approved these changes
@furkanonder furkanonder furkanonder approved these changes

Uh oh!

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

Assignees

@gpshead gpshead

Labels

type-security A security issue

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.

7 participants

@ethanfurman @miss-islington @bedevere-bot @lazka @gpshead @JelleZijlstra @furkanonder
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.