Skip to content
PublishedMalware Analysis · v1.0 · 6 min

Fake CVE Exploits Delivering SmartLoader

Fourteen archives across ten repositories: launcher structure, hashes, detection results and limitations.

Cristian Chiriac

Published:
2 November 2026
Version:
1.0
Last observed:
30 October 2026
Dataset frozen:
1 November 2026
Collection cut-off:
31 October 2026, 17:59 UTC
Tracked items rechecked:
1 November 2026, 18:23 UTC
Time zone
All dates UTC.
Contents

Repositories presented as CVE proofs of concept distribute archives with launcher-and-interpreter layouts instead of exploits.

The research in 30 seconds

What I found
Repositories presented as CVE proofs of concept distribute archives with launcher-and-interpreter layouts instead of exploits.
What this adds
The research records hashes, identical archive-entry layouts with different archive hashes, and detection results for the examined set.
Verified scope
Ten repositories, 14 archives; 12 detected by VirusTotal and two without a record on 29 October.
What remains unknown
Archive contents were listed in memory. The scripts were not run or read; five archives have explicit SmartLoader labels.

The numbers, with their boundaries

Current count

10

Repository proof set

30 Oct 2026 · UTC

Counts:
All ten still carried an archive at a pinned commit.

Earlier snapshot or subset

12 / 14

Archives with detections

29 Oct 2026 · UTC

Counts:
12 detected by 13–50 engines; five explicitly labelled SmartLoader. The two others were unknown.
Technical detail:Long tables, code and the evidence register are folded; nothing is left out.

Security people download proof-of-concept exploits to test their own systems. Ten GitHub repositories named after real 2024–2026 vulnerabilities offer exactly that. What they deliver is 14 zip archives with no exploit inside, only a tiny launcher script, a renamed interpreter and an obfuscated script file.

  • 12 of the 14 archives are detected by 13 to 50 antivirus engines on VirusTotal, five of them explicitly as SmartLoader. The other two were unknown to VirusTotal on 29 October 2026.
  • All 10 repositories were still public on 29 October, and all 10 still carried an archive at a pinned commit on 30 October.
  • Five of the archives were first seen by VirusTotal in a single week, 6–13 October 2026.

I did not extract or run any archive. Each was read into memory inside an isolated virtual machine only to compute its SHA-256 and list the file names in it.

Where this stands (1 November 2026)

#

The proven set was closed on 1 November 2026 with what had been found up to 31 October 2026, 17:59 UTC; repositories found after that are tracked separately and are not in these figures. The full proof pass at pinned commits ran on 30–31 October. On 1 November 2026, 18:23 UTC a read-only GitHub API recheck covered the 162 repositories, 73 accounts and 12 issues that are tracked one by one (operator repositories, Shai-Hulud accounts, phishing issues), not the whole set.

  • Frozen: 10 repositories under 10 accounts.
  • State: all public on 1 November, no new commits.

Key findings

#

Scope and method

#
Expand technical detail · complete record
Step What was done Scope Date (UTC) Coverage limit
1. Name search Repositories named "CVE-2024", "CVE-2025", "CVE-2026", in three-day creation slices 9,432 repositories, 4,626 CVE IDs (Jan 2025 – Oct 2026) to 29 Oct 2026 Repositories without a CVE in the name are missed
2. Light pass File tree and release assets of repositories with a risky profile 809 repositories 29 Oct 2026 Profile heuristics
3. Archive pass SHA-256 and zip file list, in memory in an isolated VM 51 archives in 45 repositories 29 Oct 2026 No extraction, no execution
4. Reputation VirusTotal hash lookups, no uploads All archive hashes 29 Oct 2026 Vendor labels disagree
5. State Public, archived, disabled 10 repositories 29 Oct 2026, 07:38 Single check

At a glance

#
Count Value What it counts
CVE-named repositories searched 9,432 Name search, Jan 2025 – Oct 2026
Malicious archives 14 Loader layout, in the repositories below
Repositories 10 Six with one archive, four with two
Detected on VirusTotal 12 13–50 engines
Unknown to VirusTotal 2 Suspected by layout
Still public on 29 Oct 2026 10 of 10

This is a floor: only 45 of the 9,432 repositories had their archives examined.

What the lure looks like

#
Full data table · 9 rows
Feature Observed in
Name cites a real or plausible CVE (Netlogon RCE, BitLocker bypass, 7-Zip CVE-2025-0411, CheckMK privilege escalation, MongoDB CVE-2025-14847, Linux "Copy Fail") 10 of 10
Generated, emoji-heavy README (9–21 emoji) 9 of 10
README tells the reader to download and run the tool 9 of 10
README links straight to the archive file 5 of 10
Archive in a random-word folder or one named images, assets, screenshots or keys 10 of 10
Version-like archive name (3.9.zip, 2.7.zip, CV_1.6.zip) most
Any exploit source code 0 of 10
Owner with 1–2 public repositories 8 of 10
Owner account created in 2025–2026 5 of 10
From a search for an exploit to a loader
  1. 01Search for a public exploitA repository named after the CVE ranks in GitHub search
  2. 02Download the "PoC"T1608.001README call to action; zip hidden in a random-word folder
  3. 03Run the launcherT1204.002A 22–360 byte .cmd or .bat starts a renamed interpreter
  4. 04Interpreter runs the scriptT1036.005The large .txt file is the obfuscated script (as described for SmartLoader; not read here)
  5. 05Final payloadReported elsewhere as Lumma or StealC; one label here says stealc; not observed

What is inside the archives

#

Read from the file lists only:

Layout Archives Contents
LuaJIT runner 7 A launcher script (Launcher.cmd, LaunchTool.cmd, Application.cmd; 22–360 bytes), lua51.dll, a renamed LuaJIT executable (lua.exe, luajit.exe, vm_s390x.exe, util64.exe, selector.exe) and a 180–360 KB .txt file
Small launcher + executable 5 Application.bat or similar, one ~760 KB executable (cli.exe, utils.exe, resolver.exe) and a 184–296 KB .txt file
Java-named runner 2 LaunchApp.cmd, java.exe and a 584 KB .txt file

By public descriptions of SmartLoader, the .txt file is the obfuscated script the interpreter runs [1, 3]. I did not read it. VirusTotal's own sandbox tags most of the detected archives with debugger detection and long sleeps.

Twins. Two archives are each 487,683 bytes with identical entries (Application.bat 24 B, cli.exe 760,320 B, skey.txt 184,136 B). Two others are each 584,435 bytes with identical entries. Both pairs have different hashes.

Reuse. VirusTotal also records one archive as game-unnamed-v-1.3-beta.4.zip and another as App-OC-Streamlit-v2.0.zip. The CVE theme is one costume among several.

Detection status

#
Full data table · 14 rows
# SHA-256 Layout Lure (CVE) VirusTotal (29 Oct 2026) First seen by VirusTotal
1 d2a999ab6b9213b0f259ea8a8bfb286b70be8cb9162b3b391081a48658732f49 launcher + exe CVE-2026-41089 37, smartloader 13 Oct 2026
2 828c9dcca32f5397ca21d868fef0010c0be198588bf9e9ae12e7a33582d11e37 launcher + exe CVE-2026-45585 17, smartloader/stealc 13 Oct 2026
3 3846ed3e0c6b84dce464f579c5f6d9fa3b2760db444873d5085fd6f778206c40 LuaJIT CVE-2024-0670 16, runner 6 Feb 2026
4 45a4085cfb047969e220345ac337a1d54f28a8bf060f4bdb8d9e1a7ec9a65bd3 LuaJIT CVE-2024-0670 47, alevaul/runner 29 Mar 2026
5 31b0cc276576c59d707b331c728b6748e37d61647cb94edfe12826a3dfb9cf0a LuaJIT CVE-2025-0411 36, fakegit/runner 17 Oct 2025
6 f2c53c93555a2218da4ef27378abd2add47c8d2fac220197e7f05caae0047900 LuaJIT CVE-2026-31431 40, smartloader/malgent 6 Oct 2026
7 6a271032a6c7c669d81d8e8ffcdfb2f4cfb8fa6d1f8f1678f4d74f7f2863a075 LuaJIT CVE-2026-2991 not in VirusTotal —
8 245079f2529db7d3f8364b874ef58e982e6cff41b790ff86e6232dad996f2c4b launcher + exe CVE-2026-42978 35, smartloader 13 Oct 2026
9 16f1deb8ee1ab5cc161d1de8609ed0871bfe34e98f36e0faf692b16a0ec75fdc LuaJIT CVE-2025-68921 21, stealer/runner 12 Oct 2026
10 11604cdba937cc652f93ad8bc7a0eb8e626b8de0ff7bfa039933a273fc729355 Java-named CVE-2025-68921 48, lazy/runner 21 May 2026
11 f60ab4b8a4d11cbb0fd9ae1572a5be16d598327c1229df6ea15750f1482b253e Java-named CVE-2025-14847 50, lazy/runner 21 May 2026
12 e2990e4386c51f576069e75876ffc4156cca7dc9ab1cc889e224577dcb06e7cd LuaJIT CVE-2025-14847 13, malgent 11 Feb 2026
13 b5a13c02bd4b88123b1d0330ab1a53dfbe3edaa07d3a31e517ec1bfbe6d4f931 launcher + exe CVE-2026-45585 not in VirusTotal —
14 febbcad6ea7227091bcefaf3a3868c72fa4de1a575196730079be719c5623a36 launcher + exe CVE-2026-20841 48, lazy/convagent not recorded

