http.client in Python 3.x before 3.5.10, 3.6.x before 3.6.12, 3.7.x before 3.7.9, and 3.8.x before 3.8.5 allows CRLF injection if the attacker controls the HTTP request method, as demonstrated by inserting CR and LF control characters in the first argument of HTTPConnection.request.
CVSS Details
- CVSS 3.1 Base Score: 7.2
- CVSS 3.1 Vector: (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N)
Covered by Rapid7
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Alma_linux | — | Upgrade python2-pytestUpgrade python2-ipaddressUpgrade python2-numpy-docUpgrade python2-attrsUpgrade python2-sqlalchemyUpgrade python2-requestsUpgrade python38-PyMySQLUpgrade python2-backportsUpgrade python2-docs-infoUpgrade python2-pysocksUpgrade python2-CythonUpgrade python2-setuptools_scmUpgrade python38-pytzUpgrade python2-setuptoolsUpgrade python38-psycopg2Upgrade python2-idnaUpgrade python2-docutilsUpgrade python38-sixUpgrade python2-pluggyUpgrade python2-PyMySQLUpgrade python2-coverageUpgrade python2-funcsigsUpgrade python2-docsUpgrade python38-pysocksUpgrade python2-dnsUpgrade python38-asn1cryptoUpgrade python2-numpyUpgrade python38-CythonUpgrade python2-pytest-mockUpgrade python38-requestsUpgrade python2-pyUpgrade python2-markupsafeUpgrade python38-mod_wsgiUpgrade python-sqlalchemy-docUpgrade python2-psycopg2Upgrade python2-setuptools-wheelUpgrade python2-rpm-macrosUpgrade python2-sixUpgrade python38-chardetUpgrade python2-pyyamlUpgrade python2-numpy-f2pyUpgrade python38-cryptographyUpgrade python2-urllib3Upgrade python38-pycparserUpgrade python2-pytzUpgrade python38-cffiUpgrade python-psycopg2-docUpgrade python2-chardetUpgrade python38-psycopg2-testsUpgrade python2-psycopg2-debugUpgrade python38-plyUpgrade python38-scipyUpgrade python2-psycopg2-testsUpgrade python2-mockUpgrade python38-psycopg2-docUpgrade python2-backports-ssl_match_hostnameUpgrade python38-markupsafeUpgrade python38-idna | May 4, 2022 | Sep 27, 2020 |
| Amazon Linux Ami 2 | — | Upgrade python-debugUpgrade python-libsUpgrade python3-tkinterUpgrade python-toolsUpgrade python3-toolsUpgrade python3Upgrade python3-develUpgrade python-debuginfoUpgrade pythonUpgrade python-develUpgrade python3-debuginfoUpgrade python3-testUpgrade tkinterUpgrade python-testUpgrade python3-debugUpgrade python3-libs | Jun 24, 2021 | Sep 27, 2020 |
| Amazon_linux | — | Upgrade python35Upgrade python34Upgrade python27 | May 13, 2025 | Sep 27, 2020 |
| Arch Linux | — | Upgrade to the latest version of Arch Linux | Jul 11, 2025 | Sep 27, 2020 |
| Centos_linux | — | Upgrade python2-sixUpgrade python38-pysocksUpgrade python38-setuptoolsUpgrade python-toolsUpgrade platform-python-debugUpgrade python-nose-docsUpgrade python-lxml-debugsourceUpgrade python38-numpy-f2pyUpgrade Cython-debugsourceUpgrade pythonUpgrade python-psycopg2-docUpgrade python38-cffi-debuginfoUpgrade python38-cffiUpgrade python38-pip-wheelUpgrade python38-lxml-debuginfoUpgrade python38-cryptography-debuginfoUpgrade python38-lxmlUpgrade python38-markupsafeUpgrade python2-bson-debuginfoUpgrade python2-urllib3Upgrade python2-CythonUpgrade python2-coverageUpgrade python2-mockUpgrade python38-scipy-debuginfoUpgrade python2-coverage-debuginfoUpgrade python2-pipUpgrade python38-testUpgrade python-coverage-debugsourceUpgrade python2-chardetUpgrade python38-PyMySQLUpgrade python2-numpy-f2pyUpgrade python38-debugsourceUpgrade python38-mod_wsgiUpgrade tkinterUpgrade python2-lxml-debuginfoUpgrade python2-noseUpgrade python2-backports-ssl_match_hostnameUpgrade python2-wheelUpgrade python2-jinja2Upgrade python38-psycopg2-debuginfoUpgrade python2-Cython-debuginfoUpgrade python2-idnaUpgrade python3-testUpgrade python38-babelUpgrade python38-libsUpgrade python38-numpyUpgrade python38-cryptographyUpgrade python2-setuptools-wheelUpgrade python2-rpm-macrosUpgrade PyYAML-debugsourceUpgrade python2-psycopg2-testsUpgrade python2-ipaddressUpgrade python2-wheel-wheelUpgrade python-debuginfoUpgrade python-psycopg2-debuginfoUpgrade python2-docs-infoUpgrade python-testUpgrade python2-debugUpgrade python-pymongo-debugsourceUpgrade python2-numpy-debuginfoUpgrade python2-pip-wheelUpgrade python38Upgrade python38-psycopg2-docUpgrade python38-scipyUpgrade python38-setuptools-wheelUpgrade python38-pyyaml-debuginfoUpgrade python38-debuginfoUpgrade python2-libsUpgrade python38-psutilUpgrade python38-idleUpgrade python38-urllib3Upgrade python-pymongo-debuginfoUpgrade python2-pyyamlUpgrade python2-babelUpgrade python2-psycopg2Upgrade python38-chardetUpgrade python2-markupsafeUpgrade python38-wheel-wheelUpgrade python2-sqlalchemyUpgrade python2-setuptoolsUpgrade python38-numpy-debuginfoUpgrade python38-markupsafe-debuginfoUpgrade python-psycopg2-debugsourceUpgrade python2-psycopg2-debuginfoUpgrade python38-pyyamlUpgrade python2-setuptools_scmUpgrade python38-tkinterUpgrade python2-funcsigsUpgrade python38-develUpgrade python2-attrsUpgrade python2-toolsUpgrade python-cryptography-debugsourceUpgrade python38-psutil-debuginfoUpgrade python3-debugsourceUpgrade python2-docsUpgrade python2-debugsourceUpgrade python38-Cython-debuginfoUpgrade python2-tkinterUpgrade python2-pytzUpgrade python2-pyUpgrade python2-pymongo-gridfsUpgrade python38-idnaUpgrade python38-CythonUpgrade python38-asn1cryptoUpgrade python2-pymongo-debuginfoUpgrade python2-pygmentsUpgrade python2-develUpgrade python-libsUpgrade platform-python-develUpgrade python38-psycopg2-testsUpgrade python38-psycopg2Upgrade python38-pipUpgrade python3-tkinterUpgrade python38-debugUpgrade python38-jinja2Upgrade python2-psycopg2-debug-debuginfoUpgrade scipy-debugsourceUpgrade python38-wheelUpgrade python-develUpgrade python2-docutilsUpgrade python-psutil-debugsourceUpgrade python2-scipy-debuginfoUpgrade python2-virtualenvUpgrade python2-pysocksUpgrade python2-dnsUpgrade python-sqlalchemy-docUpgrade python38-pytzUpgrade python3-libsUpgrade python2-requestsUpgrade python2-pluggyUpgrade python2-pytest-mockUpgrade python2-PyMySQLUpgrade python2-numpy-docUpgrade python2-bsonUpgrade python2-backportsUpgrade platform-pythonUpgrade numpy-debugsourceUpgrade python38-sixUpgrade python-debugUpgrade python-cffi-debugsourceUpgrade python38-rpm-macrosUpgrade python38-plyUpgrade python2-lxmlUpgrade python2-debuginfoUpgrade python2Upgrade python38-numpy-docUpgrade python3-idleUpgrade python2-testUpgrade python2-psycopg2-debugUpgrade python2-numpyUpgrade python38-pycparserUpgrade python2-scipyUpgrade python2-pymongoUpgrade babelUpgrade python3-debuginfoUpgrade python38-requestsUpgrade python2-pytestUpgrade python-markupsafe-debugsourceUpgrade python2-pyyaml-debuginfo | Jun 1, 2021 | Sep 27, 2020 |
| Debian | — | Upgrade python3.9Upgrade pypy3 | Nov 20, 2020 | Sep 27, 2020 |
| F5 Big Ip | — | — | Dec 6, 2023 | Sep 27, 2020 |
| Gentoo Linux | — | Upgrade dev-lang/python. | Jan 25, 2021 | Sep 27, 2020 |
| Huawei Euleros 2_0_sp2 | — | Upgrade pythonUpgrade python-libsUpgrade python-develUpgrade tkinter | Nov 3, 2020 | Sep 27, 2020 |
| Huawei Euleros 2_0_sp3 | — | Upgrade tkinterUpgrade pythonUpgrade python-libsUpgrade python-devel | Jan 20, 2021 | Sep 27, 2020 |
| Huawei Euleros 2_0_sp5 | — | Upgrade python-develUpgrade pythonUpgrade tkinterUpgrade python-libs | Feb 3, 2021 | Sep 27, 2020 |
| Huawei Euleros 2_0_sp8 | — | Upgrade python3-libsUpgrade python3-unversioned-commandUpgrade python3-develUpgrade python3-testUpgrade python3 | Nov 3, 2020 | Sep 27, 2020 |
| Huawei Euleros 2_0_sp9 | — | Upgrade python3Upgrade python3-unversioned-command | Nov 3, 2020 | Sep 27, 2020 |
| Nutanix Ahv | — | Upgrade Nutanix AHV to the latest version | Jun 5, 2026 | Sep 4, 2023 |
| Oracle Solaris | — | Upgrade library/python/urllib3-37 to version 1.25.1-11.4.36.0.1.101.0 on Solaris 11.4Upgrade legacy/runtime/python-35 to version 3.5.9-11.4.28.0.1.82.1 on Solaris 11.4Upgrade legacy/library/python/tkinter-35 to version 3.5.9-11.4.28.0.1.82.1 on Solaris 11.4Upgrade runtime/python-35 to version 3.5.9-11.4.30.0.0.88.0 on Solaris 11.4Upgrade library/python/urllib3-39 to version 1.25.1-11.4.36.0.1.101.0 on Solaris 11.4Upgrade library/python/urllib3-27 to version 1.25.1-11.4.36.0.1.101.0 on Solaris 11.4Upgrade library/python/tkinter-35 to version 3.5.9-11.4.30.0.0.88.0 on Solaris 11.4Upgrade library/python/urllib3 to version 1.25.1-11.4.36.0.1.101.0 on Solaris 11.4 | Jan 19, 2021 | Sep 27, 2020 |
| Oracle_linux | — | Upgrade python38-libsUpgrade python2-toolsUpgrade python38-numpyUpgrade python38-idleUpgrade python38-pysocksUpgrade python2-pytest-mockUpgrade python38-testUpgrade python38-setuptoolsUpgrade python38-develUpgrade platform-python-develUpgrade python38-cryptographyUpgrade python2-wheel-wheelUpgrade python2-tkinterUpgrade python38-cffiUpgrade python38-asn1cryptoUpgrade python2-scipyUpgrade python2-noseUpgrade python2-chardetUpgrade python38-urllib3Upgrade python38-rpm-macrosUpgrade python38-psycopg2Upgrade python38-mod_wsgiUpgrade python2-psycopg2Upgrade python38-plyUpgrade python3-libsUpgrade python2-setuptools-wheelUpgrade python2-setuptoolsUpgrade python2-pyyamlUpgrade python2-docsUpgrade tkinterUpgrade python2-idnaUpgrade python-sqlalchemy-docUpgrade python38-wheel-wheelUpgrade python38-requestsUpgrade python38-tkinterUpgrade python38-wheelUpgrade python38-psycopg2-docUpgrade python38-lxmlUpgrade python3-idleUpgrade python2-jinja2Upgrade python2-ipaddressUpgrade python-develUpgrade python2-develUpgrade python2-coverageUpgrade python2-debugUpgrade python38-jinja2Upgrade python38-numpy-f2pyUpgrade python2-numpy-docUpgrade python-nose-docsUpgrade platform-pythonUpgrade python2-pymongoUpgrade python2-pluggyUpgrade python2-lxmlUpgrade platform-python-debugUpgrade python38-psutilUpgrade python2-psycopg2-testsUpgrade python2-babelUpgrade python2-bsonUpgrade python2-dnsUpgrade python-testUpgrade python2-pytzUpgrade python2-attrsUpgrade python2-pip-wheelUpgrade python-psycopg2-docUpgrade python2-testUpgrade python38-idnaUpgrade python2-sixUpgrade python2-virtualenvUpgrade python2-sqlalchemyUpgrade python38Upgrade python2-numpyUpgrade python38-setuptools-wheelUpgrade python2Upgrade python38-PyMySQLUpgrade python38-pyyamlUpgrade python2-pysocksUpgrade python2-rpm-macrosUpgrade python2-docutilsUpgrade python2-mockUpgrade python2-requestsUpgrade python2-urllib3Upgrade babelUpgrade python-libsUpgrade python2-pygmentsUpgrade python2-backports-ssl_match_hostnameUpgrade python38-scipyUpgrade python2-funcsigsUpgrade python3-testUpgrade python2-backportsUpgrade python3-tkinterUpgrade python38-CythonUpgrade python2-numpy-f2pyUpgrade python38-pip-wheelUpgrade python2-docs-infoUpgrade python2-CythonUpgrade python2-libsUpgrade python38-pycparserUpgrade pythonUpgrade python2-wheelUpgrade python-toolsUpgrade python-debugUpgrade python38-babelUpgrade python38-chardetUpgrade python2-pytestUpgrade python2-PyMySQLUpgrade python2-markupsafeUpgrade python38-psycopg2-testsUpgrade python2-pipUpgrade python38-pipUpgrade python2-pyUpgrade python38-debugUpgrade python38-numpy-docUpgrade python2-setuptools_scmUpgrade python2-psycopg2-debugUpgrade python2-pymongo-gridfsUpgrade python38-markupsafeUpgrade python38-sixUpgrade python38-pytz | May 26, 2021 | Feb 10, 2020 |
| Redhat_linux | — | Upgrade python3-tkinterUpgrade python3-idleUpgrade python3-debuginfoUpgrade python2-scipyUpgrade python2-scipy-debuginfoUpgrade python-libsUpgrade python38-psycopg2Upgrade python38-develUpgrade python38-plyUpgrade python-develUpgrade python2-develNo solution existsUpgrade python2-markupsafeUpgrade python-debugUpgrade python3-libsUpgrade python38-mod_wsgiUpgrade python2-debugsourceUpgrade python2-setuptools_scmUpgrade python-cryptography-debugsourceUpgrade python38-debugUpgrade python-markupsafe-debugsourceUpgrade python38-debuginfoUpgrade python2-pygmentsUpgrade python2-tkinterUpgrade python38-cffi-debuginfoUpgrade python38-requestsUpgrade python2-psycopg2-debuginfoUpgrade python2-pysocksUpgrade python2-numpy-docUpgrade python2-funcsigsUpgrade numpy-debugsourceUpgrade platform-python-develUpgrade python38-jinja2Upgrade python2-PyMySQLUpgrade python2-pyyaml-debuginfoUpgrade python2-pytzUpgrade python38-psutil-debuginfoUpgrade python38-pycparserUpgrade python38-wheelUpgrade python2-docutilsUpgrade python2-virtualenvUpgrade python2-docs-infoUpgrade python38-markupsafe-debuginfoUpgrade python2-pyUpgrade tkinterUpgrade python38-wheel-wheelUpgrade python2-sqlalchemyUpgrade python2-pip-wheelUpgrade python-sqlalchemy-docUpgrade python38-pyyamlUpgrade python2-numpyUpgrade python38-Cython-debuginfoUpgrade platform-pythonUpgrade python2-pluggyUpgrade python2-setuptoolsUpgrade python2-pytest-mockUpgrade python-pymongo-debuginfoUpgrade python2-psycopg2-debug-debuginfoUpgrade babelUpgrade python38-lxmlUpgrade python38-pytzUpgrade python2-pymongo-debuginfoUpgrade platform-python-debugUpgrade python38-tkinterUpgrade python38-numpy-f2pyUpgrade python-psycopg2-debugsourceUpgrade python2-pymongoUpgrade python2-idnaUpgrade python38-setuptoolsUpgrade python2-psycopg2Upgrade python3-debugsourceUpgrade python38-rpm-macrosUpgrade python38-asn1cryptoUpgrade python2-toolsUpgrade python2-lxmlUpgrade python2-requestsUpgrade python2-attrsUpgrade python38-cryptography-debuginfoUpgrade python38-idleUpgrade python2-chardetUpgrade python2-numpy-debuginfoUpgrade python2-backports-ssl_match_hostnameUpgrade python38-markupsafeUpgrade python2-sixUpgrade python38-cryptographyUpgrade python38-numpy-docUpgrade python2Upgrade python2-libsUpgrade python2-urllib3Upgrade python38-psycopg2-docUpgrade python38-cffiUpgrade scipy-debugsourceUpgrade python2-bsonUpgrade python38-psycopg2-testsUpgrade python38-scipy-debuginfoUpgrade python38-urllib3Upgrade python-coverage-debugsourceUpgrade python2-CythonUpgrade python38-PyMySQLUpgrade python38Upgrade python2-babelUpgrade python38-libsUpgrade python2-pymongo-gridfsUpgrade python38-scipyUpgrade python2-setuptools-wheelUpgrade python2-pyyamlUpgrade python2-numpy-f2pyUpgrade python3-testUpgrade python2-jinja2Upgrade python38-numpy-debuginfoUpgrade python38-CythonUpgrade python-toolsUpgrade python38-lxml-debuginfoUpgrade python2-lxml-debuginfoUpgrade python2-rpm-macrosUpgrade pythonUpgrade python38-debugsourceUpgrade python2-pytestUpgrade python2-wheelUpgrade python38-psutilUpgrade python38-testUpgrade python38-setuptools-wheelUpgrade python-pymongo-debugsourceUpgrade python2-Cython-debuginfoUpgrade python-cffi-debugsourceUpgrade python2-docsUpgrade python2-mockUpgrade python38-idnaUpgrade python-psutil-debugsourceUpgrade python2-dnsUpgrade python-lxml-debugsourceUpgrade python38-pyyaml-debuginfoUpgrade python2-debuginfoUpgrade python-debuginfoUpgrade PyYAML-debugsourceUpgrade python2-wheel-wheelUpgrade python-psycopg2-debuginfoUpgrade python38-babelUpgrade python2-ipaddressUpgrade python-psycopg2-docUpgrade python38-chardetUpgrade python38-numpyUpgrade python-testUpgrade python2-coverage-debuginfoUpgrade python2-debugUpgrade python38-sixUpgrade python2-psycopg2-debugUpgrade Cython-debugsourceUpgrade python2-psycopg2-testsUpgrade python38-pipUpgrade python2-testUpgrade python38-psycopg2-debuginfoUpgrade python-nose-docsUpgrade python2-coverageUpgrade python38-pysocksUpgrade python2-pipUpgrade python38-pip-wheelUpgrade python2-noseUpgrade python2-bson-debuginfoUpgrade python2-backports | May 21, 2021 | Sep 27, 2020 |
| Rocky_linux | — | Upgrade python2-toolsUpgrade python38-debugsourceUpgrade python2-numpy-f2pyUpgrade python2Upgrade python2-testUpgrade python38-debugUpgrade python-coverage-debugsourceUpgrade python2-bsonUpgrade python38-pyyamlUpgrade python2-CythonUpgrade python2-debuginfoUpgrade python38-psycopg2-testsUpgrade python2-libsUpgrade python38-scipy-debuginfoUpgrade python38-lxml-debuginfoUpgrade python2-psycopg2-debuginfoUpgrade python38-pyyaml-debuginfoUpgrade python2-psycopg2-testsUpgrade python-psutil-debugsourceUpgrade python2-psycopg2-debugUpgrade python38-numpy-debuginfoUpgrade python-cffi-debugsourceUpgrade python2-backportsUpgrade python-pymongo-debugsourceUpgrade python38-CythonUpgrade python38-markupsafeUpgrade python38-Cython-debuginfoUpgrade PyYAML-debugsourceUpgrade python38-scipyUpgrade python2-markupsafeUpgrade python2-sqlalchemyUpgrade python2-pymongo-gridfsUpgrade python38Upgrade python38-psycopg2-debuginfoUpgrade numpy-debugsourceUpgrade python2-Cython-debuginfoUpgrade python-cryptography-debugsourceUpgrade python2-coverage-debuginfoUpgrade python38-markupsafe-debuginfoUpgrade python2-debugsourceUpgrade python2-numpyUpgrade python2-lxmlUpgrade python2-debugUpgrade python2-bson-debuginfoUpgrade python-pymongo-debuginfoUpgrade python38-cryptographyUpgrade python2-lxml-debuginfoUpgrade python38-mod_wsgiUpgrade python38-cryptography-debuginfoUpgrade python-psycopg2-debugsourceUpgrade python2-coverageUpgrade python2-pymongoUpgrade python-markupsafe-debugsourceUpgrade python2-pyyaml-debuginfoUpgrade python2-psycopg2-debug-debuginfoUpgrade python2-numpy-debuginfoUpgrade python-psycopg2-docUpgrade python38-debuginfoUpgrade python38-psutilUpgrade python38-numpy-f2pyUpgrade python38-develUpgrade python2-psycopg2Upgrade scipy-debugsourceUpgrade python38-tkinterUpgrade python2-pyyamlUpgrade python2-pymongo-debuginfoUpgrade python38-numpyUpgrade python38-idleUpgrade python38-cffiUpgrade python38-psutil-debuginfoUpgrade python38-cffi-debuginfoUpgrade python2-scipyUpgrade python-psycopg2-debuginfoUpgrade python2-scipy-debuginfoUpgrade python2-develUpgrade python-lxml-debugsourceUpgrade Cython-debugsourceUpgrade python38-testUpgrade python38-psycopg2Upgrade python38-lxmlUpgrade python38-libsUpgrade python2-tkinterUpgrade python38-psycopg2-doc | Mar 12, 2024 | Sep 27, 2020 |
| Suse | — | Upgrade python3-cursesUpgrade libpython2_6-1_0-32bitUpgrade python-demoUpgrade python2-urllib3Upgrade python-doc-pdfUpgrade python3Upgrade python-xmlUpgrade python3-docUpgrade libpython3_6m1_0-32bitUpgrade python-base-32bitUpgrade python3-base-32bitUpgrade python3-testsuiteUpgrade python3-toolsUpgrade python3-tkUpgrade python-cursesUpgrade python-tkUpgrade python-develUpgrade python36-baseUpgrade python-baseUpgrade python36Upgrade libpython2_7-1_0-32bitUpgrade python-urllib3Upgrade libpython2_7-1_0Upgrade python3-baseUpgrade python3-develUpgrade python-idleUpgrade python3-32bitUpgrade libpython3_6m1_0Upgrade python3-urllib3Upgrade pythonUpgrade libpython3_4m1_0Upgrade python-docUpgrade libpython3_4m1_0-32bitUpgrade python3-idleUpgrade libpython2_6-1_0Upgrade python-gdbmUpgrade python3-dbmUpgrade python3-doc-devhelpUpgrade python-32bit | Nov 28, 2020 | Sep 27, 2020 |
| Ubuntu | — | Upgrade python3.5Upgrade python3.5-minimal (Ubuntu Pro)Upgrade python3.5-minimalUpgrade python3.8-minimalUpgrade python3.4 (Ubuntu Pro)Upgrade python3.7-minimal (Ubuntu Pro)Upgrade python3.8 (Ubuntu Pro)Upgrade python3.8Upgrade python3.6 (Ubuntu Pro)Upgrade python3.8-minimal (Ubuntu Pro)Upgrade python3.4-minimal (Ubuntu Pro)Upgrade python3.5 (Ubuntu Pro)Upgrade python3.6-minimal (Ubuntu Pro)Upgrade python2.7 (Ubuntu Pro)Upgrade python2.7-minimalUpgrade python3.6Upgrade python3.7-minimalUpgrade python2.7-minimal (Ubuntu Pro)Upgrade python2.7Upgrade python3.6-minimalUpgrade python3.7Upgrade python3.7 (Ubuntu Pro) | Mar 9, 2021 | Sep 27, 2020 |
| Vmware Photon_os | — | Use 'tdnf update' to upgrade all packages to the latest version. | Jan 20, 2025 | Sep 27, 2020 |
Prioritise with Active Threat Intelligence
With curated Threat Intelligence, you can see which vulnerabilities truly put you at risk, prioritize what matters most, and act before attackers do.
Explore Intelligence Hub