In the Linux kernel, the following vulnerability has been resolved:
bpf: Allow delete from sockmap/sockhash only if update is allowed
We have seen an influx of syzkaller reports where a BPF program attached to a tracepoint triggers a locking rule violation by performing a map_delete on a sockmap/sockhash.
We don't intend to support this artificial use scenario. Extend the existing verifier allowed-program-type check for updating sockmap/sockhash to also cover deleting from a map.
From now on only BPF programs which were previously allowed to update sockmap/sockhash can delete from these map types.
{ "vanir_signatures": [ { "deprecated": false, "signature_type": "Function", "target": { "file": "kernel/bpf/verifier.c", "function": "may_update_sockmap" }, "signature_version": "v1", "digest": { "length": 640.0, "function_hash": "158408658421488995327054741383336107750" }, "id": "CVE-2024-38662-17cb795b", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@000a65bf1dc04fb2b65e2abf116f0bc0fc2ee7b1" }, { "deprecated": false, "signature_type": "Line", "target": { "file": "kernel/bpf/verifier.c" }, "signature_version": "v1", "digest": { "line_hashes": [ "7951363273844158997269440188261648089", "278923824943629224052149208149839493838", "95024830595712549718239881963116039460", "67241830700915376453166430681788109394", "287825870037365048958949144350964352837", "297215249275033344689269068849347888893", "43592083409730823798475229206434858833", "50817482264475870619502068663446896134", "219598259301048817366013311300163617023", "229525884466669471377673659781293511242", "229670240702912403965929939914899539282", "43599723422404838837931357381598305072", "21681151911229597155917282065768200766", "100513450600306280933628058840708700840", "286851154665423463784781304584671457844", "138213226128574572427451668061370308842" ], "threshold": 0.9 }, "id": "CVE-2024-38662-1fb3f770", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@000a65bf1dc04fb2b65e2abf116f0bc0fc2ee7b1" }, { "deprecated": false, "signature_type": "Line", "target": { "file": "kernel/bpf/verifier.c" }, "signature_version": "v1", "digest": { "line_hashes": [ "7951363273844158997269440188261648089", "278923824943629224052149208149839493838", "95024830595712549718239881963116039460", "67241830700915376453166430681788109394", "287825870037365048958949144350964352837", "297215249275033344689269068849347888893", "43592083409730823798475229206434858833", "50817482264475870619502068663446896134", "219598259301048817366013311300163617023", "229525884466669471377673659781293511242", "229670240702912403965929939914899539282", "43599723422404838837931357381598305072", "21681151911229597155917282065768200766", "100513450600306280933628058840708700840", "286851154665423463784781304584671457844", "138213226128574572427451668061370308842" ], "threshold": 0.9 }, "id": "CVE-2024-38662-239a3812", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@29467edc23818dc5a33042ffb4920b49b090e63d" }, { "deprecated": false, "signature_type": "Line", "target": { "file": "kernel/bpf/verifier.c" }, "signature_version": "v1", "digest": { "line_hashes": [ "7951363273844158997269440188261648089", "278923824943629224052149208149839493838", "95024830595712549718239881963116039460", "67241830700915376453166430681788109394", "287825870037365048958949144350964352837", "297215249275033344689269068849347888893", "43592083409730823798475229206434858833", "50817482264475870619502068663446896134", "219598259301048817366013311300163617023", "229525884466669471377673659781293511242", "229670240702912403965929939914899539282", "43599723422404838837931357381598305072", "21681151911229597155917282065768200766", "100513450600306280933628058840708700840", "286851154665423463784781304584671457844", "138213226128574572427451668061370308842" ], "threshold": 0.9 }, "id": "CVE-2024-38662-51b9f031", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b81e1c5a3c70398cf76631ede63a03616ed1ba3c" }, { "deprecated": false, "signature_type": "Function", "target": { "file": "kernel/bpf/verifier.c", "function": "may_update_sockmap" }, "signature_version": "v1", "digest": { "length": 640.0, "function_hash": "158408658421488995327054741383336107750" }, "id": "CVE-2024-38662-54268728", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@11e8ecc5b86037fec43d07b1c162e233e131b1d9" }, { "deprecated": false, "signature_type": "Function", "target": { "file": "kernel/bpf/verifier.c", "function": "check_map_func_compatibility" }, "signature_version": "v1", "digest": { "length": 5533.0, "function_hash": "18012636801240852651590815529866444910" }, "id": "CVE-2024-38662-5b55b793", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@11e8ecc5b86037fec43d07b1c162e233e131b1d9" }, { "deprecated": false, "signature_type": "Function", "target": { "file": "kernel/bpf/verifier.c", "function": "may_update_sockmap" }, "signature_version": "v1", "digest": { "length": 640.0, "function_hash": "158408658421488995327054741383336107750" }, "id": "CVE-2024-38662-666feb2e", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@6693b172f008846811f48a099f33effc26068e1e" }, { "deprecated": false, "signature_type": "Function", "target": { "file": "kernel/bpf/verifier.c", "function": "check_map_func_compatibility" }, "signature_version": "v1", "digest": { "length": 6898.0, "function_hash": "130769171752625465129146301446658396910" }, "id": "CVE-2024-38662-85af3fa0", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@000a65bf1dc04fb2b65e2abf116f0bc0fc2ee7b1" }, { "deprecated": false, "signature_type": "Line", "target": { "file": "kernel/bpf/verifier.c" }, "signature_version": "v1", "digest": { "line_hashes": [ "7951363273844158997269440188261648089", "278923824943629224052149208149839493838", "95024830595712549718239881963116039460", "67241830700915376453166430681788109394", "287825870037365048958949144350964352837", "297215249275033344689269068849347888893", "43592083409730823798475229206434858833", "50817482264475870619502068663446896134", "219598259301048817366013311300163617023", "229525884466669471377673659781293511242", "229670240702912403965929939914899539282", "43599723422404838837931357381598305072", "21681151911229597155917282065768200766", "100513450600306280933628058840708700840", "286851154665423463784781304584671457844", "138213226128574572427451668061370308842" ], "threshold": 0.9 }, "id": "CVE-2024-38662-86fe7fa9", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@6693b172f008846811f48a099f33effc26068e1e" }, { "deprecated": false, "signature_type": "Function", "target": { "file": "kernel/bpf/verifier.c", "function": "may_update_sockmap" }, "signature_version": "v1", "digest": { "length": 640.0, "function_hash": "158408658421488995327054741383336107750" }, "id": "CVE-2024-38662-8ec71f58", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@29467edc23818dc5a33042ffb4920b49b090e63d" }, { "deprecated": false, "signature_type": "Line", "target": { "file": "kernel/bpf/verifier.c" }, "signature_version": "v1", "digest": { "line_hashes": [ "7951363273844158997269440188261648089", "278923824943629224052149208149839493838", "95024830595712549718239881963116039460", "67241830700915376453166430681788109394", "287825870037365048958949144350964352837", "297215249275033344689269068849347888893", "43592083409730823798475229206434858833", "50817482264475870619502068663446896134", "219598259301048817366013311300163617023", "229525884466669471377673659781293511242", "229670240702912403965929939914899539282", "43599723422404838837931357381598305072", "21681151911229597155917282065768200766", "100513450600306280933628058840708700840", "286851154665423463784781304584671457844", "138213226128574572427451668061370308842" ], "threshold": 0.9 }, "id": "CVE-2024-38662-904f3c35", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@11e8ecc5b86037fec43d07b1c162e233e131b1d9" }, { "deprecated": false, "signature_type": "Function", "target": { "file": "kernel/bpf/verifier.c", "function": "check_map_func_compatibility" }, "signature_version": "v1", "digest": { "length": 5252.0, "function_hash": "104542138638348329910289784630181032910" }, "id": "CVE-2024-38662-995446f5", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@29467edc23818dc5a33042ffb4920b49b090e63d" }, { "deprecated": false, "signature_type": "Function", "target": { "file": "kernel/bpf/verifier.c", "function": "may_update_sockmap" }, "signature_version": "v1", "digest": { "length": 640.0, "function_hash": "158408658421488995327054741383336107750" }, "id": "CVE-2024-38662-9befd08b", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b81e1c5a3c70398cf76631ede63a03616ed1ba3c" }, { "deprecated": false, "signature_type": "Function", "target": { "file": "kernel/bpf/verifier.c", "function": "check_map_func_compatibility" }, "signature_version": "v1", "digest": { "length": 6493.0, "function_hash": "58545810331996523129271563858237939223" }, "id": "CVE-2024-38662-b0d1d822", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@6693b172f008846811f48a099f33effc26068e1e" }, { "deprecated": false, "signature_type": "Function", "target": { "file": "kernel/bpf/verifier.c", "function": "check_map_func_compatibility" }, "signature_version": "v1", "digest": { "length": 6898.0, "function_hash": "130769171752625465129146301446658396910" }, "id": "CVE-2024-38662-b8a350ba", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b81e1c5a3c70398cf76631ede63a03616ed1ba3c" } ] }