Calling all 14 "SmartLoader" is an inference for the nine without that label: they share the layout described for it. The two unknown archives match detected siblings exactly. Number 13 has the same 760,320-byte cli.exe as numbers 1 and 8. Number 7 has the same 488,960-byte lua51.dll and 292,864-byte executable as number 4.

Also seen, not counted

#
Item Why it is not counted
Three PyArmor-protected "exploits" with a Dork.txt (one hash in two repositories) 0 detections
A password-protected archive with exploit.exe, an empty file whose name is the password, and a batch file 0 detections; layout matches Kaspersky's Webrat description [6], not confirmed
A "crypter" with a client executable Unknown to VirusTotal
One account with nine "CVE" repositories and no code Never opened

ATT&CK mapping

#
Expand technical detail · complete record
MITRE ATT&CK v20 (content v20.0), checked on attack.mitre.org on 29 October 2026.
TechniqueNameTacticEvidence
T1608.001 Upload MalwareResource DevelopmentFourteen loader archives hosted in public GitHub repositories (observed)
T1036.005 Match Legitimate Resource Name or LocationStealthRepositories named after real CVEs; interpreters renamed lua.exe, java.exe, cli.exe (observed)
T1204.002 Malicious FileExecutionREADME asks the user to download and run the archive (observed)
T1497.001 System ChecksStealthVirusTotal sandbox tags (debugger detection) on most detected archives; not this research's own analysis

Evidence register

#
Expand technical detail · complete record
E-SL-HASHArchive hashes and file lists

SHA-256, size and zip central-directory entries of 51 archives in 45 repositories; 14 match the loader layout. Read in memory, never extracted.

Source: GitHub contents API inside an isolated VM · Collected 29 October 2026

E-SL-VTVirusTotal hash lookups

Detection counts, labels, sandbox tags, first-seen dates and submission names for each archive hash; no uploads.

Source: VirusTotal API · Collected 29 October 2026

Confidence and alternative explanations

#
Inference Confidence Alternative explanation Why it is less likely
The two unknown archives are malicious High Benign tools with the same layout Byte-identical components shared with detected siblings
The family is SmartLoader Moderate Several loaders with similar layouts Five explicit labels; layout matches public descriptions
Same operator as FakeGit Low Shared tooling or a copycat Only one label and timing

Timeline

#
Research timeline
  1. Earliest VirusTotal sighting among these archives

    7-Zip CVE-2025-0411 lure

  2. CheckMK lure archive first seen

  3. Two Java-named runner archives first seen

  4. FakeGit campaign reported

  5. First of five archives seen in one week

    6–13 October 2026

  6. FakeGit restart reported

  7. Last pushes on seven of the ten repositories begin

    Until 14 October 2026

  8. All ten repositories public

Trend Micro first documented SmartLoader through fake GitHub repositories in March 2025 [1].

Data notes and reconciliation

#
Expand technical detail · complete record
Item Values seen Explanation
Distinct CVE IDs 4,626 vs 4,715 Two regular expressions; the looser one accepts other separators
Layout groups Earlier notes placed some archives in the wrong group Re-classified strictly from the file lists: 7 / 5 / 2
VirusTotal result for archive 14 In notes, not in the raw lookup file Reported as recorded; first-seen date unknown

Defensive checks

