Skip to content

test(security): add poc for dsop modifier-map oob read (CVE-2026-65832) - #2

Merged
nbolton merged 2 commits into
mainfrom
poc/mod-map-oob
Sep 16, 2026
Merged

nbolton merged 2 commits into
mainfrom
poc/mod-map-oob

Conversation

@nbolton

@nbolton nbolton commented Sep 8, 2026 •

Copy link
Copy Markdown
Member

PoC for CVE-2026-65832: a malicious server poisons m_modifierTranslationTable[Shift] via DSOP, then a shift keypress drives the out-of-bounds index in ServerProxy::translateKey.

Ported from deskflow/scripts#12, with @manop55555's TLS listener from deskflow/scripts#10 folded in and credited, since the original was plaintext-only and could not test a default install. Exits 1 on [FAIL] ... VULNERABLE, 0 on [PASS], 2 when inconclusive.

Ported from deskflow/scripts#12. Placeholder CVE identifiers replaced with
the assigned CVE-2026-65832, published 2026-07-03.
Deskflow ships with TLS on, so a plaintext-only PoC could only verify a
non-default configuration. Adds --cert/--key with --no-tls to opt out, ported
from the alternative PoC in deskflow/scripts#10.

Also guards the handshake and trigger sequence so a peer disconnecting early
exits 2 (inconclusive) instead of raising, which kept the exit-code contract
from holding.

Co-authored-by: manop55555 <109808848+manop55555@users.noreply.github.com>
@nbolton

nbolton commented Sep 16, 2026

Copy link
Copy Markdown
Member Author
CVE-2026-65832 -- dsop modifier-map out-of-bounds read
malicious server on 127.0.0.1:24800, poison index 0xfbffff04
transport: tls
point a deskflow client at this address
[*] waiting for client
client connected from 127.0.0.1:52956, handshake complete
sent poisoned dsop, mapped shift modifier to out-of-range index
sent left-shift key down to trigger the translation
[PASS] client survived -- index clamped, fix in place

@nbolton
nbolton merged commit de227df into main Sep 16, 2026
nbolton added a commit to symless/synergy-security that referenced this pull request Sep 16, 2026
Mirrors deskflow/security#2. A malicious or on-path server maps a modifier
to an out-of-range index in a dsop message, then sends a key down for it,
driving the client into an out-of-bounds read while translating.

Adapted from upstream only where the products differ: brand strings in the
docstring and the operator output, and the self-signed certificate subject.

Synergy is affected. The fix is patched upstream in 1.26.0.299 and our fork
point is 1.26.0.216, so this reproduces against current builds. Porting the
fix is tracked separately in S1-2167.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant