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 python38-pycparserUpgrade python2-pyyamlUpgrade python-psycopg2-docUpgrade python2-psycopg2-testsUpgrade python38-markupsafeUpgrade python2-pytzUpgrade python38-cffiUpgrade python2-numpy-f2pyUpgrade python2-sixUpgrade python38-chardetUpgrade python2-mockUpgrade python2-chardetUpgrade python38-psycopg2-testsUpgrade python2-backports-ssl_match_hostnameUpgrade python38-idnaUpgrade python38-plyUpgrade python38-psycopg2-docUpgrade python38-cryptographyUpgrade python2-psycopg2-debugUpgrade python2-setuptools-wheelUpgrade python2-urllib3Upgrade python2-rpm-macrosUpgrade python38-scipyUpgrade python2-funcsigsUpgrade python2-attrsUpgrade python2-requestsUpgrade python2-sqlalchemyUpgrade python2-setuptools_scmUpgrade python38-requestsUpgrade python38-sixUpgrade python2-docsUpgrade python2-idnaUpgrade python38-PyMySQLUpgrade python2-pluggyUpgrade python2-dnsUpgrade python2-ipaddressUpgrade python2-setuptoolsUpgrade python2-pytest-mockUpgrade python2-PyMySQLUpgrade python38-mod_wsgiUpgrade python38-asn1cryptoUpgrade python2-CythonUpgrade python2-pysocksUpgrade python2-pytestUpgrade python2-psycopg2Upgrade python2-markupsafeUpgrade python2-docs-infoUpgrade python-sqlalchemy-docUpgrade python38-pysocksUpgrade python2-pyUpgrade python2-numpyUpgrade python38-CythonUpgrade python2-docutilsUpgrade python38-psycopg2Upgrade python2-coverageUpgrade python2-numpy-docUpgrade python38-pytzUpgrade python2-backports | May 4, 2022 | Sep 27, 2020 |
| Amazon Linux Ami 2 | — | Upgrade tkinterUpgrade python3-debugUpgrade python3-debuginfoUpgrade python3-libsUpgrade python3-testUpgrade python-testUpgrade python-libsUpgrade python-toolsUpgrade python3-tkinterUpgrade python3-toolsUpgrade pythonUpgrade python3Upgrade python-develUpgrade python3-develUpgrade python-debugUpgrade python-debuginfo | 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-pygmentsUpgrade python2-pytestUpgrade python38-numpy-debuginfoUpgrade python38-asn1cryptoUpgrade python38-wheel-wheelUpgrade python2-develUpgrade python2-markupsafeUpgrade python38-rpm-macrosUpgrade python2-psycopg2-debugUpgrade python2-lxmlUpgrade python2-testUpgrade python-debugUpgrade python2Upgrade python2-numpyUpgrade python3-idleUpgrade python38-markupsafe-debuginfoUpgrade python38-requestsUpgrade python-libsUpgrade python3-debuginfoUpgrade platform-python-develUpgrade python-cffi-debugsourceUpgrade python38-numpy-docUpgrade python38-plyUpgrade python38-CythonUpgrade python38-idnaUpgrade python2-pymongo-gridfsUpgrade python38-psycopg2-testsUpgrade python2-pymongo-debuginfoUpgrade babelUpgrade python2-sqlalchemyUpgrade python2-debuginfoUpgrade python38-psutil-debuginfoUpgrade python2-psycopg2-debug-debuginfoUpgrade python38-debugUpgrade python2-funcsigsUpgrade python2-setuptoolsUpgrade python3-tkinterUpgrade python38-jinja2Upgrade python2-attrsUpgrade python-cryptography-debugsourceUpgrade python2-dnsUpgrade python2-docsUpgrade python3-debugsourceUpgrade python2-pytzUpgrade python2-tkinterUpgrade python38-develUpgrade scipy-debugsourceUpgrade python38-pipUpgrade python38-tkinterUpgrade python38-wheelUpgrade python-develUpgrade python-psutil-debugsourceUpgrade python-sqlalchemy-docUpgrade python2-pysocksUpgrade python2-pymongoUpgrade python2-PyMySQLUpgrade platform-pythonUpgrade python3-libsUpgrade python2-backportsUpgrade python2-pluggyUpgrade python2-pytest-mockUpgrade python2-requestsUpgrade python38-sixUpgrade python38-psycopg2Upgrade numpy-debugsourceUpgrade python2-docutilsUpgrade python2-bsonUpgrade python2-scipy-debuginfoUpgrade python2-virtualenvUpgrade python2-numpy-docUpgrade python38-pytzUpgrade python38-pyyamlUpgrade python2-pyUpgrade python38-pycparserUpgrade python2-toolsUpgrade python2-pyyaml-debuginfoUpgrade python2-scipyUpgrade python2-setuptools_scmUpgrade python2-debugsourceUpgrade python-markupsafe-debugsourceUpgrade python-psycopg2-debugsourceUpgrade python2-psycopg2-debuginfoUpgrade python38-Cython-debuginfoUpgrade python2-wheel-wheelUpgrade python38-idleUpgrade PyYAML-debugsourceUpgrade pythonUpgrade python38-numpy-f2pyUpgrade python38-markupsafeUpgrade python38-setuptoolsUpgrade python2-pyyamlUpgrade python38-urllib3Upgrade python2-libsUpgrade python-psycopg2-debuginfoUpgrade python38-chardetUpgrade python38-setuptools-wheelUpgrade python38-PyMySQLUpgrade python38-psutilUpgrade python2-psycopg2-testsUpgrade python2-ipaddressUpgrade python2-babelUpgrade python-pymongo-debuginfoUpgrade python-testUpgrade python-pymongo-debugsourceUpgrade python38-psycopg2-docUpgrade python2-pip-wheelUpgrade python38-debuginfoUpgrade python38-scipyUpgrade python38-pyyaml-debuginfoUpgrade python2-backports-ssl_match_hostnameUpgrade tkinterUpgrade python38-pip-wheelUpgrade python38-lxmlUpgrade python38-cryptography-debuginfoUpgrade python2-mockUpgrade python2-CythonUpgrade python3-testUpgrade python2-lxml-debuginfoUpgrade python2-setuptools-wheelUpgrade python-lxml-debugsourceUpgrade python38-pysocksUpgrade python2-noseUpgrade python38-debugsourceUpgrade python38Upgrade python2-psycopg2Upgrade python38-cffi-debuginfoUpgrade python38-testUpgrade python2-docs-infoUpgrade python2-rpm-macrosUpgrade python38-cryptographyUpgrade python-debuginfoUpgrade python2-numpy-debuginfoUpgrade python2-debugUpgrade python2-bson-debuginfoUpgrade python-psycopg2-docUpgrade python2-wheelUpgrade platform-python-debugUpgrade python2-sixUpgrade python38-libsUpgrade python2-idnaUpgrade python38-babelUpgrade python2-Cython-debuginfoUpgrade python38-psycopg2-debuginfoUpgrade python-coverage-debugsourceUpgrade python2-chardetUpgrade python38-scipy-debuginfoUpgrade python38-mod_wsgiUpgrade python2-numpy-f2pyUpgrade python2-jinja2Upgrade python38-numpyUpgrade python38-lxml-debuginfoUpgrade python38-cffiUpgrade python2-urllib3Upgrade python-toolsUpgrade python2-pipUpgrade python2-coverage-debuginfoUpgrade python2-coverageUpgrade python-nose-docsUpgrade Cython-debugsource | Jun 1, 2021 | Sep 27, 2020 |
| Debian | — | Upgrade pypy3Upgrade python3.9 | 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 python-develUpgrade python-libsUpgrade tkinterUpgrade python | Nov 3, 2020 | Sep 27, 2020 |
| Huawei Euleros 2_0_sp3 | — | Upgrade tkinterUpgrade pythonUpgrade python-develUpgrade python-libs | Jan 20, 2021 | Sep 27, 2020 |
| Huawei Euleros 2_0_sp5 | — | Upgrade tkinterUpgrade python-libsUpgrade pythonUpgrade python-devel | Feb 3, 2021 | Sep 27, 2020 |
| Huawei Euleros 2_0_sp8 | — | Upgrade python3Upgrade python3-testUpgrade python3-libsUpgrade python3-unversioned-commandUpgrade python3-devel | Nov 3, 2020 | Sep 27, 2020 |
| Huawei Euleros 2_0_sp9 | — | Upgrade python3-unversioned-commandUpgrade python3 | 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 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 runtime/python-35 to version 3.5.9-11.4.30.0.0.88.0 on Solaris 11.4Upgrade library/python/urllib3-37 to version 1.25.1-11.4.36.0.1.101.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 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.4 | Jan 19, 2021 | Sep 27, 2020 |
| Oracle_linux | — | Upgrade python2-wheel-wheelUpgrade python2-setuptoolsUpgrade python3-libsUpgrade python2-docsUpgrade tkinterUpgrade python2-toolsUpgrade python38-wheel-wheelUpgrade python2-idnaUpgrade python-sqlalchemy-docUpgrade python38-requestsUpgrade platform-python-develUpgrade python38-testUpgrade python38-setuptoolsUpgrade python38-develUpgrade python2-develUpgrade python38-numpy-f2pyUpgrade python38-jinja2Upgrade python2-debugUpgrade python2-coverageUpgrade python-develUpgrade python38-plyUpgrade python2-setuptools-wheelUpgrade python2-pyyamlUpgrade python38-pysocksUpgrade python38-psutilUpgrade python2-pymongoUpgrade python2-lxmlUpgrade python38-psycopg2-docUpgrade python2-ipaddressUpgrade python38-wheelUpgrade python2-pytest-mockUpgrade python38-idleUpgrade python2-jinja2Upgrade platform-python-debugUpgrade python3-idleUpgrade python2-pluggyUpgrade python2-psycopg2Upgrade python38-tkinterUpgrade python38-lxmlUpgrade python38-mod_wsgiUpgrade python38-urllib3Upgrade python38-rpm-macrosUpgrade python38-psycopg2Upgrade python38-cryptographyUpgrade python38-cffiUpgrade python38-asn1cryptoUpgrade python2-tkinterUpgrade python2-scipyUpgrade python2-noseUpgrade python2-chardetUpgrade python-nose-docsUpgrade platform-pythonUpgrade python38-numpyUpgrade python38-libsUpgrade python2-psycopg2-testsUpgrade python2-numpy-docUpgrade python2-babelUpgrade python2-testUpgrade python38-debugUpgrade python2-pipUpgrade python38-numpy-docUpgrade python2-bsonUpgrade python-testUpgrade python2-virtualenvUpgrade python38-pytzUpgrade python-psycopg2-docUpgrade python38-pipUpgrade python2-dnsUpgrade python2-pygmentsUpgrade python2-rpm-macrosUpgrade python2-setuptools_scmUpgrade python38-markupsafeUpgrade python2Upgrade python38-sixUpgrade python38-PyMySQLUpgrade python2-pymongo-gridfsUpgrade python2-psycopg2-debugUpgrade python2-markupsafeUpgrade python2-docutilsUpgrade python2-pysocksUpgrade python2-backports-ssl_match_hostnameUpgrade python2-requestsUpgrade python2-mockUpgrade python-libsUpgrade python2-funcsigsUpgrade python3-testUpgrade python2-PyMySQLUpgrade python2-sqlalchemyUpgrade python2-attrsUpgrade python2-backportsUpgrade python2-pip-wheelUpgrade babelUpgrade python2-sixUpgrade python3-tkinterUpgrade python38-CythonUpgrade python2-wheelUpgrade python2-CythonUpgrade python2-docs-infoUpgrade python2-libsUpgrade python2-numpy-f2pyUpgrade python2-pytestUpgrade python38-pip-wheelUpgrade python38-pycparserUpgrade python38-idnaUpgrade python-debugUpgrade python2-pyUpgrade python2-pytzUpgrade python-toolsUpgrade python38-setuptools-wheelUpgrade python38-babelUpgrade python38-chardetUpgrade python2-urllib3Upgrade python38-pyyamlUpgrade pythonUpgrade python38-psycopg2-testsUpgrade python38Upgrade python2-numpyUpgrade python38-scipy | May 26, 2021 | Feb 10, 2020 |
| Redhat_linux | — | Upgrade python2-numpy-docUpgrade python2-attrsUpgrade python38-asn1cryptoUpgrade python2-pyyaml-debuginfoUpgrade python2-pytest-mockUpgrade python2-psycopg2-debug-debuginfoUpgrade python2-scipy-debuginfoUpgrade python2-requestsUpgrade python2-pytzUpgrade python2-debugsourceUpgrade python38-cffi-debuginfoUpgrade python38-wheel-wheelUpgrade numpy-debugsourceUpgrade python38-tkinterUpgrade python38-pycparserUpgrade python2-pip-wheelUpgrade python-markupsafe-debugsourceUpgrade python38-rpm-macrosUpgrade python2-docs-infoUpgrade python38-plyUpgrade python2-funcsigsUpgrade python-pymongo-debuginfoUpgrade python38-setuptoolsUpgrade python2-toolsUpgrade python38-requestsUpgrade python38-psycopg2Upgrade python38-lxmlUpgrade python2-setuptoolsUpgrade python38-mod_wsgiUpgrade python2-psycopg2-debuginfoUpgrade python2-scipyUpgrade python38-pyyamlUpgrade python38-cryptography-debuginfoUpgrade python2-develUpgrade python3-debugsourceUpgrade python2-idnaUpgrade python38-jinja2Upgrade platform-python-develUpgrade platform-python-debugUpgrade python2-pluggyUpgrade python2-virtualenvUpgrade python38-debuginfoUpgrade python-libsNo solution existsUpgrade python38-debugUpgrade python38-pytzUpgrade python-psycopg2-debugsourceUpgrade python2-markupsafeUpgrade python2-pysocksUpgrade python2-sqlalchemyUpgrade python3-tkinterUpgrade python3-libsUpgrade python2-pymongo-debuginfoUpgrade python2-pyUpgrade python2-PyMySQLUpgrade python3-debuginfoUpgrade python-sqlalchemy-docUpgrade python2-pygmentsUpgrade python38-develUpgrade python2-lxmlUpgrade python3-idleUpgrade python2-pymongoUpgrade platform-pythonUpgrade python2-tkinterUpgrade python38-markupsafe-debuginfoUpgrade python38-numpy-f2pyUpgrade babelUpgrade python2-numpyUpgrade python2-docutilsUpgrade python2-setuptools_scmUpgrade python2-psycopg2Upgrade python38-Cython-debuginfoUpgrade python-cryptography-debugsourceUpgrade tkinterUpgrade python38-wheelUpgrade python-develUpgrade python38-psutil-debuginfoUpgrade python-debugUpgrade python2-backports-ssl_match_hostnameUpgrade python-toolsUpgrade python-debuginfoUpgrade python2Upgrade python38-testUpgrade PyYAML-debugsourceUpgrade python38-lxml-debuginfoUpgrade python2-pymongo-gridfsUpgrade python38-pip-wheelUpgrade python38-cffiUpgrade python38-psycopg2-debuginfoUpgrade python2-bsonUpgrade python2-chardetUpgrade python2-babelUpgrade python38-psycopg2-testsUpgrade scipy-debugsourceUpgrade python38-PyMySQLUpgrade python-coverage-debugsourceUpgrade python38-scipy-debuginfoUpgrade python38-urllib3Upgrade python38Upgrade python2-CythonUpgrade python38-psycopg2-docUpgrade python38-chardetUpgrade pythonUpgrade python38-cryptographyUpgrade python-nose-docsUpgrade python2-rpm-macrosUpgrade python-pymongo-debugsourceUpgrade python3-testUpgrade python2-pyyamlUpgrade python2-Cython-debuginfoUpgrade python38-setuptools-wheelUpgrade python2-wheelUpgrade python2-jinja2Upgrade python-psycopg2-debuginfoUpgrade python38-scipyUpgrade python-cffi-debugsourceUpgrade python2-numpy-f2pyUpgrade python38-idnaUpgrade python2-mockUpgrade python2-coverageUpgrade python2-docsUpgrade python2-setuptools-wheelUpgrade python2-pytestUpgrade python2-dnsUpgrade python-lxml-debugsourceUpgrade python2-lxml-debuginfoUpgrade python2-wheel-wheelUpgrade python2-urllib3Upgrade python38-numpy-debuginfoUpgrade python38-psutilUpgrade python-psycopg2-docUpgrade python2-ipaddressUpgrade python38-babelUpgrade python38-pyyaml-debuginfoUpgrade python38-pysocksUpgrade python2-coverage-debuginfoUpgrade python38-debugsourceUpgrade python38-numpyUpgrade python2-debuginfoUpgrade python38-libsUpgrade python-testUpgrade python38-idleUpgrade python38-CythonUpgrade python38-numpy-docUpgrade python38-markupsafeUpgrade python-psutil-debugsourceUpgrade python2-noseUpgrade python2-pipUpgrade python38-sixUpgrade python2-backportsUpgrade python38-pipUpgrade python2-sixUpgrade python2-psycopg2-debugUpgrade python2-testUpgrade python2-bson-debuginfoUpgrade python2-libsUpgrade Cython-debugsourceUpgrade python2-numpy-debuginfoUpgrade python2-debugUpgrade python2-psycopg2-tests | May 21, 2021 | Sep 27, 2020 |
| Rocky_linux | — | Upgrade python-cffi-debugsourceUpgrade python38-numpy-debuginfoUpgrade python38-psycopg2-debuginfoUpgrade python2-backportsUpgrade PyYAML-debugsourceUpgrade python-psutil-debugsourceUpgrade python38-lxml-debuginfoUpgrade python2-psycopg2-debugUpgrade python2-Cython-debuginfoUpgrade python2-debuginfoUpgrade numpy-debugsourceUpgrade python-pymongo-debugsourceUpgrade python38Upgrade python38-debugUpgrade python38-markupsafeUpgrade python2-CythonUpgrade python2-markupsafeUpgrade python38-CythonUpgrade python38-pyyaml-debuginfoUpgrade python2-psycopg2-testsUpgrade python2-sqlalchemyUpgrade python2Upgrade python2-pymongo-gridfsUpgrade python38-pyyamlUpgrade python38-scipyUpgrade python-cryptography-debugsourceUpgrade python2-testUpgrade python2-debugsourceUpgrade python38-Cython-debuginfoUpgrade python2-toolsUpgrade python38-debugsourceUpgrade python-coverage-debugsourceUpgrade python38-psycopg2-testsUpgrade python2-psycopg2-debuginfoUpgrade python38-scipy-debuginfoUpgrade python2-bsonUpgrade python2-libsUpgrade python2-numpy-f2pyUpgrade python2-coverageUpgrade python2-bson-debuginfoUpgrade python38-cryptographyUpgrade python2-pyyamlUpgrade python-psycopg2-debuginfoUpgrade python2-lxml-debuginfoUpgrade python2-pymongoUpgrade python38-cryptography-debuginfoUpgrade python-markupsafe-debugsourceUpgrade python38-numpy-f2pyUpgrade python38-markupsafe-debuginfoUpgrade python38-develUpgrade python38-debuginfoUpgrade python2-numpy-debuginfoUpgrade python-psycopg2-docUpgrade python38-psutilUpgrade python-lxml-debugsourceUpgrade python-pymongo-debuginfoUpgrade python38-psycopg2Upgrade python38-lxmlUpgrade python2-tkinterUpgrade python2-scipy-debuginfoUpgrade python2-develUpgrade Cython-debugsourceUpgrade python38-tkinterUpgrade python38-testUpgrade python38-libsUpgrade python38-idleUpgrade python38-cffiUpgrade python38-psutil-debuginfoUpgrade python38-cffi-debuginfoUpgrade python2-psycopg2Upgrade python2-pyyaml-debuginfoUpgrade python2-psycopg2-debug-debuginfoUpgrade scipy-debugsourceUpgrade python2-coverage-debuginfoUpgrade python38-mod_wsgiUpgrade python-psycopg2-debugsourceUpgrade python2-numpyUpgrade python2-lxmlUpgrade python2-debugUpgrade python2-pymongo-debuginfoUpgrade python2-scipyUpgrade python38-numpyUpgrade python38-psycopg2-doc | Mar 12, 2024 | Sep 27, 2020 |
| Suse | — | Upgrade python3-idleUpgrade libpython2_6-1_0Upgrade python3-dbmUpgrade python3-urllib3Upgrade python-urllib3Upgrade libpython2_7-1_0-32bitUpgrade python3-32bitUpgrade pythonUpgrade libpython3_6m1_0Upgrade python3-doc-devhelpUpgrade libpython3_4m1_0Upgrade libpython3_4m1_0-32bitUpgrade python-baseUpgrade python-docUpgrade python-gdbmUpgrade python-idleUpgrade python-32bitUpgrade python3-baseUpgrade python3-develUpgrade python36Upgrade libpython2_7-1_0Upgrade python36-baseUpgrade python-cursesUpgrade python3-docUpgrade python3-base-32bitUpgrade libpython3_6m1_0-32bitUpgrade python3-tkUpgrade python-base-32bitUpgrade python3-testsuiteUpgrade libpython2_6-1_0-32bitUpgrade python-doc-pdfUpgrade python3-cursesUpgrade python3Upgrade python2-urllib3Upgrade python-develUpgrade python3-toolsUpgrade python-xmlUpgrade python-tkUpgrade python-demo | Nov 28, 2020 | Sep 27, 2020 |
| Ubuntu | — | Upgrade python3.4-minimal (Ubuntu Pro)Upgrade python3.4 (Ubuntu Pro)Upgrade python3.8-minimal (Ubuntu Pro)Upgrade python3.8 (Ubuntu Pro)Upgrade python3.6 (Ubuntu Pro)Upgrade python3.8-minimalUpgrade python3.8Upgrade python3.5-minimalUpgrade python3.5Upgrade python3.7-minimal (Ubuntu Pro)Upgrade python3.5-minimal (Ubuntu Pro)Upgrade python2.7Upgrade python3.5 (Ubuntu Pro)Upgrade python3.7Upgrade python3.6Upgrade python2.7 (Ubuntu Pro)Upgrade python3.6-minimal (Ubuntu Pro)Upgrade python3.7 (Ubuntu Pro)Upgrade python2.7-minimal (Ubuntu Pro)Upgrade python2.7-minimalUpgrade python3.6-minimalUpgrade python3.7-minimal | 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