Detect CVE-2026-65400 Screen Sharing exploitation via SSFileCopy helpers - #6675
Detect CVE-2026-65400 Screen Sharing exploitation via SSFileCopy helpers#6675shashank-elastic wants to merge 11 commits into
Conversation
|
⛔️ Test failed Results
|
|
⛔️ Test failed Results
|
There was a problem hiding this comment.
Pull request overview
Adds new macOS Elastic Defend detection rules to identify suspected exploitation activity related to CVE-2026-65400 (Screen Sharing), focusing on the Screen Sharing file-copy helper binaries and their related persistence behaviors.
Changes:
- Adds a file-based EQL rule to detect
SSFileCopyReceiverwriting to common macOS persistence locations. - Adds a process-based rule intended to detect anomalous
SSFileCopySenderexecution consistent with pre-auth exploitation attempts.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 4 comments.
| File | Description |
|---|---|
| rules/macos/persistence_ssfilecopyreceiver_file_writes.toml | New EQL file-write detection for SSFileCopyReceiver targeting persistence-relevant paths. |
| rules/macos/initial_access_ssfilecopysender_root_execution.toml | New process execution detection for SSFileCopySender intended to flag pre-auth exploitation indicators. |
Suppressed comments (1)
rules/macos/initial_access_ssfilecopysender_root_execution.toml:100
- This rule is set to
type = "query", but the query body is EQL (process where ...). Set the ruletypeto"eql"(and ensurelanguage = "eql") or rewrite the query in KQL.
type = "query"
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| "/Library/LaunchDaemons/*.plist", | ||
| "/Library/LaunchAgents/*.plist", | ||
| "/Users/*/Library/LaunchAgents/*.plist", | ||
| "/private/var/*/Library/LaunchAgents/*.plist" |
| file.name in ( | ||
| ".zshenv", ".zshrc", ".zprofile", ".zlogin", | ||
| ".bashrc", ".bash_profile", ".bash_login", ".profile", | ||
| "config.fish", "environment.plist" | ||
| ) or |
| id = "T1098.004" | ||
| name = "SSH Authorized Keys" | ||
| reference = "https://attack.mitre.org/techniques/T1098/004/" | ||
|
|
|
⛔️ Test failed Results
|
|
⛔️ Test failed Results
|
Co-authored-by: Eric Forte <119343520+eric-forte-elastic@users.noreply.github.com>
|
⛔️ Test failed Results
|
|
⛔️ Test failed Results
|
|
⛔️ Test failed Results
|
|
⛔️ Test failed Results
|
|
⛔️ Test failed Results
|
Co-authored-by: Samirbous <64742097+Samirbous@users.noreply.github.com>
|
⛔️ Test failed Results
|
|
⛔️ Test failed Results
|
| description = """ | ||
| Identifies the macOS Screen Sharing file copy helper SSFileCopyReceiver creating or modifying files in common | ||
| persistence locations such as LaunchDaemons/LaunchAgents, shell profiles, SSH authorized_keys, cron tabs, and hidden paths | ||
| under root's home directory. SSFileCopyReceiver performs file writes with root authority on behalf of a remote viewer. |
There was a problem hiding this comment.
Current logic does not filter by location to just the root's home directory. Should this be updated to match?
| OR file.path LIKE "/private/var/at/tabs/*" | ||
| OR file.path LIKE "/var/at/tabs/*" | ||
| OR file.path LIKE "/private/var/root/.*/*" | ||
| OR file.path LIKE "/var/root/.*/*" |
There was a problem hiding this comment.
Paths like .*/* only match a hidden directory plus a hidden file. Is this intentional? Current logic would miss something like /var/root/.payload.
| [rule.threat.tactic] | ||
| id = "TA0004" | ||
| name = "Privilege Escalation" | ||
| reference = "https://attack.mitre.org/tactics/TA0004/" No newline at end of file |
There was a problem hiding this comment.
Nit. Missing EOF newline.
| [rule.threat.tactic] | ||
| id = "TA0003" | ||
| name = "Persistence" | ||
| reference = "https://attack.mitre.org/tactics/TA0003/" No newline at end of file |
There was a problem hiding this comment.
Nit. Missing EOF newline.
| | WHERE host.os.type == "macos" | ||
| AND event.type == "start" | ||
| AND process.name == "SSFileCopySender" | ||
| AND KQL(""" process.args : "0" AND process.args : "80" """) |
There was a problem hiding this comment.
Just checking, based off reading through https://www.huntress.com/blog/macos-screen-sharing-rce-patched this can also happen on legacy VNC auth where root is expected and not malicious. Should we note that in the FP guidance?
Pull Request
Issue link(s): NA
Summary - What I changed
SSFileCopySenderandSSFileCopyReceiver, which perform privileged file operations during exploitation.How To Test
Process Events
File Events
Checklist
bug,enhancement,schema,maintenance,Rule: New,Rule: Deprecation,Rule: Tuning,Hunt: New, orHunt: Tuningso guidelines can be generatedmeta:rapid-mergelabel if planning to merge within 24 hoursContributor checklist