Back to skill

Security audit

Editorconfig Linter

Security checks for vulnerabilities and agentic risk

Overview

This is a normal EditorConfig linting tool, but its fix mode can rewrite many files and has unsafe file-handling issues that deserve review before install.

Install only if you are comfortable with a linter that can modify workspace files. Prefer validate/check/show for routine use; run fix only on a clean, version-controlled checkout, with narrow paths, after excluding sensitive or untracked files, and avoid running it on untrusted repositories that may contain symlinks.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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
Findings (3)

T09 · Insecure Skill Coding Practices

Error
Location
scripts/editorconfig-linter.py:349
Finding

Fix Mode Follows Symbolic Links and Can Overwrite Files Outside the Requested Directory

Content
View full analysis
list: """Discover checkable files in path.""" files = [] if os.path.isfile(path): return [path] for root, dirs, fnames in os.walk(path): # Filter excluded dirs dirs[:] = [d for d in dirs if d not in excludes and not d.startswith('.')] for fname in fnames: _, ext = os.path.splitext(fname) if ext.lower() in CHECKABLE_EXTENSIONS or fname in ('.editorconfig', 'Makefile', 'Dockerfile'): files.append(os.path.join(root, fname)) if len(files) >= max_files: return files return files ``` ```python if modified: encoding = 'utf-8' if eol == 'crlf': raw_out = content.encode(encoding).replace(b'\n', b'\r\n') else: raw_out = content.encode(encoding) if charset == 'utf-8-bom': raw_out = b'\xef\xbb\xbf' + raw_out with open(filepath, 'wb') as f: f.write(raw_out) ``` ```python for filepath in files: rel_path = os.path.relpath(filepath, os.path.dirname(ec_path)) props = match_file(rel_path, sections) if props: fixes = fix_file(filepath, props) ``` ### Technical Analysis File discovery accepts directory entries based on their displayed filename and extension without checking whether the entry is a symbolic link. The discovered path is subsequently opened using `open(filepath, 'wb')`, which follows symbolic links by default. The implementation neither resolves candidate paths and verifies that they remain beneath the requested scan root nor uses no-follow file-opening semantics. Consequently, a repository-controlled symbolic link can redirect a write operation to a file ...[truncated 1776 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/editorconfig-linter.py:399
Finding

CRLF Auto-Fix Can Corrupt Files by Producing CRCRLF Line Endings

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/editorconfig-linter.py:409
Finding

UTF-8 BOM Auto-Fix Can Add Duplicate Byte Order Marks

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (12)

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The declared description says the skill validates syntax and checks compliance, but the documented behavior also includes a fix mode that rewrites files and a show mode that reveals effective properties for a chosen file. This mismatch can mislead users or higher-level policy systems into approving what appears to be a read-only linting skill when it actually has write capabilities and additional data exposure behavior.

Content

No source excerpt is available for this finding.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
python3 scripts/editorconfig-linter.py validate .editorconfig

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
python3 scripts/editorconfig-linter.py validate .editorconfig

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
python3 scripts/editorconfig-linter.py validate .editorconfig

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
python3 scripts/editorconfig-linter.py validate .editorconfig

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
python3 scripts/editorconfig-linter.py validate .editorconfig

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · scripts/editorconfig-linter.py (reported line 372)May include surrounding context.

python
'.vue', '.svelte', '.astro',
    '.tf', '.hcl',
    '.dockerfile', '.editorconfig', '.gitignore', '.gitattributes',
    '.env', '.env.example',
}

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
93% confidence
Finding

The skill advertises commands that read repository files and inspect source trees, but it does not declare any explicit tool scope such as permissions or allowed-tools. That creates an authorization ambiguity where an agent may grant broader file-read access than users expect, increasing the chance of unintended workspace data exposure during linting or config discovery.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The script's stated purpose is validation and compliance checking, but it also includes a full auto-fix path that rewrites user files in place. This creates a trust-boundary mismatch: users or orchestrators expecting read-only linting may invoke a skill that performs modifications, potentially altering large parts of a repository without explicit acknowledgement.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

Auto-fix mode writes changes directly to files without confirmation, backup, or warning, and it can process many files discovered recursively. This is dangerous because a mistaken invocation, overly broad path, or incorrect EditorConfig matching can silently modify project files and cause data loss or repository corruption.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The fix command performs in-place rewrites of discovered files even though the tool is presented primarily as a validator/linter. In an agent setting, that mismatch can lead to unintended repository changes, especially when run over broad paths with automatic file discovery.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
94% confidence
Finding

The documentation presents an automatic fix command that modifies files, but it does not clearly warn that running it will rewrite source contents. In agent-driven workflows, this can lead to unintended changes, corruption of formatting-sensitive files, or broad edits across a tree when a user expected only analysis.

Content

No source excerpt is available for this finding.