Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Adversaries may abuse extended attributes (xattrs) on macOS and Linux to hide their malicious data in order to evade detection.
.claude/skills/cyberstrikeus-t1564-014-extended-attributes/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-13 | ✗→✓ | ▲ Improved | -15% | 0% |
| case-14 | ✗→✓ | ▲ Improved | -34% | 0% |
| case-20 | ✗→✓ | ▲ Improved | -34% | 0% |
| case-04 | ✓→✓ | = Same ✓ | 90% | 0% |
| case-05 | ✓→✓ | = Same ✓ | 18% | 0% |
> Sub-technique of: T1564
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.
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.
Platforms: Linux, macOS
> Note: No Atomic Red Team tests available for this technique. See Atomic Red Team GitHub for updates.
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.
| Finding | Severity | Impact | | ---------------------------------------- | -------- | --------------- | | Extended Attributes technique applicable | Low | Defense Evasion |
| CWE ID | Title | | ------- | ---------------------------- | | CWE-693 | Protection Mechanism Failure |
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 20,775 | 12,631 | -39% | 1 | 1 | 0% | 3,771 | 3,196 | -15% | 0 | 0 | — |
case-02 | fail→fail | 18,131 | 20,680 | +14% | 1 | 1 | 0% | 3,312 | 4,897 | +48% | 0 | 0 | — |
case-03 | fail→fail | 21,085 | 29,490 | +40% | 1 | 1 | 0% | 3,639 | 5,678 | +56% | 0 | 0 | — |
case-04 | pass→pass | 4,896 | 3,748 | -23% | 1 | 1 | 0% | 864 | 1,645 | +90% | 0 | 0 | — |
case-05 | pass→pass | 9,548 | 5,450 | -43% | 1 | 1 | 0% | 1,716 | 2,017 | +18% | 0 | 0 | — |
case-06 | pass→pass | 7,161 | 4,836 | -32% | 1 | 1 | 0% | 1,261 | 1,767 | +40% | 0 | 0 | — |
case-07 | pass→pass | 9,552 | 5,640 | -41% | 1 | 1 | 0% | 1,598 | 1,945 | +22% | 0 | 0 | — |
case-08 | pass→pass | 13,010 | 3,090 | -76% | 1 | 1 | 0% | 2,259 | 1,485 | -34% | 0 | 0 | — |
case-09 | pass→pass | 9,726 | 3,133 | -68% | 1 | 1 | 0% | 1,656 | 1,478 | -11% | 0 | 0 | — |
case-10 | pass→pass | 4,089 | 2,614 | -36% | 1 | 1 | 0% | 702 | 1,350 | +92% | 0 | 0 | — |
case-11 | pass→pass | 13,366 | 3,053 | -77% | 1 | 1 | 0% | 2,183 | 1,271 | -42% | 0 | 0 | — |
case-12 | pass→pass | 12,419 | 6,592 | -47% | 1 | 1 | 0% | 2,482 | 2,096 | -16% | 0 | 0 | — |
case-13 | fail→pass | 8,643 | 2,438 | -72% | 1 | 1 | 0% | 1,504 | 1,285 | -15% | 0 | 0 | — |
case-14 | fail→pass | 12,081 | 2,559 | -79% | 1 | 1 | 0% | 1,865 | 1,231 | -34% | 0 | 0 | — |
case-15 | pass→pass | 12,709 | 11,299 | -11% | 1 | 1 | 0% | 2,006 | 2,825 | +41% | 0 | 0 | — |
case-16 | pass→pass | 5,046 | 2,493 | -51% | 1 | 1 | 0% | 765 | 1,339 | +75% | 0 | 0 | — |
case-17 | pass→pass | 4,466 | 2,591 | -42% | 1 | 1 | 0% | 700 | 1,364 | +95% | 0 | 0 | — |
case-18 | pass→pass | 8,571 | 5,443 | -36% | 1 | 1 | 0% | 880 | 1,798 | +104% | 0 | 0 | — |
case-19 | pass→pass | 4,197 | 2,462 | -41% | 1 | 1 | 0% | 657 | 1,271 | +93% | 0 | 0 | — |
case-20 | fail→pass | 12,233 | 2,043 | -83% | 1 | 1 | 0% | 1,954 | 1,288 | -34% | 0 | 0 | — |
case-21 | pass→pass | 15,343 | 13,049 | -15% | 1 | 1 | 0% | 2,438 | 3,267 | +34% | 0 | 0 | — |
case-22 | pass→pass | 20,163 | 14,983 | -26% | 1 | 1 | 0% | 2,693 | 3,421 | +27% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +14 percentage points is the difference between those two pass rates over the 22 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.