Hide Artifacts: Extended Attributes

Adversaries may abuse extended attributes (xattrs) on macOS and Linux to hide their malicious data in order to evade detection. Extended attributes are key-value pairs of file and directory metadata used by both macOS and Linux. They are not visible through standard tools like Finder, ls, or cat and require utilities such as xattr (macOS) or getfattr (Linux) for inspection. Operating systems and applications use xattrs for tagging, integrity checks, and access control. On Linux, xattrs are organized into namespaces such as user. (user permissions), trusted. (root permissions), security., and system., each with specific permissions. On macOS, xattrs are flat strings without namespace prefixes, commonly prefixed with com.apple.* (e.g., com.apple.quarantine, com.apple.metadata:_kMDItemUserTags) and used by system features like Gatekeeper and Spotlight.[1]

An adversary may leverage xattrs by embedding a second-stage payload into the extended attribute of a legitimate file. On macOS, a payload can be embedded into a custom attribute using the xattr command. A separate loader can retrieve the attribute with xattr -p, decode the content, and execute it using a scripting interpreter. On Linux, an adversary may use setfattr to write a payload into the user. namespace of a legitimate file. A loader script can later extract the payload with getfattr --only-values, decode it, and execute it using bash or another interpreter. In both cases, because the primary file content remains unchanged, security tools and integrity checks that do not inspect extended attributes will observe the original file hash, allowing the malicious payload to evade detection.[2]

ID: T1564.014
Sub-technique of:  T1564
Tactic: Defense Evasion
Platforms: Linux, macOS
Contributors: RoseSecurity; Rouven Bissinger (SySS GmbH); Sharmine Low, Group-IB
Version: 1.0
Created: 27 March 2025
Last Modified: 15 April 2025

Mitigations

ID Mitigation Description
M1040 Behavior Prevention on Endpoint

During artifact review, packaging, or deployment stages, scan extended attributes alongside file contents to detect hidden payloads, obfuscated data, or suspicious attribute keys that may indicate malicious behavior.

Detection

ID Data Source Data Component Detects
DS0017 Command Command Execution

Monitor for execution of xattr or getfattr used to read extended attributes, immediately followed by interpreters or loaders (e.g., bash, python, perl, sh, base64) that appear to consume the output. In some cases, setfattr is used to modify the extended attributes.

DS0022 File File Metadata

Monitor for the presence of custom extended attributes not whitelisted based on developer workflows.

DS0009 Process Process Creation

Detect execution of interpreters or loaders such as bash, sh, osascript, or python that are spawned shortly after a process reading extended attributes (e.g., xattr, getfattr) within the same parent process or session.

References