Files
Mace-AIO-Discord-Bot---With…/PROJEKT_ANALYSE.md

20 KiB

Security Assessment Report

Field Value
Report ID ZYROX-SEC-2026-001
Target Axiom CV2 AIO Discord Bot with Dashboard
Repository Axiom-CV2-AIO-With-Dashboard-main
Assessment Date 2026-07-21
Report Version 1.0
Classification Internal — Distribution Restricted
Assessment Type Static source-code review, configuration analysis, threat modeling
Assessor Independent security review (automated + manual verification)

Document Control

Version Date Author Changes
1.0 2026-07-21 Security Review Initial assessment

Scope: Full repository including bot/ (Python/discord.py), bot/api/ (FastAPI), and dashboard/ (Next.js). Out of scope: runtime penetration testing, infrastructure review, third-party Lavalink/OpenAI endpoints.

Methodology:

  1. Recursive static analysis of source tree (~200+ Python/TypeScript files)
  2. Configuration default and .env.example review
  3. Identification of trust boundaries (Discord ↔ Bot ↔ API ↔ Dashboard ↔ Internet)
  4. Mapping findings to CWE where applicable
  5. Severity assignment per internal scale (Critical → Informational)

Limitations: This assessment reflects the codebase state at review time. No dynamic exploitation was performed against a live deployment. Residual risk may exist in unreviewed dependencies.


1. Executive Summary

A security review of the Axiom CV2 AIO Discord bot (originally published by HexaHost) was conducted to determine whether the repository contains malicious code and to identify exploitable misconfigurations.

1.1 Malware Classification

Indicator Result
Known malware signatures (trojan, RAT, cryptominer, token stealer) Not observed
Obfuscated or packed payloads Not observed
Committed binary artifacts (.exe, .dll, .sh) None
Covert C2 / unknown outbound endpoints Not observed
Intentional third-party control primitives Confirmed (see Findings)

Verdict: The codebase does not exhibit characteristics of traditional malware. However, default configuration and hardcoded identifiers create effective pre-positioned access for third parties if an operator deploys without modification. This pattern is classified as latent supply-chain / configuration backdoor risk, not as a self-propagating trojan.

1.2 Risk Overview

Severity Count Representative Issues
Critical 3 Hardcoded owner fallback, Jishaku RCE, command telemetry webhook
High 3 Hardcoded log channels, exposed API surface, client-side API key
Medium 3 eval() usage, runtime package/binary fetch, deceptive commands
Low 1 Developer branding / optional telemetry hooks
Total 10

Operational impact if deployed with defaults: A third-party Discord account retains bot owner privileges; command metadata and guild join events may be exfiltrated to external Discord channels/webhooks; owner-level Jishaku access enables host-level code execution.


2. System Overview & Attack Surface

2.1 Architecture

                    ┌─────────────────────────────────────┐
                    │           Trust Boundary            │
  Discord Users ───►│  discord.py Gateway (bot/Axiom.py)  │
                    │         │              │            │
                    │         ▼              ▼            │
                    │    SQLite (bot/db/)  FastAPI :8000  │
                    │                           │         │
  Web Users ───────►│  Next.js Dashboard :3000 ◄┘         │
                    │         │                           │
                    │         ▼ (optional)                  │
                    │  Cloudflare Tunnel → Internet       │
                    └─────────────────────────────────────┘

2.2 Trust Boundaries

Boundary Authentication Authorization Gap (pre-remediation)
Discord → Bot Discord token, owner ID list Owner list defaulted to third party
Bot → External webhooks/channels None (hardcoded destinations) Unauthenticated telemetry sink
Dashboard → Bot API Bearer DASHBOARD_API_KEY No Discord permission binding
Browser → Dashboard API OAuth session (partial) API key embedded in client bundle
Internet → FastAPI API key only when tunnel enabled Binds 0.0.0.0 by default

2.3 Expanded Attack Surface

Beyond a typical Discord bot, this project includes:

Component Path Notes
Web dashboard dashboard/ OAuth, guild configuration UI
REST API bot/api/ Full guild config CRUD
Cloudflare tunnel bot/utils/tunnel.py Optional public exposure
Lavalink integration bot/cogs/commands/music.py External dependency
AI modules bot/cogs/commands/ai.py External API calls
Embedded games/utilities bot/games/, various cogs Expanded code surface

