In the Linux kernel, the following vulnerability has been resolved:
mptcp: pm: only mark 'subflow' endp as available
Adding the following warning ...
WARNONONCE(msk->pm.localaddrused == 0)
... before decrementing the localaddrused counter helped to find a bug when running the "remove single address" subtest from the mptcp_join.sh selftests.
Removing a 'signal' endpoint will trigger the removal of all subflows linked to this endpoint via mptcppmnlrmaddrorsubflow() with rmtype == MPTCPMIBRMSUBFLOW. This will decrement the localaddr_used counter, which is wrong in this case because this counter is linked to 'subflow' endpoints, and here it is a 'signal' endpoint that is being removed.
Now, the counter is decremented, only if the ID is being used outside of mptcppmnlrmaddrorsubflow(), only for 'subflow' endpoints, and if the ID is not 0 -- localaddrused is not taking into account these ones. This marking of the ID as being available, and the decrement is done no matter if a subflow using this ID is currently available, because the subflow could have been closed before.
[
{
"target": {
"function": "mptcp_pm_nl_fullmesh",
"file": "net/mptcp/pm_netlink.c"
},
"digest": {
"length": 250.0,
"function_hash": "283948406297186785562818534485082658579"
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@7fdc870d08960961408a44c569f20f50940e7d4f",
"deprecated": false,
"id": "CVE-2024-45010-0d8a555b",
"signature_type": "Function"
},
{
"target": {
"file": "net/mptcp/pm_netlink.c"
},
"digest": {
"line_hashes": [
"303406496000233570101356869512263795002",
"42687865354996277110415047462032362615",
"242126056954970320393998025598929256470",
"256040278279886292639010076021806317290",
"109964753311999935238935269381424985681",
"294841458743423965118763240535899265405",
"240713343294298619373966744063435104123",
"46762486833995732775950387555503895207",
"88916744802563965739236819881937197076",
"59365313586343527065207726104504912638",
"76936437292698411080389145175228432298",
"284788453524007852753970058212815689943",
"329761195496226063472262981998276362137",
"66479626868526840350468958762048029788",
"143123375845970959649335558345893863211",
"255520296361335228326310833724520036751",
"45490859028783733436185220556185941263",
"297532853794409598644969499469366549228",
"8670584592789110738707146001537977392",
"73483372171340063098412318735430068500",
"114908296579361392820961713421509045735",
"323697248920178994085313797918472172205",
"81034703538491632961316481763386681462",
"142621418671124100678786245210474002505",
"87867407115842815960600696923178331004",
"287503259118870115907000485252514909678",
"165878939716379154085813211168696696574",
"56186944633783910161036517998942891397",
"308842906114415834112514008908884546333",
"49201583147328943681935768568674076699"
],
"threshold": 0.9
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@7fdc870d08960961408a44c569f20f50940e7d4f",
"deprecated": false,
"id": "CVE-2024-45010-17ac9d3b",
"signature_type": "Line"
},
{
"target": {
"file": "net/mptcp/pm_netlink.c"
},
"digest": {
"line_hashes": [
"303406496000233570101356869512263795002",
"42687865354996277110415047462032362615",
"242126056954970320393998025598929256470",
"256040278279886292639010076021806317290",
"109964753311999935238935269381424985681",
"294841458743423965118763240535899265405",
"240713343294298619373966744063435104123",
"321058087655532379243198506033575358394",
"88916744802563965739236819881937197076",
"59365313586343527065207726104504912638",
"76936437292698411080389145175228432298",
"284788453524007852753970058212815689943",
"329761195496226063472262981998276362137",
"66479626868526840350468958762048029788",
"143123375845970959649335558345893863211",
"255520296361335228326310833724520036751",
"45490859028783733436185220556185941263",
"297532853794409598644969499469366549228",
"8670584592789110738707146001537977392",
"73483372171340063098412318735430068500",
"114908296579361392820961713421509045735",
"229788103249692568556566577487943909125",
"81034703538491632961316481763386681462",
"142621418671124100678786245210474002505",
"87867407115842815960600696923178331004",
"287503259118870115907000485252514909678",
"165878939716379154085813211168696696574",
"56186944633783910161036517998942891397",
"308842906114415834112514008908884546333",
"49201583147328943681935768568674076699"
],
"threshold": 0.9
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@43cf912b0b0fc7b4fd12cbc735d1f5afb8e1322d",
"deprecated": false,
"id": "CVE-2024-45010-2725ba12",
"signature_type": "Line"
},
{
"target": {
"function": "mptcp_nl_remove_id_zero_address",
"file": "net/mptcp/pm_netlink.c"
},
"digest": {
"length": 655.0,
"function_hash": "166875594509942658493730395616123705767"
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@43cf912b0b0fc7b4fd12cbc735d1f5afb8e1322d",
"deprecated": false,
"id": "CVE-2024-45010-3149662e",
"signature_type": "Function"
},
{
"target": {
"function": "mptcp_nl_remove_subflow_and_signal_addr",
"file": "net/mptcp/pm_netlink.c"
},
"digest": {
"length": 1048.0,
"function_hash": "59771219551969617362756312170363289215"
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@43cf912b0b0fc7b4fd12cbc735d1f5afb8e1322d",
"deprecated": false,
"id": "CVE-2024-45010-6ad9ba2e",
"signature_type": "Function"
},
{
"target": {
"function": "mptcp_nl_remove_id_zero_address",
"file": "net/mptcp/pm_netlink.c"
},
"digest": {
"length": 655.0,
"function_hash": "166875594509942658493730395616123705767"
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@322ea3778965da72862cca2a0c50253aacf65fe6",
"deprecated": false,
"id": "CVE-2024-45010-6de127b9",
"signature_type": "Function"
},
{
"target": {
"function": "mptcp_nl_remove_subflow_and_signal_addr",
"file": "net/mptcp/pm_netlink.c"
},
"digest": {
"length": 1128.0,
"function_hash": "132895367607485041562253493916026532612"
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@7fdc870d08960961408a44c569f20f50940e7d4f",
"deprecated": false,
"id": "CVE-2024-45010-8b710447",
"signature_type": "Function"
},
{
"target": {
"file": "net/mptcp/pm_netlink.c"
},
"digest": {
"line_hashes": [
"303406496000233570101356869512263795002",
"42687865354996277110415047462032362615",
"242126056954970320393998025598929256470",
"256040278279886292639010076021806317290",
"109964753311999935238935269381424985681",
"294841458743423965118763240535899265405",
"240713343294298619373966744063435104123",
"321058087655532379243198506033575358394",
"88916744802563965739236819881937197076",
"59365313586343527065207726104504912638",
"76936437292698411080389145175228432298",
"284788453524007852753970058212815689943",
"329761195496226063472262981998276362137",
"66479626868526840350468958762048029788",
"143123375845970959649335558345893863211",
"255520296361335228326310833724520036751",
"45490859028783733436185220556185941263",
"297532853794409598644969499469366549228",
"8670584592789110738707146001537977392",
"73483372171340063098412318735430068500",
"114908296579361392820961713421509045735",
"229788103249692568556566577487943909125",
"81034703538491632961316481763386681462",
"142621418671124100678786245210474002505",
"87867407115842815960600696923178331004",
"287503259118870115907000485252514909678",
"165878939716379154085813211168696696574",
"56186944633783910161036517998942891397",
"308842906114415834112514008908884546333",
"49201583147328943681935768568674076699"
],
"threshold": 0.9
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@322ea3778965da72862cca2a0c50253aacf65fe6",
"deprecated": false,
"id": "CVE-2024-45010-90145906",
"signature_type": "Line"
},
{
"target": {
"function": "mptcp_pm_nl_fullmesh",
"file": "net/mptcp/pm_netlink.c"
},
"digest": {
"length": 250.0,
"function_hash": "283948406297186785562818534485082658579"
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@43cf912b0b0fc7b4fd12cbc735d1f5afb8e1322d",
"deprecated": false,
"id": "CVE-2024-45010-945f1c7b",
"signature_type": "Function"
},
{
"target": {
"file": "net/mptcp/pm_netlink.c"
},
"digest": {
"line_hashes": [
"303406496000233570101356869512263795002",
"42687865354996277110415047462032362615",
"242126056954970320393998025598929256470",
"256040278279886292639010076021806317290",
"109964753311999935238935269381424985681",
"294841458743423965118763240535899265405",
"240713343294298619373966744063435104123",
"321058087655532379243198506033575358394",
"88916744802563965739236819881937197076",
"59365313586343527065207726104504912638",
"76936437292698411080389145175228432298",
"284788453524007852753970058212815689943",
"329761195496226063472262981998276362137",
"66479626868526840350468958762048029788",
"143123375845970959649335558345893863211",
"255520296361335228326310833724520036751",
"45490859028783733436185220556185941263",
"297532853794409598644969499469366549228",
"8670584592789110738707146001537977392",
"73483372171340063098412318735430068500",
"114908296579361392820961713421509045735",
"229788103249692568556566577487943909125",
"81034703538491632961316481763386681462",
"142621418671124100678786245210474002505",
"87867407115842815960600696923178331004",
"287503259118870115907000485252514909678",
"165878939716379154085813211168696696574",
"56186944633783910161036517998942891397",
"308842906114415834112514008908884546333",
"49201583147328943681935768568674076699"
],
"threshold": 0.9
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@9849cfc67383ceb167155186f8f8fe8a896b60b3",
"deprecated": false,
"id": "CVE-2024-45010-970c9853",
"signature_type": "Line"
},
{
"target": {
"function": "mptcp_nl_remove_subflow_and_signal_addr",
"file": "net/mptcp/pm_netlink.c"
},
"digest": {
"length": 1048.0,
"function_hash": "59771219551969617362756312170363289215"
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@322ea3778965da72862cca2a0c50253aacf65fe6",
"deprecated": false,
"id": "CVE-2024-45010-981de5fa",
"signature_type": "Function"
},
{
"target": {
"function": "mptcp_nl_remove_id_zero_address",
"file": "net/mptcp/pm_netlink.c"
},
"digest": {
"length": 655.0,
"function_hash": "166875594509942658493730395616123705767"
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@7fdc870d08960961408a44c569f20f50940e7d4f",
"deprecated": false,
"id": "CVE-2024-45010-b73a2ceb",
"signature_type": "Function"
},
{
"target": {
"function": "mptcp_pm_nl_rm_addr_or_subflow",
"file": "net/mptcp/pm_netlink.c"
},
"digest": {
"length": 1831.0,
"function_hash": "115404553783697679245079885075725333932"
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@7fdc870d08960961408a44c569f20f50940e7d4f",
"deprecated": false,
"id": "CVE-2024-45010-c67a1f24",
"signature_type": "Function"
},
{
"target": {
"function": "mptcp_pm_nl_rm_addr_or_subflow",
"file": "net/mptcp/pm_netlink.c"
},
"digest": {
"length": 1705.0,
"function_hash": "113642751135202541858334118581306426931"
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@43cf912b0b0fc7b4fd12cbc735d1f5afb8e1322d",
"deprecated": false,
"id": "CVE-2024-45010-d76ac4e7",
"signature_type": "Function"
},
{
"target": {
"function": "mptcp_pm_nl_fullmesh",
"file": "net/mptcp/pm_netlink.c"
},
"digest": {
"length": 250.0,
"function_hash": "283948406297186785562818534485082658579"
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@322ea3778965da72862cca2a0c50253aacf65fe6",
"deprecated": false,
"id": "CVE-2024-45010-dee47a21",
"signature_type": "Function"
},
{
"target": {
"function": "mptcp_pm_nl_rm_addr_or_subflow",
"file": "net/mptcp/pm_netlink.c"
},
"digest": {
"length": 1705.0,
"function_hash": "113642751135202541858334118581306426931"
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@322ea3778965da72862cca2a0c50253aacf65fe6",
"deprecated": false,
"id": "CVE-2024-45010-ea8c3e39",
"signature_type": "Function"
},
{
"target": {
"function": "mptcp_nl_remove_id_zero_address",
"file": "net/mptcp/pm_netlink.c"
},
"digest": {
"length": 655.0,
"function_hash": "166875594509942658493730395616123705767"
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@9849cfc67383ceb167155186f8f8fe8a896b60b3",
"deprecated": false,
"id": "CVE-2024-45010-eb0bde71",
"signature_type": "Function"
},
{
"target": {
"function": "mptcp_nl_remove_subflow_and_signal_addr",
"file": "net/mptcp/pm_netlink.c"
},
"digest": {
"length": 1048.0,
"function_hash": "59771219551969617362756312170363289215"
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@9849cfc67383ceb167155186f8f8fe8a896b60b3",
"deprecated": false,
"id": "CVE-2024-45010-f75eb57a",
"signature_type": "Function"
},
{
"target": {
"function": "mptcp_pm_nl_fullmesh",
"file": "net/mptcp/pm_netlink.c"
},
"digest": {
"length": 250.0,
"function_hash": "283948406297186785562818534485082658579"
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@9849cfc67383ceb167155186f8f8fe8a896b60b3",
"deprecated": false,
"id": "CVE-2024-45010-f99f2480",
"signature_type": "Function"
},
{
"target": {
"function": "mptcp_pm_nl_rm_addr_or_subflow",
"file": "net/mptcp/pm_netlink.c"
},
"digest": {
"length": 1705.0,
"function_hash": "113642751135202541858334118581306426931"
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@9849cfc67383ceb167155186f8f8fe8a896b60b3",
"deprecated": false,
"id": "CVE-2024-45010-fcfcc8ec",
"signature_type": "Function"
}
]