This is a follow-up to the original SlickStack security warning: SlickStack Security Warning.
On August 25, 2026, Jesse Nickles published a new response attempting to dismiss the SlickStack security concerns:
Unfortunately, his response does not fix the underlying problem.
In several places, it actually confirms the architecture I have been warning about.
The current SlickStack root crontab still contains this behavior:
47 */3 * * * /bin/bash -c 'sleep $((RANDOM % 180)) && { wget -q -4 -t 3 -T 10 -O /tmp/heal-01-cron-minutely https://slick.fyi/crons/01-cron-minutely.txt || wget -q -6 -t 3 -T 10 -O /tmp/heal-01-cron-minutely https://slick.fyi/crons/01-cron-minutely.txt; }; [ -s /tmp/heal-01-cron-minutely ] && grep -q "SS_EOF" /tmp/heal-01-cron-minutely && mv -f /tmp/heal-01-cron-minutely /var/www/crons/01-cron-minutely && chmod 0700 /var/www/crons/01-cron-minutely || rm -f /tmp/heal-01-cron-minutely'This is not merely "checking for updates."
Every three hours, SlickStack's root crontab contacts slick.fyi, downloads replacement shell scripts, checks whether they contain the string SS_EOF, and then forcefully replaces executable files that will subsequently run as root.
That distinction matters.
Jesse describes this system as:
"periodically restores missing or damaged SlickStack cron files"
But the actual root crontab does not appear to establish that the installed cron file is missing or damaged before replacing it.
There is no checksum comparison against the existing file.
There is no comparison against an approved Git commit.
There is no signed release verification.
There is no pinned version.
There is no cryptographic authenticity check.
Instead, every three hours, SlickStack downloads another copy and, if it contains SS_EOF, executes:
mv -f /tmp/heal-01-cron-minutely /var/www/crons/01-cron-minutely
chmod 0700 /var/www/crons/01-cron-minutelyThat means a perfectly functional local executable can still be replaced.
This is not merely:
"If something breaks, recover it."
It is a recurring remote replacement mechanism for code that executes as root.
The so-called validation is effectively:
grep -q "SS_EOF" downloaded-scriptThat does not verify that the file came from GitHub.
It does not verify a checksum.
It does not verify a cryptographic signature.
It does not verify a release.
It does not verify a commit hash.
It does not verify that the administrator previously approved the code.
A modified script containing:
#!/bin/bash
# arbitrary commands
## SS_EOFwould satisfy that check.
So the effective trust model looks like this:
remote endpoint
|
v
downloads shell script
|
v
contains "SS_EOF"?
|
v
YES
|
v
replace local executable
|
v
executed as rootFor a server-management project, this should concern anyone responsible for production infrastructure.
The root crontab explicitly retrieves files from:
https://slick.fyi/crons/...This matters because slick.fyi is controlled by the project rather than being a pinned immutable artifact source.
Jesse's own response explains that the purpose of slick.fyi is to provide an abstraction layer so the upstream destination can be changed without requiring every SlickStack server to be manually updated.
That is precisely the security concern.
An installed SlickStack server is not simply saying:
I trust this specific GitHub repository.It is effectively saying:
I trust slick.fyi to decide where future root-executed scripts come from.Even if:
slick.fyi -> GitHubtoday, the entire purpose of that layer is that the destination can be changed later.
That makes control of slick.fyi an extremely powerful supply-chain control point.
If the infrastructure controlling that endpoint, its DNS, redirect configuration, hosting account, or related credentials were compromised, modified scripts could potentially be distributed through an update path that already exists on installed machines.
And those scripts do not execute as a restricted web user.
They execute as root.
Root is the highest privilege available on a normal Linux server.
A shell script executing as root can potentially:
The point is not that SlickStack is currently performing all of those actions.
The point is that the update architecture delivers code into a context where those actions are technically possible.
That is why authentication of root-executed updates matters so much.
Jesse points to HTTPS and DNSSEC as security protections.
They do not address the core issue.
HTTPS answers:
"Did I securely connect to the server controlling slick.fyi?"
It does not answer:
"Is this the exact shell script from the release my administrator approved?"
A legitimate HTTPS endpoint can still return modified content.
DNSSEC protects DNS resolution.
It does not provide code signing.
Neither one proves that a downloaded shell script corresponds to a specific Git commit, release, checksum, or administrator-approved artifact.
For code that will execute as root, the artifact itself should be authenticated.
This is where the architecture becomes especially confusing.
Inside:
SlickStack contains a section literally labeled:
SS-Functions: Mirror Prefixes (FORKABLE)It then says:
## you should customize the Git mirror prefixes below if you decide to fork SlickStack ##
## after changing these the rest of the paths in ss-functions should work fine ##
## MODIFY THESE IF YOU FORK SLICKSTACK
GITHUB_PREFIX="https://raw.githubusercontent.com/littlebizzy/slickstack/master"
GITLAB_PREFIX="https://gitlab.com/littlebizzy/slickstack/-/raw/master"
SOURCEFORGE_PREFIX="https://sourceforge.net/p/slickstack/code/ci/master/tree"
BITBUCKET_PREFIX=""
GITEA_PREFIX=""At first glance, this appears to give administrators or fork maintainers control over where SlickStack retrieves its code.
Many downstream paths are then derived from those variables:
GITHUB_00_CRONTAB="${GITHUB_PREFIX}/crons/00-crontab.txt"
GITHUB_01_CRON_MINUTELY="${GITHUB_PREFIX}/crons/01-cron-minutely.txt"
GITHUB_02_CRON_OFTEN="${GITHUB_PREFIX}/crons/02-cron-often.txt"and:
GITHUB_SS_CHECK="${GITHUB_PREFIX}/bash/ss-check.txt"
GITHUB_SS_FUNCTIONS="${GITHUB_PREFIX}/bash/ss-functions.txt"
GITHUB_SS_INSTALL="${GITHUB_PREFIX}/bash/ss-install.txt"So an administrator could reasonably believe that changing:
GITHUB_PREFIX="https://raw.githubusercontent.com/MYCOMPANY/MYFORK/master"would make their server trust their own audited fork.
Unfortunately, that is not a reliable trust boundary.
This is one of the most concerning design problems I found.
09-cron-daily.txt checks /var/www/ss-functions before it sources that file.
It does:
VALIDATE_SS_FUNCTIONS=$(grep 'SS_EOF' /var/www/ss-functions)
OUTDATED_SS_FUNCTIONS=$(find "/var/www/ss-functions" -maxdepth 1 -type f -mmin +720)The important part is:
-mmin +720That means after 720 minutes, or 12 hours, ss-functions can be treated as outdated.
Then, instead of using your configured GITHUB_PREFIX, the recovery logic directly hardcodes:
https://raw.githubusercontent.com/littlebizzy/slickstack/master/bash/ss-functions.txtwith hardcoded LittleBizzy GitLab and SourceForge fallbacks.
It then performs:
mv -f /tmp/ss-functions /var/www/ss-functions
chown root:root /var/www/ss-functions
chmod 0700 /var/www/ss-functionsOnly after doing that does it execute:
source /var/www/ss-functionsSo the flow can effectively become:
your customized ss-functions
|
| contains:
|
| GITHUB_PREFIX=MYCOMPANY/MYFORK
|
v
12 hours pass
|
v
09-cron-daily runs
|
v
hardcoded littlebizzy/slickstack URL
|
v
downloads official ss-functions
|
v
mv -f over your ss-functions
|
v
your custom GITHUB_PREFIX disappears
|
v
LittleBizzy prefixes are restoredThis is a serious contradiction with the statement:
"after changing these the rest of the paths in ss-functions should work fine"
The very file containing the customization can itself be replaced through a path that ignores the customization.
It gets worse.
The root crontab explicitly says:
## THIS CRONTAB FILE DOES NOT RELY ON SS-CONFIG OR SS-FUNCTIONSThat means the supposedly "FORKABLE" mirror prefixes cannot affect this root recovery mechanism at all.
Instead, the root crontab directly hardcodes:
https://slick.fyi/crons/01-cron-minutely.txt
https://slick.fyi/crons/02-cron-often.txt
https://slick.fyi/crons/03-cron-regular.txt
https://slick.fyi/crons/04-cron-quarter-hourly.txt
...every three hours.
So even if you successfully change:
GITHUB_PREFIX="https://raw.githubusercontent.com/MYCOMPANY/MYFORK/master"the root-level recovery path still does this:
GITHUB_PREFIX = your fork
|
X
X ignored
X
|
root crontab
|
v
slick.fyi
|
v
replacement executable scripts
|
v
rootYour fork configuration has no control over that path.
The same issue appears in ss-install.
Before it can safely rely on the variables inside ss-functions, SlickStack includes recovery logic that directly retrieves:
https://raw.githubusercontent.com/littlebizzy/slickstack/master/bash/ss-functions.txtwith LittleBizzy GitLab and SourceForge fallbacks.
That means installation and recovery logic can restore the official ss-functions file independently of your configured fork settings.
This creates a circular trust problem:
ss-functions defines where SlickStack should download code
|
v
but recovery of ss-functions itself
|
v
does not trust those settings
|
v
it trusts hardcoded LittleBizzy locationsSo the supposed fork setting is not the ultimate authority.
The hardcoded bootstrap paths are.
This is not one forgotten line.
Hardcoded references to:
raw.githubusercontent.com/littlebizzy/slickstack/masterappear across many active SlickStack files, including cron scripts and update-related scripts.
Examples include:
crons/01-cron-minutely.txt
crons/02-cron-often.txt
crons/03-cron-regular.txt
crons/04-cron-quarter-hourly.txt
crons/05-cron-half-hourly.txt
crons/06-cron-hourly.txt
crons/07-cron-quarter-daily.txt
crons/08-cron-half-daily.txt
crons/09-cron-daily.txt
crons/10-cron-half-weekly.txt
crons/11-cron-weekly.txt
crons/12-cron-half-monthly.txt
crons/13-cron-monthly.txt
crons/14-cron-sometimes.txt
bash/ss-worker.txt
bash/ss-install.txtand other installation and recovery scripts.
This means there is no single administrator-controlled setting that appears to establish:
Only retrieve executable SlickStack code from my trusted repository.Some code paths use the configurable variables.
Others bypass them.
And some of the bypass paths are capable of replacing the very file that defines the configurable variables.
To be clear, parts of the project do honor the fork variables.
For example, ss-check uses variables such as:
${GITHUB_01_CRON_MINUTELY}
${GITLAB_01_CRON_MINUTELY}
${SOURCEFORGE_01_CRON_MINUTELY}So the fork feature is not completely fake.
The problem is that it is incomplete.
It does not establish a complete trust boundary.
The project effectively has multiple overlapping update systems:
+----------------------+
| GITHUB_PREFIX |
| "FORKABLE" |
+----------+-----------+
|
v
some update paths
root crontab --------------------------> slick.fyi
09-cron-daily ------------------------> hardcoded littlebizzy GitHub
hardcoded littlebizzy GitLab
hardcoded LittleBizzy SourceForge
ss-install ---------------------------> hardcoded littlebizzy upstreamsThat is not a clean or auditable update architecture.
For a project managing production Linux servers as root, this level of duplicated and overlapping trust logic is exactly what should be avoided.
One particularly notable section of Jesse's response discusses whether LittleBizzy could remotely "take over" a SlickStack server.
His own document describes the answer as:
"essentially yes"
He argues that this is merely the trust relationship created by automatic updates.
But that is exactly why the update architecture matters.
There is an enormous difference between:
signed release
|
v
pinned version
|
v
cryptographic verification
|
v
administrator-approved installationand:
project-controlled domain
|
v
mutable shell script
|
v
grep "SS_EOF"
|
v
overwrite executable
|
v
root executionCalling the latter "self-healing" does not remove the capability.
Other parts of SlickStack already use a much more transparent recovery approach.
For example, some recovery logic explicitly attempts:
recover from github
recover from gitlab
recover from sourceforgewith direct URLs.
That means there is no technical requirement for the root crontab to depend on slick.fyi.
Even direct GitHub URLs, however, would only partially solve the problem if they continue tracking a mutable master branch.
A secure update mechanism should authenticate a specific artifact.
A proper update mechanism for software capable of modifying root-executed code should look more like:
signed release
|
v
download artifact
|
v
verify signing key
|
v
verify SHA-256
|
v
verify expected version
|
v
installAdministrators should also have one authoritative configuration controlling the upstream:
SS_UPSTREAM_REPOSITORY="https://github.com/example/slickstack"
SS_UPDATE_CHANNEL="v2026.08"
SS_AUTO_UPDATE="false"Every update and recovery path should derive from that setting.
No hidden fallback should silently jump back to another repository.
No bootstrap routine should overwrite the configuration with a different upstream.
No root crontab should bypass it.
Mirrors could still exist for reliability.
But the mirrors should only transport an already authenticated artifact.
They should not determine what code the server trusts.
My warning is not based on the fact that SlickStack performs updates.
The problem is the trust architecture.
SlickStack maintains recurring mechanisms capable of replacing root-executed shell scripts using mutable remote sources.
Some of those sources are controlled through slick.fyi.
Some use hardcoded LittleBizzy repository URLs.
Some use configurable mirror variables.
And some recovery paths can overwrite the file containing those configurable mirror variables.
At the same time, the actual integrity check for certain root recovery paths is simply whether the downloaded file contains:
SS_EOFThat is not cryptographic authentication.
It does not disappear because the mechanism is called "self-healing."
It does not disappear because the source code is public.
It does not disappear because HTTPS is enabled.
It does not disappear because DNSSEC is enabled.
It does not disappear because slick.fyi currently redirects somewhere legitimate.
And it certainly is not solved by a "FORKABLE" configuration system when other privileged update paths bypass that system and can overwrite its configuration.
The fundamental question remains:
Why should a server-management project install a default mechanism that repeatedly accepts mutable shell scripts through project-controlled infrastructure and later executes those scripts as root, without cryptographically verifying that they correspond to a specific administrator-approved release?
That is the issue.
And after years of criticism, it remains present in the project.
Instead of publishing pages attacking the person reporting the problem, I would strongly encourage Jesse Nickles to replace this architecture with a normal, auditable release and update mechanism.
For anyone currently running SlickStack on an important server, I strongly recommend reviewing:

Legal notice. The information presented on this page is a public record of facts. It is being used as evidence in the ongoing criminal defamation case against Jesse Jacob Nickles in Thailand. Official criminal case reference: Bang Kaeo Police Station – Daily Report Entry No. 4, Book 41/2568, Report No. 56, dated 13 August 2568, Reference Case No. 443/2567. This documentation may also serve as supporting evidence for any other individuals or organizations pursuing their own harassment or defamation claims against Jesse Nickles, given the documented pattern of repeated conduct affecting multiple victims.