Wyze Cam Pan v3 / TUTK SDK — tutk_packet_alloc Heap Overflow (CVE-2026-38698)
by vital-information-resource-under-siege · 2026-07-05
- Severity
- Critical
- CVE
- CVE-2026-38698
- Category
- network
- Affected product
- TUTK SDK (as used in Wyze Cam Pan v3 and other TUTK-based IoT cameras)
- Affected versions
- TUTK SDK v3.1.10.0 through v4.3.8.1
- Disclosed
- 2026-07-05
- Patch status
- unpatched
References
Archive entry
intelseclab/poc-archiveMetadata
| Field | Value |
|---|---|
| Date Added | 2026-07-05 |
| Last Updated | 2026-06 |
| Author / Researcher | vital-information-resource-under-siege |
| CVE / Advisory | CVE-2026-38698 |
| Category | network |
| Severity | Critical |
| CVSS Score | Not specified in source |
| Status | PoC |
| Tags | tutk-sdk, iot, camera, heap-overflow, av-server, wyze, authenticated, p2p |
| Related | CVE-2026-38699 |
Affected Target
| Field | Value |
|---|---|
| Software / System | TUTK SDK (as used in Wyze Cam Pan v3 and other TUTK-based IoT cameras) |
| Versions Affected | TUTK SDK v3.1.10.0 through v4.3.8.1 |
| Language / Platform | C (exploit/decryptor tooling for TUTK’s IOTC/AV protocol) |
| Authentication Required | Yes (authenticated TUTK session) |
| Network Access Required | Yes |
Summary
The tutk_packet_alloc function inside the TUTK SDK’s tutk_av_server component, used by Wyze Cam Pan v3 and other TUTK-integrated IoT cameras, allocates a buffer for incoming AV packets based on an attacker-influenced size field without adequate bounds validation. An authenticated attacker able to reach the device’s TUTK P2P/AV service (port 32761) can send a crafted, oversized AV packet derived from a decrypted UDP payload to trigger a heap buffer overflow. The repository provides the C source for both the packet decryptor (used to analyze/craft the proprietary TUTK protocol payloads) and the exploit that sends the malformed packet, along with a written report and demonstration video.
Vulnerability Details
Root Cause
tutk_packet_alloc() computes an allocation size from an attacker-controlled field in a decrypted AV packet without validating it against the actual received/expected data length, leading to a heap buffer overflow when the packet is subsequently copied (CWE-122-class heap overflow).
Attack Vector
- Establish an authenticated TUTK session with the target camera’s AV service on UDP port 32761.
- Use the included decryptor tooling to construct a valid encrypted AV packet envelope.
- Craft the packet’s payload/size fields to be oversized relative to what
tutk_packet_allocexpects. - Send the malicious packet to the device, triggering a heap overflow in
tutk_av_server.
Impact
Memory corruption on the camera’s embedded Linux/RTOS platform, with the potential for remote code execution on the device depending on heap layout and mitigations present in the target firmware.
Environment / Lab Setup
Target: TUTK SDK v3.1.10.0 - v4.3.8.1 (e.g. Wyze Cam Pan v3 firmware)
Attacker: gcc, make, libssl/libcrypto (pkg-config), authenticated TUTK session material
Proof of Concept
PoC Script
See
exploit/src/(main.c, charlie.c, iotc_client.c, util.c) andexploit/Makefilein this folder.
| |
Building with the provided Makefile compiles both a release (exploit) and debug (exploit-debug) binary that establish a TUTK session with the target device and transmit the oversized AV packet to trigger the tutk_packet_alloc heap overflow.
Detection & Indicators of Compromise
Signs of compromise:
- Unexpected reboots or watchdog resets of TUTK-based cameras shortly after inbound P2P/AV traffic
- Anomalously large or malformed AV packets observed on UDP port 32761 in network captures
Remediation
| Action | Detail |
|---|---|
| Primary fix | Apply the TUTK SDK vendor patch validating packet size fields in tutk_packet_alloc, once available for the affected firmware; update camera firmware to the fixed release |
| Interim mitigation | Restrict network access to the camera’s TUTK P2P/AV port to trusted hosts; segment IoT camera traffic from the general network |
References
Notes
Mirrored from https://github.com/vital-information-resource-under-siege/CVE-2026-38698-and-CVE-2026-38699 on 2026-07-05. Only the CVE-2026-38698 PoC sources (C source, headers, Makefile) were mirrored; the accompanying PDF report, .gdb_history session file, and pre-compiled binaries were omitted for size/hygiene reasons — see the source repository for the full research artifact and CVE-2026-38699 (OOB read) materials.