#
  1. A proof of concept without source code is not a proof of concept. Real exploits ship Python, C or Go. A precompiled Windows tool in a random folder is hostile until proven otherwise.
  2. Block by layout, not by hash: a tiny .cmd or .bat next to lua51.dll and a renamed interpreter, or a lone executable next to a several-hundred-kilobyte .txt.
  3. "Not found on VirusTotal" is not a clean result. Two of these archives were unknown.
  4. Run every third-party exploit in a disposable virtual machine with no saved credentials.

Indicators

#
Expand technical detail · complete record
Loader archives (SHA-256)
0 selected · 14 of 14 shown
TypeValueContextLookupsCopy
sha256d2a999ab6b9213b0f259ea8a8bfb286b70be8cb9162b3b391081a48658732f49CVE-2026-41089 lure; VT 37
Confidence: Confirmed malicious
sha256828c9dcca32f5397ca21d868fef0010c0be198588bf9e9ae12e7a33582d11e37CVE-2026-45585 lure; VT 17
Confidence: Confirmed malicious
sha2563846ed3e0c6b84dce464f579c5f6d9fa3b2760db444873d5085fd6f778206c40CVE-2024-0670 lure; VT 16
Confidence: Confirmed malicious
sha25645a4085cfb047969e220345ac337a1d54f28a8bf060f4bdb8d9e1a7ec9a65bd3CVE-2024-0670 lure; VT 47
Confidence: Confirmed malicious
sha25631b0cc276576c59d707b331c728b6748e37d61647cb94edfe12826a3dfb9cf0aCVE-2025-0411 lure; VT 36
Confidence: Confirmed malicious
sha256f2c53c93555a2218da4ef27378abd2add47c8d2fac220197e7f05caae0047900CVE-2026-31431 lure; VT 40
Confidence: Confirmed malicious
sha2566a271032a6c7c669d81d8e8ffcdfb2f4cfb8fa6d1f8f1678f4d74f7f2863a075CVE-2026-2991 lure; not in VirusTotal
Confidence: High-confidence suspicious
sha256245079f2529db7d3f8364b874ef58e982e6cff41b790ff86e6232dad996f2c4bCVE-2026-42978 lure; VT 35
Confidence: Confirmed malicious
sha25616f1deb8ee1ab5cc161d1de8609ed0871bfe34e98f36e0faf692b16a0ec75fdcCVE-2025-68921 lure; VT 21
Confidence: Confirmed malicious
sha25611604cdba937cc652f93ad8bc7a0eb8e626b8de0ff7bfa039933a273fc729355CVE-2025-68921 lure; VT 48
Confidence: Confirmed malicious
sha256f60ab4b8a4d11cbb0fd9ae1572a5be16d598327c1229df6ea15750f1482b253eCVE-2025-14847 lure; VT 50
Confidence: Confirmed malicious
sha256e2990e4386c51f576069e75876ffc4156cca7dc9ab1cc889e224577dcb06e7cdCVE-2025-14847 lure; VT 13
Confidence: Confirmed malicious
sha256b5a13c02bd4b88123b1d0330ab1a53dfbe3edaa07d3a31e517ec1bfbe6d4f931CVE-2026-45585 lure; not in VirusTotal
Confidence: High-confidence suspicious
    sha256febbcad6ea7227091bcefaf3a3868c72fa4de1a575196730079be719c5623a36CVE-2026-20841 lure; VT 48
    Confidence: Confirmed malicious

    Archive file-name pattern: Launcher.cmd, LaunchTool.cmd, LaunchApp.cmd, Application.bat or Application.cmd, plus lua51.dll and a renamed LuaJIT; or cli.exe, utils.exe, resolver.exe or java.exe, plus one .txt of 180–600 KB.

    Operator-controlled GitHub accounts and repositories, checked 2 November 2026. Victims' accounts are not listed, nor accounts that may have been hijacked or whose role is not established. The confidence column gives the strength of each entry.
    0 selected · 8 of 8 shown
    TypeValueContextCopy
    otherGillarchnganasan2735GitHub user created 2026-05-01, live on 2 November 2026. Fake CVE proof-of-concept repository with a loader archive
    Confidence: Confirmed malicious
    repositoryGillarchnganasan2735/CVE-2026-41089-Netlogon-RCE-PoCArchive: VirusTotal 37 (trojan.smartloader/agentb)
    Confidence: Confirmed malicious
    otherRustMacrosRecoilGitHub organization created 2025-06-24, live on 2 November 2026. Fake CVE proof-of-concept repository with a loader archive
    Confidence: Confirmed malicious
    repositoryRustMacrosRecoil/7-Zip-CVE-2025-0411-POCArchive: VirusTotal 36 (trojan.fakegit/runner)
    Confidence: Confirmed malicious
    othercoactionbrittlemaidenhair51GitHub user created 2026-09-16, live on 2 November 2026. Fake CVE proof-of-concept repository with a loader archive
    Confidence: Confirmed malicious
    repositorycoactionbrittlemaidenhair51/CVE-2026-42978-PoC-ResearchArchive: VirusTotal 35 (trojan.smartloader/agentb)
    Confidence: Confirmed malicious
    other404goddGitHub user created 2025-07-21, live on 2 November 2026. Fake CVE proof-of-concept repository with a loader archive
    Confidence: Confirmed malicious
    repository404godd/CVE-2026-20841-PoCArchive: VirusTotal 48 (lazy/convagent)
    Confidence: Confirmed malicious

    What was already public

    #
    Expand technical detail · complete record

    Sources were read on or before 29 October 2026. Each one also links to its Internet Archive record, which lists the captures that exist, in case the original moves or changes.

    1. Trend Micro, AI-assisted fake GitHub repositories and SmartLoader (March 2025): https://www.trendmicro.com/en_us/research/25/c/ai-assisted-fake-github-repositories.html (Internet Archive lookup)
    2. Gridinsoft, fake GitHub repositories with Lumma and SmartLoader: https://blog.gridinsoft.com/fake-github-repositories-lumma-smartloader/ (Internet Archive lookup)
    3. Island, AgentBaiting / FakeGit: https://www.island.io/blog/agentbaiting-how-800-fake-ai-skills-and-mcp-servers-delivered-malware (Internet Archive lookup)
    4. The Hacker News, FakeGit (20 July 2026): https://thehackernews.com/2026/07/fakegit-campaign-uses-7600-github.html (Internet Archive lookup)
    5. BleepingComputer on Apiiro, FakeGit returns (8 October 2026): https://www.bleepingcomputer.com/news/security/fakegit-malware-campaign-returns-with-17-610-malicious-github-repos/ (Internet Archive lookup)
    6. Kaspersky, Webrat in fake exploit repositories (December 2025): https://securelist.com/webrat-distributed-via-github/118555/ (Internet Archive lookup)
    7. Trend Micro, infostealer posing as the LDAPNightmare PoC (January 2025): https://www.trendmicro.com/en_us/research/25/a/information-stealer-masquerades-as-ldapnightmare-poc-exploit.html (Internet Archive lookup)

    Not found in the reports I read, as of 29 October 2026:

    • SmartLoader-style archives using CVE and exploit lures;
    • these 14 hashes and the CVEs used as lures;
    • the random-folder placement and the re-packed twins.

    I did not check the IOC lists published by Island or Apiiro.

    Limitations

    #
    • No archive was extracted or run; behaviour comes from vendor labels and public reports.
    • Vendor labels disagree on the family name.
    • Only 45 of 9,432 repositories had their archives examined.
    • Live state is a single check at 07:38 UTC on 29 October.

    Investigation context

    #

    This article is part of the GitHub threat investigation. Counts are a snapshot, not evidence that the code ran on a victim's machine. The shared methodology and proof rules explain inclusion, exclusions and the independent re-check.

    Claims, evidence and limits

    ClaimAssessmentEvidenceLimit
    Twelve fake-exploit archives are detected malwareConfidence: Confirmed malicious
    E-SL-HASH, E-SL-VTNot stated in the finding
    Two archives are unknown to VirusTotalConfidence: High-confidence suspicious
    E-SL-HASHNot stated in the finding
    Same content, new hashConfidence: Confirmed malicious
    E-SL-HASHNot stated in the finding
    Link to the FakeGit operationConfidence: Unconfirmed
    E-SL-VTNot stated in the finding

    Terms used on this page

    pinned commit
    A specific commit, identified by its hash, at which a repository was read. Every counted repository was proven at the default-branch commit recorded in the proof pass, so a later change to the repository does not change what was proven.
    proof pass
    The 30–31 October 2026 re-read of every candidate at a pinned commit under fixed inclusion rules, followed by an independent re-read of a random sample of 555 repositories through a different API.

    All terms: glossary.

    Corrections & discussion

    Found an error, or have evidence that supports or contradicts a finding? Send a correction. Name the section and what you observed.

    ← All research