Back to skill

Security audit

xlsx

Security checks for vulnerabilities and agentic risk

Overview

The skill is mostly a legitimate spreadsheet helper, but its recalculation script persistently installs or overwrites a LibreOffice macro in the user's profile without enough scoping or opt-in.

Review before installing. Use this only if you are comfortable with a spreadsheet skill running LibreOffice locally and modifying your LibreOffice macro profile. Prefer running it in a disposable user profile or sandbox, and keep backups of important spreadsheets before allowing structural edits or recalculation.

Vulnerability Patterns
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Behavioral ASTexec() Call, eval() Call, Dynamic Import
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (8)

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The skill description presents a broad, general-purpose spreadsheet capability, but the documented behavior includes installing a LibreOffice macro and modifying local user configuration for formula recalculation. That side effect is materially different from ordinary spreadsheet editing/analysis and can mislead users or downstream policy systems into permitting system modification they did not expect.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
89% confidence
Finding

The skill instructs use of file read/write operations and shell execution (python recalc.py ...) but does not declare any explicit tool scope or allowed-tools boundary. This creates unnecessary ambiguity around what capabilities the agent may exercise, increasing the risk of over-privileged execution or accidental use of broader filesystem/shell access than intended.

Content

No source excerpt is available for this finding.

Behavior Manipulation

Medium
Category
Prompt Injection
Confidence
70% confidence
Finding

Subtle instructions detected that may alter agent decision-making or introduce hidden biases.

Content

Scanner excerpt · SKILL.md (reported line 98)May include surrounding context.

CRITICAL: Use Formulas, Not Hardcoded Values

Always use Excel formulas instead of calculating values in Python and hardcoding them. This ensures the spreadsheet remains dynamic and updateable.

❌ WRONG - Hardcoding Calculated Values

python

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The examples demonstrate destructive workbook operations such as inserting rows, deleting columns, and overwriting cells without any warning, backup guidance, or confirmation requirement. In the context of existing spreadsheets, these actions can silently corrupt formulas, references, or business-critical templates if executed on the wrong file or without user intent confirmation.

Content

No source excerpt is available for this finding.

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
70% confidence
Finding

subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Content

Scanner excerpt · recalc.py (reported line 31)May include surrounding context.

python
return True
    
    if not os.path.exists(macro_dir):
        subprocess.run(['soffice', '--headless', '--terminate_after_init'], 
                      capture_output=True, timeout=10)
        os.makedirs(macro_dir, exist_ok=True)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The script silently installs or overwrites a LibreOffice application macro in the user's profile, creating persistent code in a trusted macro location without notice or consent. In a spreadsheet-processing skill that may be triggered on untrusted content, this is more dangerous because it alters the host application's execution environment and can affect future LibreOffice sessions or other documents beyond the immediate task.

Content

No source excerpt is available for this finding.

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
70% confidence
Finding

subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Content

Scanner excerpt · recalc.py (reported line 84)May include surrounding context.

python
if platform.system() == 'Darwin':
            # Check if gtimeout is available on macOS
            try:
                subprocess.run(['gtimeout', '--version'], capture_output=True, timeout=1, check=False)
                timeout_cmd = 'gtimeout'
            except (FileNotFoundError, subprocess.TimeoutExpired):
                pass

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
70% confidence
Finding

subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Content

Scanner excerpt · recalc.py (reported line 92)May include surrounding context.

python
if timeout_cmd:
            cmd = [timeout_cmd, str(timeout)] + cmd
    
    result = subprocess.run(cmd, capture_output=True, text=True)
    
    if result.returncode != 0 and result.returncode != 124:  # 124 is timeout exit code
        error_msg = result.stderr or 'Unknown error during recalculation'

Static analysis

No suspicious patterns detected.