CVE-2026-9323
Insecure PRNG and Information Exposure in urwid Web Display Backend
The urwid web display backend (urwid/display/web.py) generates web session identifiers (urwid_id) in Screen.start() by concatenating two random.randrange(10**9) calls that use Python's Mersenne Twister PRNG, which is not cryptographically secure. Each call consumes approximately 30 bits of PRNG state, and the Mersenne Twister internal state is approximately 19,937 bits, so an attacker who observes approximately 334 session IDs (for example via the X-Urwid-ID HTTP response header) can fully reconstruct the internal state and predict all past and future session IDs (Path B). The same identifier is also used as the filename of a FIFO created in the world-listable /tmp directory (for example /tmp/urwid375487765176907690.in), so any local user on the host can list /tmp to enumerate active session tokens directly (Path A). With a valid session ID, an attacker can read the victim's terminal screen via the polling endpoint, inject keystrokes into the victim's session (yielding OS-level code execution with the session owner's privileges if the session runs a shell), and inject exit sequences or flood the FIFO to terminate or crash the session. A prior Bandit S311 warning on this usage was suppressed with # noqa: S311 rather than fixed
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- High
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- High
- Integrity
- High
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
9.2
Insecure PRNG and Information Exposure in urwid Web Display Backend
The urwid web display backend (urwid/display/web.py) generates web session identifiers (urwid_id) in Screen.start() by concatenating two random.randrange(10**9) calls that use Python's Mersenne Twister PRNG, which is not cryptographically secure. Each call consumes approximately 30 bits of PRNG state, and the Mersenne Twister internal state is approximately 19,937 bits, so an attacker who observes approximately 334 session IDs (for example via the X-Urwid-ID HTTP response header) can fully reconstruct the internal state and predict all past and future session IDs (Path B). The same identifier is also used as the filename of a FIFO created in the world-listable /tmp directory (for example /tmp/urwid375487765176907690.in), so any local user on the host can list /tmp to enumerate active session tokens directly (Path A). With a valid session ID, an attacker can read the victim's terminal screen via the polling endpoint, inject keystrokes into the victim's session (yielding OS-level code execution with the session owner's privileges if the session runs a shell), and inject exit sequences or flood the FIFO to terminate or crash the session. A prior Bandit S311 warning on this usage was suppressed with # noqa: S311 rather than fixed
- Record
CVE-2026-9323- CVSS 4.0
- 9.2 Critical
CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N - CVSS 3.1
- 8.1 High
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-338
- Updated
- 2026-11-02
EUVDEUVD-2026-45381
9.2
The urwid web display backend (urwid/display/web.py) generates web session identifiers (urwid_id) in Screen.start() by concatenating two random.randrange(10**9) calls that use Python's Mersenne Twister PRNG, which is not cryptographically secure. Each call consumes approximately 30 bits of PRNG state, and the Mersenne Twister internal state is approximately 19,937 bits, so an attacker who observes approximately 334 session IDs (for example via the X-Urwid-ID HTTP response header) can fully reconstruct the internal state and predict all past and future session IDs (Path B). The same identifier is also used as the filename of a FIFO created in the world-listable /tmp directory (for example /tmp/urwid375487765176907690.in), so any local user on the host can list /tmp to enumerate active session tokens directly (Path A). With a valid session ID, an attacker can read the victim's terminal screen via the polling endpoint, inject keystrokes into the victim's session (yielding OS-level code execution with the session owner's privileges if the session runs a shell), and inject exit sequences or flood the FIFO to terminate or crash the session. A prior Bandit S311 warning on this usage was suppressed with # noqa: S311 rather than fixed
- Record
EUVD-2026-45381- CVSS 4.0
- 9.2 Critical
CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-83x9-8wvq-rrcp
9.2
Duplicate Advisory: urwid: Insecure PRNG and Information Exposure in Web Display Backend
Duplicate Advisory
This advisory has been withdrawn because it is a duplicate of GHSA-rjwp-g85x-gmjv. This link is maintained to preserve external references.
Original Description
The urwid web display backend (urwid/display/web.py) generates web session identifiers (urwid_id) in Screen.start() by concatenating two random.randrange(10**9) calls that use Python's Mersenne Twister PRNG, which is not cryptographically secure. Each call consumes approximately 30 bits of PRNG state, and the Mersenne Twister internal state is approximately 19,937 bits, so an attacker who observes approximately 334 session IDs (for example via the X-Urwid-ID HTTP response header) can fully reconstruct the internal state and predict all past and future session IDs (Path B). The same identifier is also used as the filename of a FIFO created in the world-listable /tmp directory (for example /tmp/urwid375487765176907690.in), so any local user on the host can list /tmp to enumerate active session tokens directly (Path A). With a valid session ID, an attacker can read the victim's terminal screen via the polling endpoint, inject keystrokes into the victim's session (yielding OS-level code execution with the session owner's privileges if the session runs a shell), and inject exit sequences or flood the FIFO to terminate or crash the session. A prior Bandit S311 warning on this usage was suppressed with # noqa: S311 rather than fixed
- Record
GHSA-83x9-8wvq-rrcp- CVSS 4.0
- 9.2 Critical
CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N - CVSS 3.1
- 8.1 High
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-338
- Updated
- 2026-11-05
NVD
9.2
The urwid web display backend (urwid/display/web.py) generates web session identifiers (urwid_id) in Screen.start() by concatenating two random.randrange(10**9) calls that use Python's Mersenne Twister PRNG, which is not cryptographically secure. Each call consumes approximately 30 bits of PRNG state, and the Mersenne Twister internal state is approximately 19,937 bits, so an attacker who observes approximately 334 session IDs (for example via the X-Urwid-ID HTTP response header) can fully reconstruct the internal state and predict all past and future session IDs (Path B). The same identifier is also used as the filename of a FIFO created in the world-listable /tmp directory (for example /tmp/urwid375487765176907690.in), so any local user on the host can list /tmp to enumerate active session tokens directly (Path A). With a valid session ID, an attacker can read the victim's terminal screen via the polling endpoint, inject keystrokes into the victim's session (yielding OS-level code execution with the session owner's privileges if the session runs a shell), and inject exit sequences or flood the FIFO to terminate or crash the session. A prior Bandit S311 warning on this usage was suppressed with # noqa: S311 rather than fixed
- Record
CVE-2026-9323- CVSS 4.0
- 9.2 Critical
CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - CVSS 3.1
- 8.1 High
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-338
- Updated
- 2026-11-02
OSVBELL-CVE-2026-9323
8.1
- Record
BELL-CVE-2026-9323- CVSS 3.1
- 8.1 High
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSV
9.2
Insecure PRNG and Information Exposure in urwid Web Display Backend
The urwid web display backend (urwid/display/web.py) generates web session identifiers (urwid_id) in Screen.start() by concatenating two random.randrange(10**9) calls that use Python's Mersenne Twister PRNG, which is not cryptographically secure. Each call consumes approximately 30 bits of PRNG state, and the Mersenne Twister internal state is approximately 19,937 bits, so an attacker who observes approximately 334 session IDs (for example via the X-Urwid-ID HTTP response header) can fully reconstruct the internal state and predict all past and future session IDs (Path B). The same identifier is also used as the filename of a FIFO created in the world-listable /tmp directory (for example /tmp/urwid375487765176907690.in), so any local user on the host can list /tmp to enumerate active session tokens directly (Path A). With a valid session ID, an attacker can read the victim's terminal screen via the polling endpoint, inject keystrokes into the victim's session (yielding OS-level code execution with the session owner's privileges if the session runs a shell), and inject exit sequences or flood the FIFO to terminate or crash the session. A prior Bandit S311 warning on this usage was suppressed with # noqa: S311 rather than fixed
- Record
CVE-2026-9323- CVSS 4.0
- 9.2 Critical
CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N - Weakness
- CWE-338
- Updated
- 2026-11-02
Show 26 moreShow less
OSVDEBIAN-CVE-2026-9323
9.2
The urwid web display backend (urwid/display/web.py) generates web session identifiers (urwid_id) in Screen.start() by concatenating two random.randrange(10**9) calls that use Python's Mersenne Twister PRNG, which is not cryptographically secure. Each call consumes approximately 30 bits of PRNG state, and the Mersenne Twister internal state is approximately 19,937 bits, so an attacker who observes approximately 334 session IDs (for example via the X-Urwid-ID HTTP response header) can fully reconstruct the internal state and predict all past and future session IDs (Path B). The same identifier is also used as the filename of a FIFO created in the world-listable /tmp directory (for example /tmp/urwid375487765176907690.in), so any local user on the host can list /tmp to enumerate active session tokens directly (Path A). With a valid session ID, an attacker can read the victim's terminal screen via the polling endpoint, inject keystrokes into the victim's session (yielding OS-level code execution with the session owner's privileges if the session runs a shell), and inject exit sequences or flood the FIFO to terminate or crash the session. A prior Bandit S311 warning on this usage was suppressed with # noqa: S311 rather than fixed
- Record
DEBIAN-CVE-2026-9323- CVSS 4.0
- 9.2 Critical
CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - Updated
- 2026-11-02
OSVGHSA-83x9-8wvq-rrcp
9.2
Duplicate Advisory: urwid: Insecure PRNG and Information Exposure in Web Display Backend
Duplicate Advisory
This advisory has been withdrawn because it is a duplicate of GHSA-rjwp-g85x-gmjv. This link is maintained to preserve external references.
Original Description
The urwid web display backend (urwid/display/web.py) generates web session identifiers (urwid_id) in Screen.start() by concatenating two random.randrange(10**9) calls that use Python's Mersenne Twister PRNG, which is not cryptographically secure. Each call consumes approximately 30 bits of PRNG state, and the Mersenne Twister internal state is approximately 19,937 bits, so an attacker who observes approximately 334 session IDs (for example via the X-Urwid-ID HTTP response header) can fully reconstruct the internal state and predict all past and future session IDs (Path B). The same identifier is also used as the filename of a FIFO created in the world-listable /tmp directory (for example /tmp/urwid375487765176907690.in), so any local user on the host can list /tmp to enumerate active session tokens directly (Path A). With a valid session ID, an attacker can read the victim's terminal screen via the polling endpoint, inject keystrokes into the victim's session (yielding OS-level code execution with the session owner's privileges if the session runs a shell), and inject exit sequences or flood the FIFO to terminate or crash the session. A prior Bandit S311 warning on this usage was suppressed with # noqa: S311 rather than fixed
- Record
GHSA-83x9-8wvq-rrcp- CVSS 4.0
- 9.2 Critical
CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N - CVSS 3.1
- 8.1 High
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-338
- Updated
- 2026-11-05
OSVOESA-2026-3193
8.1
python-urwid security update
Urwid is a console user interface library for Python. It includes many features useful for text console application developers
Security Fix(es):
The urwid web display backend (urwid/display/web.py) generates web session identifiers (urwid_id) in Screen.start() by concatenating two random.randrange(10**9) calls that use Python's Mersenne Twister PRNG, which is not cryptographically secure. Each call consumes approximately 30 bits of PRNG state, and the Mersenne Twister internal state is approximately 19,937 bits, so an attacker who observes approximately 334 session IDs (for example via the X-Urwid-ID HTTP response header) can fully reconstruct the internal state and predict all past and future session IDs (Path B). The same identifier is also used as the filename of a FIFO created in the world-listable /tmp directory (for example /tmp/urwid375487765176907690.in), so any local user on the host can list /tmp to enumerate active session tokens directly (Path A). With a valid session ID, an attacker can read the victim's terminal screen via the polling endpoint, inject keystrokes into the victim's session (yielding OS-level code execution with the session owner's privileges if the session runs a shell), and inject exit sequences or flood the FIFO to terminate or crash the session. A prior Bandit S311 warning on this usage was suppressed with # noqa: S311 rather than fixed(CVE-2026-9323)
- Record
OESA-2026-3193- CVSS 3.1
- 8.1 High
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVRHSA-2026:57637
8.1
Red Hat Security Advisory: python-urwid security update
- Record
RHSA-2026:57637- CVSS 3.1
- 8.1 High
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVRHSA-2026:57638
8.1
Red Hat Security Advisory: python-urwid security update
- Record
RHSA-2026:57638- CVSS 3.1
- 8.1 High
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVRHSA-2026:58561
8.1
Red Hat Security Advisory: python-urwid security update
- Record
RHSA-2026:58561- CVSS 3.1
- 8.1 High
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVRHSA-2026:58562
8.1
Red Hat Security Advisory: python-urwid security update
- Record
RHSA-2026:58562- CVSS 3.1
- 8.1 High
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVRHSA-2026:58952
8.1
Red Hat Security Advisory: python-urwid security update
- Record
RHSA-2026:58952- CVSS 3.1
- 8.1 High
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVRHSA-2026:58953
8.1
Red Hat Security Advisory: python-urwid security update
- Record
RHSA-2026:58953- CVSS 3.1
- 8.1 High
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVRHSA-2026:58954
8.1
Red Hat Security Advisory: python-urwid security update
- Record
RHSA-2026:58954- CVSS 3.1
- 8.1 High
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVRHSA-2026:58955
8.1
Red Hat Security Advisory: python-urwid security update
- Record
RHSA-2026:58955- CVSS 3.1
- 8.1 High
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVRHSA-2026:59198
8.1
Red Hat Security Advisory: python-urwid security update
- Record
RHSA-2026:59198- CVSS 3.1
- 8.1 High
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVRHSA-2026:60353
8.1
Red Hat Security Advisory: python-urwid security update
- Record
RHSA-2026:60353- CVSS 3.1
- 8.1 High
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVRLSA-2026:58561
8.1
Important: python-urwid security update
Python is an interpreted, interactive, object-oriented programming language, which includes modules, classes, exceptions, very high level dynamic data types and dynamic typing. Python supports interfaces to many system calls and libraries, as well as to various windowing systems.
Security Fix(es):
- urwid: Urwid: Predictable session IDs lead to remote code execution and information disclosure (CVE-2026-9323)
For more details about the security issue(s), including the impact, a CVSS score, acknowledgments, and other related information, refer to the CVE page(s) listed in the References section.
- Record
RLSA-2026:58561- CVSS 3.1
- 8.1 High
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVRLSA-2026:58562
8.1
Important: python-urwid security update
Python is an interpreted, interactive, object-oriented programming language, which includes modules, classes, exceptions, very high level dynamic data types and dynamic typing. Python supports interfaces to many system calls and libraries, as well as to various windowing systems.
Security Fix(es):
- urwid: Urwid: Predictable session IDs lead to remote code execution and information disclosure (CVE-2026-9323)
For more details about the security issue(s), including the impact, a CVSS score, acknowledgments, and other related information, refer to the CVE page(s) listed in the References section.
- Record
RLSA-2026:58562- CVSS 3.1
- 8.1 High
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVRLSA-2026:58952
8.1
Important: python-urwid security update
Python is an interpreted, interactive, object-oriented programming language, which includes modules, classes, exceptions, very high level dynamic data types and dynamic typing. Python supports interfaces to many system calls and libraries, as well as to various windowing systems.
Security Fix(es):
- urwid: Urwid: Predictable session IDs lead to remote code execution and information disclosure (CVE-2026-9323)
For more details about the security issue(s), including the impact, a CVSS score, acknowledgments, and other related information, refer to the CVE page(s) listed in the References section.
- Record
RLSA-2026:58952- CVSS 3.1
- 8.1 High
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVUBUNTU-CVE-2026-9323
9.2
The urwid web display backend (urwid/display/web.py) generates web session identifiers (urwid_id) in Screen.start() by concatenating two random.randrange(10**9) calls that use Python's Mersenne Twister PRNG, which is not cryptographically secure. Each call consumes approximately 30 bits of PRNG state, and the Mersenne Twister internal state is approximately 19,937 bits, so an attacker who observes approximately 334 session IDs (for example via the X-Urwid-ID HTTP response header) can fully reconstruct the internal state and predict all past and future session IDs (Path B). The same identifier is also used as the filename of a FIFO created in the world-listable /tmp directory (for example /tmp/urwid375487765176907690.in), so any local user on the host can list /tmp to enumerate active session tokens directly (Path A). With a valid session ID, an attacker can read the victim's terminal screen via the polling endpoint, inject keystrokes into the victim's session (yielding OS-level code execution with the session owner's privileges if the session runs a shell), and inject exit sequences or flood the FIFO to terminate or crash the session. A prior Bandit S311 warning on this usage was suppressed with # noqa: S311 rather than fixed
- Record
UBUNTU-CVE-2026-9323- CVSS 4.0
- 9.2 Critical
CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N - CVSS 3.1
- 8.1 High
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVALSA-2026:58561 No score
Important: python-urwid security update
Python is an interpreted, interactive, object-oriented programming language, which includes modules, classes, exceptions, very high level dynamic data types and dynamic typing. Python supports interfaces to many system calls and libraries, as well as to various windowing systems.
Security Fix(es):
- urwid: Urwid: Predictable session IDs lead to remote code execution and information disclosure (CVE-2026-9323)
For more details about the security issue(s), including the impact, a CVSS score, acknowledgments, and other related information, refer to the CVE page(s) listed in the References section.
- Record
ALSA-2026:58561- Updated
- 2026-11-02
OSVALSA-2026:58562 No score
Important: python-urwid security update
Python is an interpreted, interactive, object-oriented programming language, which includes modules, classes, exceptions, very high level dynamic data types and dynamic typing. Python supports interfaces to many system calls and libraries, as well as to various windowing systems.
Security Fix(es):
- urwid: Urwid: Predictable session IDs lead to remote code execution and information disclosure (CVE-2026-9323)
For more details about the security issue(s), including the impact, a CVSS score, acknowledgments, and other related information, refer to the CVE page(s) listed in the References section.
- Record
ALSA-2026:58562- Updated
- 2026-11-02
OSVALSA-2026:58952 No score
Important: python-urwid security update
Python is an interpreted, interactive, object-oriented programming language, which includes modules, classes, exceptions, very high level dynamic data types and dynamic typing. Python supports interfaces to many system calls and libraries, as well as to various windowing systems.
Security Fix(es):
- urwid: Urwid: Predictable session IDs lead to remote code execution and information disclosure (CVE-2026-9323)
For more details about the security issue(s), including the impact, a CVSS score, acknowledgments, and other related information, refer to the CVE page(s) listed in the References section.
- Record
ALSA-2026:58952- Updated
- 2026-11-02
OSVAZL-92916 No score
CVE-2026-9323 affecting package python-urwid 2.6.14-1
The urwid web display backend (urwid/display/web.py) generates web session identifiers (urwid_id) in Screen.start() by concatenating two random.randrange(10**9) calls that use Python's Mersenne Twister PRNG, which is not cryptographically secure. Each call consumes approximately 30 bits of PRNG state, and the Mersenne Twister internal state is approximately 19,937 bits, so an attacker who observes approximately 334 session IDs (for example via the X-Urwid-ID HTTP response header) can fully reconstruct the internal state and predict all past and future session IDs (Path B). The same identifier is also used as the filename of a FIFO created in the world-listable /tmp directory (for example /tmp/urwid375487765176907690.in), so any local user on the host can list /tmp to enumerate active session tokens directly (Path A). With a valid session ID, an attacker can read the victim's terminal screen via the polling endpoint, inject keystrokes into the victim's session (yielding OS-level code execution with the session owner's privileges if the session runs a shell), and inject exit sequences or flood the FIFO to terminate or crash the session. A prior Bandit S311 warning on this usage was suppressed with # noqa: S311 rather than fixed
- Record
AZL-92916- Updated
- 2026-11-05
OSVMGASA-2026-0466 No score
Updated python-urwid & python-wcwidth packages fixes a security vulnerability
Insecure PRNG and Information Exposure in urwid Web Display Backend
- Record
MGASA-2026-0466- Updated
- 2026-11-02
OSVopenSUSE-SU-2026:11356-1 No score
python313-urwid-4.0.5-1.1 on GA media
These are all security issues fixed in the python313-urwid-4.0.5-1.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2026:11356-1- Updated
- 2026-11-02
OSVSUSE-SU-2026:3425-1 No score
Security update for python-urwid
This update for python-urwid fixes the following issue
CVE-2026-9323: web session IDs generated by Screen.start() are not cryptographically secure (bsc#1271868).
- Record
SUSE-SU-2026:3425-1- Updated
- 2026-11-02
OSVSUSE-SU-2026:3460-1 No score
Security update for python-urwid
This update for python-urwid fixes the following issue:
- CVE-2026-9323: web session IDs generated by
Screen.start()are not cryptographically secure (bsc#1271868).
- Record
SUSE-SU-2026:3460-1- Updated
- 2026-11-02
OSVUSN-8751-1 No score
urwid vulnerabilities
Katriel Moses discovered that Urwid used a weak PRNG. A local attacker could possibly use this issue to cause a denial of service or execute arbitrary code.
- Record
USN-8751-1- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
python3-urwidAlmaLinux:10 |
before 2.5.3-4.el10_2.5 | 2.5.3-4.el10_2.5 |
python3-urwidAlmaLinux:8 |
before 1.3.1-5.el8_10 | 1.3.1-5.el8_10 |
python3-urwidAlmaLinux:9 |
before 2.1.2-4.el9_8.1 | 2.1.2-4.el9_8.1 |
python-urwidAzure Linux:3 |
through 2.6.14-1 | None known |
py3-urwidAlpaquita:23 |
2.1.2-r3 up to 2.2.3-r1 | 2.2.3-r1 |
py3-urwidAlpaquita:25 |
2.6.13-r0 up to 2.6.13-r1 | 2.6.13-r1 |
py3-urwidAlpaquita:stream |
2.1.2-r2 up to 3.0.5-r1 | 3.0.5-r1 |
urwidDebian:12 |
before 2.1.2-4+deb12u1, plus listed versions 2.1.2-4 |
2.1.2-4+deb12u1 |
urwidDebian:13 |
All versions, plus listed versions 2.6.16-13.0.4-14.1.3-14.2.1-1 |
None known |
urwidDebian:14 |
before 4.1.3-1, plus listed versions 2.6.16-13.0.4-1 |
4.1.3-1 |
Show 92 moreShow less
| Package | Affected | Fixed |
|---|---|---|
python-urwidMageia:10 |
before 4.1.3-1.mga10 | 4.1.3-1.mga10 |
python-wcwidthMageia:10 |
before 0.8.3-1.mga10 | 0.8.3-1.mga10 |
python-urwidopenEuler:22.03-LTS-SP4 |
before 2.1.2-4.oe2203sp4 | 2.1.2-4.oe2203sp4 |
python-urwidopenEuler:24.03-LTS-SP1 |
before 2.1.2-6.oe2403sp1 | 2.1.2-6.oe2403sp1 |
python-urwidopenEuler:24.03-LTS-SP3 |
before 2.1.2-6.oe2403sp3 | 2.1.2-6.oe2403sp3 |
python-urwidopenEuler:24.03-LTS-SP4 |
before 2.1.2-6.oe2403sp4 | 2.1.2-6.oe2403sp4 |
python-urwidopenEuler:20.03-LTS-SP4 |
before 2.1.2-3.oe2003sp4 | 2.1.2-3.oe2003sp4 |
python-urwidRed Hat:rhel_e4s:8.8::baseos |
before 0:1.3.1-4.el8_8.1 | 0:1.3.1-4.el8_8.1 |
python-urwid-debugsourceRed Hat:rhel_e4s:8.8::baseos |
before 0:1.3.1-4.el8_8.1 | 0:1.3.1-4.el8_8.1 |
python3-urwidRed Hat:rhel_e4s:8.8::baseos |
before 0:1.3.1-4.el8_8.1 | 0:1.3.1-4.el8_8.1 |
python3-urwid-debuginfoRed Hat:rhel_e4s:8.8::baseos |
before 0:1.3.1-4.el8_8.1 | 0:1.3.1-4.el8_8.1 |
python-urwidRed Hat:rhel_tus:8.8::baseos |
before 0:1.3.1-4.el8_8.1 | 0:1.3.1-4.el8_8.1 |
python-urwid-debugsourceRed Hat:rhel_tus:8.8::baseos |
before 0:1.3.1-4.el8_8.1 | 0:1.3.1-4.el8_8.1 |
python3-urwidRed Hat:rhel_tus:8.8::baseos |
before 0:1.3.1-4.el8_8.1 | 0:1.3.1-4.el8_8.1 |
python3-urwid-debuginfoRed Hat:rhel_tus:8.8::baseos |
before 0:1.3.1-4.el8_8.1 | 0:1.3.1-4.el8_8.1 |
python-urwidRed Hat:rhel_aus:8.4::baseos |
before 0:1.3.1-4.el8_4.1 | 0:1.3.1-4.el8_4.1 |
python-urwid-debugsourceRed Hat:rhel_aus:8.4::baseos |
before 0:1.3.1-4.el8_4.1 | 0:1.3.1-4.el8_4.1 |
python3-urwidRed Hat:rhel_aus:8.4::baseos |
before 0:1.3.1-4.el8_4.1 | 0:1.3.1-4.el8_4.1 |
python3-urwid-debuginfoRed Hat:rhel_aus:8.4::baseos |
before 0:1.3.1-4.el8_4.1 | 0:1.3.1-4.el8_4.1 |
python-urwidRed Hat:rhel_eus_long_life:8.4::baseos |
before 0:1.3.1-4.el8_4.1 | 0:1.3.1-4.el8_4.1 |
python-urwid-debugsourceRed Hat:rhel_eus_long_life:8.4::baseos |
before 0:1.3.1-4.el8_4.1 | 0:1.3.1-4.el8_4.1 |
python3-urwidRed Hat:rhel_eus_long_life:8.4::baseos |
before 0:1.3.1-4.el8_4.1 | 0:1.3.1-4.el8_4.1 |
python3-urwid-debuginfoRed Hat:rhel_eus_long_life:8.4::baseos |
before 0:1.3.1-4.el8_4.1 | 0:1.3.1-4.el8_4.1 |
python-urwidRed Hat:enterprise_linux:10.2 |
before 0:2.5.3-4.el10_2.5 | 0:2.5.3-4.el10_2.5 |
python-urwid-debugsourceRed Hat:enterprise_linux:10.2 |
before 0:2.5.3-4.el10_2.5 | 0:2.5.3-4.el10_2.5 |
python3-urwidRed Hat:enterprise_linux:10.2 |
before 0:2.5.3-4.el10_2.5 | 0:2.5.3-4.el10_2.5 |
python3-urwid-debuginfoRed Hat:enterprise_linux:10.2 |
before 0:2.5.3-4.el10_2.5 | 0:2.5.3-4.el10_2.5 |
python-urwidRed Hat:enterprise_linux:8::baseos |
before 0:1.3.1-5.el8_10 | 0:1.3.1-5.el8_10 |
python-urwid-debugsourceRed Hat:enterprise_linux:8::baseos |
before 0:1.3.1-5.el8_10 | 0:1.3.1-5.el8_10 |
python3-urwidRed Hat:enterprise_linux:8::baseos |
before 0:1.3.1-5.el8_10 | 0:1.3.1-5.el8_10 |
python3-urwid-debuginfoRed Hat:enterprise_linux:8::baseos |
before 0:1.3.1-5.el8_10 | 0:1.3.1-5.el8_10 |
python-urwidRed Hat:enterprise_linux:9::baseos |
before 0:2.1.2-4.el9_8.1 | 0:2.1.2-4.el9_8.1 |
python-urwid-debugsourceRed Hat:enterprise_linux:9::baseos |
before 0:2.1.2-4.el9_8.1 | 0:2.1.2-4.el9_8.1 |
python3-urwidRed Hat:enterprise_linux:9::baseos |
before 0:2.1.2-4.el9_8.1 | 0:2.1.2-4.el9_8.1 |
python3-urwid-debuginfoRed Hat:enterprise_linux:9::baseos |
before 0:2.1.2-4.el9_8.1 | 0:2.1.2-4.el9_8.1 |
python-urwidRed Hat:rhel_e4s:9.4::baseos |
before 0:2.1.2-4.el9_4.1 | 0:2.1.2-4.el9_4.1 |
python-urwid-debugsourceRed Hat:rhel_e4s:9.4::baseos |
before 0:2.1.2-4.el9_4.1 | 0:2.1.2-4.el9_4.1 |
python3-urwidRed Hat:rhel_e4s:9.4::baseos |
before 0:2.1.2-4.el9_4.1 | 0:2.1.2-4.el9_4.1 |
python3-urwid-debuginfoRed Hat:rhel_e4s:9.4::baseos |
before 0:2.1.2-4.el9_4.1 | 0:2.1.2-4.el9_4.1 |
python-urwidRed Hat:rhel_e4s:9.2::baseos |
before 0:2.1.2-4.el9_2.1 | 0:2.1.2-4.el9_2.1 |
python-urwid-debugsourceRed Hat:rhel_e4s:9.2::baseos |
before 0:2.1.2-4.el9_2.1 | 0:2.1.2-4.el9_2.1 |
python3-urwidRed Hat:rhel_e4s:9.2::baseos |
before 0:2.1.2-4.el9_2.1 | 0:2.1.2-4.el9_2.1 |
python3-urwid-debuginfoRed Hat:rhel_e4s:9.2::baseos |
before 0:2.1.2-4.el9_2.1 | 0:2.1.2-4.el9_2.1 |
python-urwidRed Hat:rhel_eus:9.6::baseos |
before 0:2.1.2-4.el9_6.1 | 0:2.1.2-4.el9_6.1 |
python-urwid-debugsourceRed Hat:rhel_eus:9.6::baseos |
before 0:2.1.2-4.el9_6.1 | 0:2.1.2-4.el9_6.1 |
python3-urwidRed Hat:rhel_eus:9.6::baseos |
before 0:2.1.2-4.el9_6.1 | 0:2.1.2-4.el9_6.1 |
python3-urwid-debuginfoRed Hat:rhel_eus:9.6::baseos |
before 0:2.1.2-4.el9_6.1 | 0:2.1.2-4.el9_6.1 |
python-urwidRed Hat:rhel_aus:8.6::baseos |
before 0:1.3.1-4.el8_6.1 | 0:1.3.1-4.el8_6.1 |
python-urwid-debugsourceRed Hat:rhel_aus:8.6::baseos |
before 0:1.3.1-4.el8_6.1 | 0:1.3.1-4.el8_6.1 |
python3-urwidRed Hat:rhel_aus:8.6::baseos |
before 0:1.3.1-4.el8_6.1 | 0:1.3.1-4.el8_6.1 |
python3-urwid-debuginfoRed Hat:rhel_aus:8.6::baseos |
before 0:1.3.1-4.el8_6.1 | 0:1.3.1-4.el8_6.1 |
python-urwidRed Hat:rhel_eus_long_life:8.6::baseos |
before 0:1.3.1-4.el8_6.1 | 0:1.3.1-4.el8_6.1 |
python-urwid-debugsourceRed Hat:rhel_eus_long_life:8.6::baseos |
before 0:1.3.1-4.el8_6.1 | 0:1.3.1-4.el8_6.1 |
python3-urwidRed Hat:rhel_eus_long_life:8.6::baseos |
before 0:1.3.1-4.el8_6.1 | 0:1.3.1-4.el8_6.1 |
python3-urwid-debuginfoRed Hat:rhel_eus_long_life:8.6::baseos |
before 0:1.3.1-4.el8_6.1 | 0:1.3.1-4.el8_6.1 |
python-urwidRed Hat:enterprise_linux_eus:10.0 |
before 0:2.5.3-4.el10_0.5 | 0:2.5.3-4.el10_0.5 |
python-urwid-debugsourceRed Hat:enterprise_linux_eus:10.0 |
before 0:2.5.3-4.el10_0.5 | 0:2.5.3-4.el10_0.5 |
python3-urwidRed Hat:enterprise_linux_eus:10.0 |
before 0:2.5.3-4.el10_0.5 | 0:2.5.3-4.el10_0.5 |
python3-urwid-debuginfoRed Hat:enterprise_linux_eus:10.0 |
before 0:2.5.3-4.el10_0.5 | 0:2.5.3-4.el10_0.5 |
python-urwidRocky Linux:10 |
before 0:2.5.3-4.el10_2.5 | 0:2.5.3-4.el10_2.5 |
python-urwidRocky Linux:8 |
before 0:1.3.1-5.el8_10 | 0:1.3.1-5.el8_10 |
python-urwidRocky Linux:9 |
before 0:2.1.2-4.el9_8.1 | 0:2.1.2-4.el9_8.1 |
python-urwidSUSE:Linux Enterprise Module for Python 3 15 SP7 |
before 2.1.2-150400.11.6.1 | 2.1.2-150400.11.6.1 |
python-urwidSUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS |
before 2.1.2-150400.11.6.1 | 2.1.2-150400.11.6.1 |
python-urwidSUSE:Linux Enterprise High Performance Computing 15 SP4-LTSS |
before 2.1.2-150400.11.6.1 | 2.1.2-150400.11.6.1 |
python-urwidSUSE:Linux Enterprise High Performance Computing 15 SP5-ESPOS |
before 2.1.2-150400.11.6.1 | 2.1.2-150400.11.6.1 |
python-urwidSUSE:Linux Enterprise High Performance Computing 15 SP5-LTSS |
before 2.1.2-150400.11.6.1 | 2.1.2-150400.11.6.1 |
python-urwidSUSE:Linux Enterprise Server 15 SP4-LTSS |
before 2.1.2-150400.11.6.1 | 2.1.2-150400.11.6.1 |
python-urwidSUSE:Linux Enterprise Server 15 SP5-LTSS |
before 2.1.2-150400.11.6.1 | 2.1.2-150400.11.6.1 |
python-urwidSUSE:Linux Enterprise Server 15 SP6-LTSS |
before 2.1.2-150400.11.6.1 | 2.1.2-150400.11.6.1 |
python-urwidSUSE:Linux Enterprise Server for SAP Applications 15 SP4 |
before 2.1.2-150400.11.6.1 | 2.1.2-150400.11.6.1 |
python-urwidSUSE:Linux Enterprise Server for SAP Applications 15 SP5 |
before 2.1.2-150400.11.6.1 | 2.1.2-150400.11.6.1 |
python-urwidSUSE:Linux Enterprise Server for SAP Applications 15 SP6 |
before 2.1.2-150400.11.6.1 | 2.1.2-150400.11.6.1 |
python-urwidSUSE:Linux Enterprise Module for Basesystem 15 SP7 |
before 2.0.1-150000.3.3.1 | 2.0.1-150000.3.3.1 |
python-urwidSUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS |
before 2.0.1-150000.3.3.1 | 2.0.1-150000.3.3.1 |
python-urwidSUSE:Linux Enterprise High Performance Computing 15 SP4-LTSS |
before 2.0.1-150000.3.3.1 | 2.0.1-150000.3.3.1 |
python-urwidSUSE:Linux Enterprise High Performance Computing 15 SP5-ESPOS |
before 2.0.1-150000.3.3.1 | 2.0.1-150000.3.3.1 |
python-urwidSUSE:Linux Enterprise High Performance Computing 15 SP5-LTSS |
before 2.0.1-150000.3.3.1 | 2.0.1-150000.3.3.1 |
python-urwidSUSE:Linux Enterprise Server 15 SP4-LTSS |
before 2.0.1-150000.3.3.1 | 2.0.1-150000.3.3.1 |
python-urwidSUSE:Linux Enterprise Server 15 SP5-LTSS |
before 2.0.1-150000.3.3.1 | 2.0.1-150000.3.3.1 |
python-urwidSUSE:Linux Enterprise Server 15 SP6-LTSS |
before 2.0.1-150000.3.3.1 | 2.0.1-150000.3.3.1 |
python-urwidSUSE:Linux Enterprise Server for SAP Applications 15 SP4 |
before 2.0.1-150000.3.3.1 | 2.0.1-150000.3.3.1 |
python-urwidSUSE:Linux Enterprise Server for SAP Applications 15 SP5 |
before 2.0.1-150000.3.3.1 | 2.0.1-150000.3.3.1 |
python-urwidSUSE:Linux Enterprise Server for SAP Applications 15 SP6 |
before 2.0.1-150000.3.3.1 | 2.0.1-150000.3.3.1 |
urwidUbuntu:16.04:LTS |
All versions, plus listed versions 1.2.1-2build11.3.0-21.3.1-21.3.1-2build1 |
None known |
urwidUbuntu:Pro:18.04:LTS |
before 2.0.1-2ubuntu0.1~esm1, plus listed versions 1.3.1-2ubuntu22.0.1-2 |
2.0.1-2ubuntu0.1~esm1 |
urwidUbuntu:Pro:20.04:LTS |
before 2.0.1-3ubuntu0.1~esm1, plus listed versions 2.0.1-2build22.0.1-2build32.0.1-2build42.0.1-3 |
2.0.1-3ubuntu0.1~esm1 |
urwidUbuntu:22.04:LTS |
before 2.1.2-2ubuntu0.1, plus listed versions 2.1.2-1build12.1.2-1build32.1.2-22.1.2-2build1 |
2.1.2-2ubuntu0.1 |
urwidUbuntu:24.04:LTS |
All versions, plus listed versions 2.1.2-4build12.1.2-4.22.4.1-0.22.4.6-0.12.5.2-12.6.4-12.6.4-1ubuntu12.6.10-1 |
None known |
urwidUbuntu:26.10 |
All versions, plus listed versions 3.0.4-1 |
None known |
urwidUbuntu:Pro:26.04:LTS |
before 3.0.4-1ubuntu0.1~esm1, plus listed versions 2.6.16-13.0.4-1 |
3.0.4-1ubuntu0.1~esm1 |
python-urwidopenSUSE:Tumbleweed |
before 4.0.5-1.1 | 4.0.5-1.1 |
History
| Recorded | Changed | Sources |
|---|---|---|
| facts, references | GitHub Advisories, OSV | |
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-9323 is a critical vulnerability (CVSS 9.2) in Urwid, published July 18, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.71%, the 53rd percentile. Fixed in python3-urwid 2.5.3-4.el10_2.5.
References
github.com/urwid/urwid/security/advisories/GHSA-rjwp-g85x-gmjv
github.com/urwid/urwid
github.com/urwid/urwid/commit/24acd12f0d0598036d0d577f2ee63e4a27b4a3d9
github.com/urwid/urwid/issues/1127
github.com/urwid/urwid/pull/1128
vulncheck.com/advisories/insecure-prng-and-information-exposure-in-urwid-web-display-backend
Show 47 moreShow less
lists.debian.org/debian-lts-announce/2026/09/msg00015.html
nvd.nist.gov/vuln/detail/CVE-2026-9323
github.com/advisories/GHSA-83x9-8wvq-rrcp
access.redhat.com/errata/RHSA-2026:58561
access.redhat.com/security/cve/CVE-2026-9323
bugzilla.redhat.com/2502072
errata.almalinux.org/10/ALSA-2026-58561.html
access.redhat.com/errata/RHSA-2026:58562
errata.almalinux.org/8/ALSA-2026-58562.html
access.redhat.com/errata/RHSA-2026:58952
errata.almalinux.org/9/ALSA-2026-58952.html
docs.bell-sw.com/security/cves/CVE-2026-9323
github.com/CVEProject/cvelistV5/tree/main/cves/2026/9xxx/CVE-2026-9323.json
security-tracker.debian.org/tracker/CVE-2026-9323
advisories.mageia.org/MGASA-2026-0466.html
bugs.mageia.org/show_bug.cgi?id=36159
lists.opensuse.org/archives/list/[email protected]/message/3XPYRLW6AB7WGF3ENBZSCZHGJCJFF7VI
ubuntu.com/security/notices/USN-8751-1
openeuler.org/zh/security/security-bulletins/detail?id=openEuler-SA-2026-3193
access.redhat.com/errata/RHSA-2026:57637
access.redhat.com/security/updates/classification
bugzilla.redhat.com/show_bug.cgi?id=2502072
security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_57637.json
cve.org/CVERecord?id=CVE-2026-9323
access.redhat.com/errata/RHSA-2026:57638
security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_57638.json
security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_58561.json
security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_58562.json
security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_58952.json
access.redhat.com/errata/RHSA-2026:58953
security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_58953.json
access.redhat.com/errata/RHSA-2026:58954
security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_58954.json
access.redhat.com/errata/RHSA-2026:58955
security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_58955.json
access.redhat.com/errata/RHSA-2026:59198
security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_59198.json
access.redhat.com/errata/RHSA-2026:60353
security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_60353.json
errata.rockylinux.org/RLSA-2026:58561
errata.rockylinux.org/RLSA-2026:58562
errata.rockylinux.org/RLSA-2026:58952
suse.com/support/update/announcement/2026/suse-su-20263425-1
bugzilla.suse.com/1271868
suse.com/security/cve/CVE-2026-9323
suse.com/support/update/announcement/2026/suse-su-20263460-1
ubuntu.com/security/CVE-2026-9323