CARVIEW |
Select Language
HTTP/2 200
date: Sat, 26 Jul 2025 22:22:38 GMT
content-type: text/html; charset=utf-8
vary: X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With,Accept-Encoding, Accept, X-Requested-With
etag: W/"d6e5087c4b96ae6f9a5af2c068bcd39e"
cache-control: max-age=0, private, must-revalidate
strict-transport-security: max-age=31536000; includeSubdomains; preload
x-frame-options: deny
x-content-type-options: nosniff
x-xss-protection: 0
referrer-policy: no-referrer-when-downgrade
content-security-policy: default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com *.rel.tunnels.api.visualstudio.com wss://*.rel.tunnels.api.visualstudio.com objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com proxy.individual.githubcopilot.com proxy.business.githubcopilot.com proxy.enterprise.githubcopilot.com *.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/ productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/ productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/ productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/ productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/ productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/ productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/ productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com api.githubcopilot.com api.individual.githubcopilot.com api.business.githubcopilot.com api.enterprise.githubcopilot.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: blob: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com private-avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com release-assets.githubusercontent.com secured-user-images.githubusercontent.com/ user-images.githubusercontent.com/ private-user-images.githubusercontent.com opengraph.githubassets.com copilotprodattachments.blob.core.windows.net/github-production-copilot-attachments/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com objects-origin.githubusercontent.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com github-production-user-asset-6210df.s3.amazonaws.com gist.github.com; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; upgrade-insecure-requests; worker-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/
server: github.com
content-encoding: gzip
accept-ranges: bytes
set-cookie: _gh_sess=RUty5QHEQECXl1%2Br7WKC5dZlPvAWZ2Z0CD6WDmkdDaDkHlYtaueRR%2B4FIIC3giFIWAdsvSgQeP%2Bic%2FtlPwJtcYO%2FZnSVaf16M7ziujksQHQ0jQ%2FQVTK%2Fr%2FyeR7yNmk2xYkQda5kLiytbYpjG5VpMvNBVWCChg7UmekIzAx%2BkULyoMKn6zMPUQudriZgcwOkPVF0AD290yknVbWF3yvjy8fsOsdCGxBeq61uyLYcqzsQOIjAEWjASBUsmZ%2BzoWjEUdqw6Ld6Qk%2BQrKCxXN41Z6w%3D%3D--GbFFoDwP76JEaYDl--MA7lQ1C%2B5MGliJLaRxIHXA%3D%3D; Path=/; HttpOnly; Secure; SameSite=Lax
set-cookie: _octo=GH1.1.442546839.1753568558; Path=/; Domain=github.com; Expires=Sun, 26 Jul 2026 22:22:38 GMT; Secure; SameSite=Lax
set-cookie: logged_in=no; Path=/; Domain=github.com; Expires=Sun, 26 Jul 2026 22:22:38 GMT; HttpOnly; Secure; SameSite=Lax
x-github-request-id: DCFE:5FFA9:94C022:C1B902:6885552E
Linux Kernel: Infoleak in Bluetooth L2CAP Handling · Advisory · google/security-research · GitHub
Skip to content
Navigation Menu
{{ message }}
-
Notifications
You must be signed in to change notification settings - Fork 480
Linux Kernel: Infoleak in Bluetooth L2CAP Handling
Moderate
Package
Kernel
(Linux)
Affected versions
> v3.0.0
Patched versions
None
Description
Severity
Moderate
CVE ID
CVE-2022-42895
Weaknesses
No CWEs
Credits
-
koczkatamas Analyst
-
TheOfficialFloW Analyst
You can’t perform that action at this time.
Summary
There is an infoleak vulnerability in the Linux kernel's
net/bluetooth/l2cap_core.c
'sl2cap_parse_conf_req
function which can be used to leak kernel pointers remotely.The bug was introduced in commit 42dceae (version: 3.0.0, date: 2011-Oct-17).
Severity
Moderate - The leak in Bluetooth L2CAP handling can be used to leak kernel pointers remotely.
Proof of Concept
The bug can be triggered remotely on a KASAN-enabled kernel with the PoC below. Tested on Ubuntu 22.04, precondition: HighSpeed support needs to be enabled via e.g.
btmgmt hs on
Further Analysis
Commit 42dceae added parsing
Extended Flow Specification
option inL2CAP Config Request
, which uses a localstruct l2cap_conf_efs efs
on the stack which is normally initialized with data sent remotely (andremote_efs
is set to 1). This structure is also written back to the remote client (as a confirmation of successful configuration change).The problem is this code path checks the
FLAG_EFS_ENABLE
channel flag instead of theremote_efs
variable to decide if thel2cap_conf_efs efs
struct should be used or not and it is possible to set theFLAG_EFS_ENABLE
flag without actually sending EFS configuration data and in this case the uninitializedl2cap_conf_efs efs
struct will be sent back to the remote client thus leaking information about kernel memory contents, including kernel pointers.The
FLAG_EFS_ENABLE
flag can also be set on the channel at other places by satisfying the requirements of__l2cap_efs_supported
:L2CAP_FC_A2MP
local channel availability: this requiresHCI_HS_ENABLED
to be enabled which can be achieved via the BT management interface, by e.g. callingbtmgmt hs on
(it is off by default on the systems used for testing)L2CAP_FEAT_EXT_FLOW
feature mask: which can be turned on via theL2CAP_INFO_RSP
command.To actually set the
FLAG_EFS_ENABLE
flagl2cap_build_conf_req
needs to be called, which can be done e.g. via the L2CAP_CONN_RSP command.Sample Packet of Leaked Information
The following pointers were confirmed to be valid addresses from the kernel space:
Reachability
The affected code path is reached via A2MP which depends on the
CONFIG_BT_HS
(Bluetooth High Speed) kernel config which is disabled by default, but it is enabled on some well-known distributions (including Ubuntu).Also
HCI_HS_ENABLED
needs to be true, which can be turned on via the management interface, but we are not aware of any configuration currently where it is turned on by default.Patch
The vulnerability was fixed by also checking if
remote_efs
is true in commit b1a2cd5.Timeline
Date reported: 10/06/2022
Date fixed: 10/26/2022
Date disclosed: 11/28/2022