These components are in scope for the product design but increase exposure relative to a minimal bot.


3. Detailed Findings

Findings are indexed as ZYROX-2026-NNN. Severity uses: Critical, High, Medium, Low, Informational.


ZYROX-2026-001 — Hardcoded Owner ID Fallback

Attribute Value
Severity Critical
CWE CWE-1188 — Insecure Default Initialization of Resource
CVSS 3.1 (est.) 9.1 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)
Status at review Open → Remediated in SECURITY_FIXES.md (#1)

Affected component: bot/utils/config.py

Description: When OWNER_IDS is absent from environment configuration, the bot falls back to a hardcoded Discord snowflake belonging to the original maintainer.

OWNER_IDS: list[int] = _parse_ids("OWNER_IDS", [870179991462236170])

Impact: Unconfigured deployments grant full bot owner privileges to UID 870179991462236170, including process restart (reload), cross-guild moderation, global blacklist, invite generation, and access to Jishaku (Finding 002).

Evidence: bot/utils/config.py; additional third-party IDs present in bot/.env.example.

Owner-capable commands (non-exhaustive): reload, leaveguild, makeinvite, GB, global kick, global timeout, blacklist user/guild.

Remediation:

  • Remove hardcoded fallback; fail closed or warn when OWNER_IDS is empty
  • Replace example IDs with placeholders
  • Operator must set OWNER_IDS=<own_discord_id>

ZYROX-2026-002 — Jishaku Extension Enabled by Default

Attribute Value
Severity Critical
CWE CWE-78 / CWE-94
CVSS 3.1 (est.) 9.8 (AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H)
Status at review Open → Remediated (#2)

Affected component: bot/Axiom.py (~L345)

await client.load_extension("jishaku")

Description: Jishaku provides an in-Discord Python REPL restricted to bot owners. Any principal in OWNER_IDS can execute arbitrary Python on the host process.

Impact: Full host compromise under owner account compromise or misconfigured OWNER_IDS (chained with Finding 001).

Remediation: Load Jishaku only when JISHAKU_ENABLED=true; default false. Never enable in production.


ZYROX-2026-003 — Command Telemetry via Discord Webhook

Attribute Value
Severity Critical
CWE CWE-359 — Exposure of Private Personal Information
CVSS 3.1 (est.) 7.5 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N)
Status at review Open → Remediated (#3)

Affected component: bot/Axiom.pyon_command_completion

Description: Non-owner command invocations are POSTed to CMD_WEBHOOK_URL with command text, user ID, guild name/ID, and channel ID. Owner commands are explicitly excluded from logging.

Impact: Webhook controller receives cross-guild activity intelligence. Privacy violation; potential GDPR relevance depending on jurisdiction.

Remediation: Disable by default; validate URL before enabling; use operator-controlled webhook only.


ZYROX-2026-004 — Hardcoded Discord Channel IDs for Telemetry

Attribute Value
Severity High
CWE CWE-798 — Use of Hard-coded Credentials (analogous)
Status at review Open → Remediated (#4)

Affected components:

File Channel ID Function
bot/Axiom.py 1396794297386532978 Guild join notifications
bot/Axiom.py 1419729255977189467 Server count display
bot/Axiom.py 1419729283861184632 Member count display
bot/cogs/events/on_guild.py 1396794297386532978 Join/leave detail logs
bot/cogs/commands/np.py 1396794297386532978 No-prefix command audit

Impact: Guild metadata (name, owner, member count, invite links) transmitted to channels controlled by the original developer.

Remediation: Externalize to LOG_CHANNEL_ID, SERVER_COUNT_CHANNEL_ID, USER_COUNT_CHANNEL_ID; no logging when unset.


ZYROX-2026-005 — Over-Exposed FastAPI with Optional Public Tunnel

Attribute Value
Severity High
CWE CWE-284 — Improper Access Control
Status at review Open → Partially remediated (#5, #10)

Affected components: bot/api/server.py, bot/utils/tunnel.py, bot/Axiom.py

Description: API listens on 0.0.0.0:8000 by default. Cloudflare tunnel can expose localhost to the public internet. Authentication is a single shared bearer token without per-guild Discord authorization (pre-fix).

Sensitive endpoints (sample):

  • PATCH /api/v1/guilds/{id}/automod
  • PATCH /api/v1/guilds/{id}/antinuke
  • PATCH /api/v1/guilds/{id}/verification
  • PATCH /api/v1/admin/config

Impact: API key compromise → full configuration manipulation across all guilds.

Remediation: Default API_ENABLED=false, API_HOST=127.0.0.1, TUNNEL_ENABLED=false; bind Discord OAuth token + guild admin checks (Fix #10).


ZYROX-2026-006 — API Key Embedded in Client Bundle

Attribute Value
Severity High
CWE CWE-522 — Insufficiently Protected Credentials
Status at review Open → Remediated (#6)

Affected component: dashboard/lib/api.ts

const API_KEY = process.env.NEXT_PUBLIC_DASHBOARD_API_KEY;

Description: Next.js inlines NEXT_PUBLIC_* variables into client JavaScript. Any dashboard visitor can extract the bearer token.

Impact: Unauthenticated API access if combined with reachable bot API (Finding 005).

Remediation: Server-side proxy route; DASHBOARD_API_KEY server-only; remove NEXT_PUBLIC_DASHBOARD_API_KEY.


ZYROX-2026-007 — Unsafe Dynamic Code Evaluation (eval)

Attribute Value
Severity Medium
CWE CWE-95 — Improper Neutralization of Directives in Eval
Status at review Open → Remediated (#7)

Affected components:

File Line(s) Context
bot/cogs/commands/calc.py 92 User-supplied expression
bot/cogs/commands/autorole.py 235, 268, 306, 339 DB-persisted list parsing

Impact: Local RCE if an attacker can write SQLite records or abuse calculator input validation gaps.

Remediation: AST-limited math evaluator; JSON/ast.literal_eval for structured data.


ZYROX-2026-008 — Runtime Dependency Installation & Binary Fetch

Attribute Value
Severity Medium
CWE CWE-829 — Inclusion of Functionality from Untrusted Control Sphere
Status at review Open → Remediated (#8)

Affected components: bot/utils/tunnel.py, bot/utils/paginators.py

Description: Application invokes pip install via os.system and downloads cloudflared from GitHub at runtime.

Impact: Supply-chain compromise if upstream artifact is tampered; violates principle of immutable deployments.

Remediation: Declare dependencies in requirements.txt; opt-in binary download via TUNNEL_ALLOW_BINARY_DOWNLOAD=true.


ZYROX-2026-009 — Deceptive User-Facing Commands

Attribute Value
Severity Medium (Social Engineering)
CWE CWE-451 — User Interface (UI) Misrepresentation of Critical Information
Status at review Open → Remediated (#9)

Affected component: bot/cogs/commands/general.py

Command Behavior Actual harm
hack @user Fabricated credentials None
token @user Random 59-char string None
wizz Simulated destruction UI None

Impact: No technical exploitation; reputational and social-engineering risk.

Remediation: Remove or clearly label as parody commands.


ZYROX-2026-010 — Developer Branding & Dormant Telemetry Hooks

Attribute Value
Severity Low / Informational
Status at review Acknowledged — no code change required

Description: >100 files contain legacy branding headers (discord.gg/hexahost). Commented autoblacklist cog references external support channel. Help footers link to developer Discord.

Impact: No direct exploitation path; increases fingerprinting and social-trust surface.


4. Finding Summary Matrix

ID Title Severity Exploitability Data Impact Remediation Priority
ZYROX-2026-001 Hardcoded owner fallback Critical Trivial (default deploy) Full bot control P0
ZYROX-2026-002 Jishaku RCE Critical Requires owner access Host compromise P0
ZYROX-2026-003 Command webhook telemetry Critical Passive (default URL) User/guild metadata P0
ZYROX-2026-004 Hardcoded log channels High Passive Guild intelligence P1
ZYROX-2026-005 Exposed FastAPI + tunnel High Requires key/network Config takeover P1
ZYROX-2026-006 Client-exposed API key High Trivial (view source) Config takeover P1
ZYROX-2026-007 eval() injection Medium Conditional Local RCE P2
ZYROX-2026-008 Runtime pip/binary fetch Medium Supply-chain Integrity P2
ZYROX-2026-009 Deceptive commands Medium Social None (technical) P2
ZYROX-2026-010 Branding / telemetry hooks Low N/A N/A P3

5. Pre-Deployment Checklist (Operator)

P0 — Before first production start

  • Set OWNER_IDS to operator-controlled Discord account(s)
  • Verify no third-party IDs in .env or .env.example
  • Confirm JISHAKU_ENABLED is unset or false
  • Leave CMD_WEBHOOK_URL empty unless operator-owned
  • Replace or unset all hardcoded log channel IDs

P1 — Before exposing dashboard/API

  • Generate cryptographically strong DASHBOARD_API_KEY (≥32 bytes entropy)
  • Set API_HOST=127.0.0.1; enable tunnel only if required
  • Confirm API key is not prefixed with NEXT_PUBLIC_
  • Validate Discord OAuth permission checks on guild routes

P2 — Hardening

  • Audit SQLite file permissions on bot/db/
  • Review eval() replacements in calculator/autorole modules
  • Pin dependencies; disable runtime installs
  • Remove or relabel parody moderation commands

Appendix A — Repository Structure

A.1 Root

Path Description
bot/ Python Discord bot, FastAPI, SQLite persistence
dashboard/ Next.js 14+ dashboard with NextAuth
PROJEKT_ANALYSE.md This report
SECURITY_FIXES.md Remediation advisory

A.2 Bot Core (bot/)

Component Role
Axiom.py Process entry: bot, API thread, optional tunnel
core/axiom.py AutoShardedBot subclass, prefix resolution
utils/config.py Centralized environment configuration
api/ FastAPI REST layer for dashboard
cogs/ Feature modules (~80+ extensions)
db/ Per-module SQLite databases

A.3 Bot API Routes (bot/api/)

Route group Capability
/api/v1/guilds/* Guild-scoped configuration CRUD
/api/v1/admin/* Global stats, maintenance mode
/api/v1/bot/* Bot status

Authentication (post-remediation): Bearer DASHBOARD_API_KEY + X-Discord-Access-Token with guild permission validation.

A.4 Dashboard (dashboard/)

OAuth via NextAuth → guild list intersection (bot present ∧ user has Manage Guild) → proxied API calls to bot backend.

Key paths: app/dashboard/guild/[guildId]/*, app/api/proxy/[...path]/route.ts, lib/api.ts.


Appendix B — Persistence Layer

Database Contents
prefix.db Per-guild command prefixes
automod.db Automod rule configuration
block.db Global user/guild denylist
leveling.db XP and rank data
tickets.db, welcome.db, antinuke.db, verification.db Module configs
admin_config.db Maintenance mode flag

All databases are local SQLite files under bot/db/. No encryption at rest observed.


Appendix C — Environment Variables

Bot (.env)

Variable Required Security note
TOKEN Yes Discord bot secret — never commit
OWNER_IDS Yes Must be operator-controlled
DASHBOARD_API_KEY If API enabled Shared secret; rotate on compromise
CMD_WEBHOOK_URL No Disable unless operator-owned
API_ENABLED / API_HOST / TUNNEL_ENABLED No Secure defaults: off / 127.0.0.1 / off
JISHAKU_ENABLED No Default: false

Dashboard (.env)

Variable Required Security note
DISCORD_CLIENT_SECRET Yes Server-side only
DASHBOARD_API_KEY Yes Server-side only — not NEXT_PUBLIC_*
NEXTAUTH_SECRET Yes Session integrity

Appendix D — Startup Sequence

python bot/Axiom.py
  ├─ load_dotenv()
  ├─ FastAPI thread (if API_ENABLED)
  ├─ Cloudflare tunnel (if TUNNEL_ENABLED)
  ├─ discord.py client.start(TOKEN)
  │    ├─ load cogs (~80+)
  │    ├─ load jishaku (if JISHAKU_ENABLED)
  │    └─ sync slash commands
  └─ on_ready → background tasks

npm run dev (dashboard/)
  ├─ Next.js :3000
  └─ /api/proxy/* → Bot FastAPI (server-side key)

6. Conclusion

Axiom CV2 AIO is a feature-rich Discord bot platform, not a self-propagating malware sample. The primary security concern is deployment-time trust delegation: unchanged defaults effectively assign operational control and observability to the original publisher.

Operators treating this as production software must treat initial configuration as a security-critical step, equivalent to key ceremony for any SaaS deployment.

Remediation details and verification results are documented in SECURITY_FIXES.md (Advisory ZYROX-SEC-2026-REM).


End of Report

For remediation status and patch verification, see SECURITY_FIXES.md.