Reolink Remote Backup

PassAudited by VirusTotal on May 11, 2026.

Overview

Type: OpenClaw Skill Name: reolink-remote-backup Version: 0.3.0 The skill bundle provides a legitimate and well-structured set of scripts for setting up a Reolink camera backup relay via a VPS. The scripts (setup_local_pull.sh, setup_vps_vsftpd.sh, and setup_vps_retention.sh) include robust input validation, use secure transport (FTPS and SSH/rsync), and follow security best practices such as principle of least privilege for the FTP user. No evidence of malicious intent, data exfiltration, or prompt injection was found.

Findings (0)

Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.

What this means

If a wrong or malicious path is supplied, the script could change ownership or permissions on important VPS directories and break or expose the system.

Why it was flagged

A root-run script accepts an optional FTP root path and recursively changes ownership and permissions without validating that the path is safe or under /srv/reolink.

Skill content
FTP_ROOT="${2:-/srv/reolink}" ... chown -R "$FTP_USER:$FTP_USER" "$FTP_ROOT" ... chmod 755 "$FTP_ROOT"
Recommendation

Use the default path only unless the script is changed to validate the real path, reject system directories such as /, /etc, /usr, and /var, and require explicit confirmation before recursive changes.

ConcernHigh Confidence
ASI05: Unexpected Code Execution
What this means

A malformed retention value could install an unintended root cron job or cause unsafe deletion behavior.

Why it was flagged

The retention value is inserted directly into a cron command with no numeric validation, so shell metacharacters or cron separators in the argument could become a persistent root-scheduled command.

Skill content
DAYS="${1:-30}" ... echo "30 3 * * * find /srv/reolink/incoming -type f -mtime +${DAYS} -delete" ) | crontab -
Recommendation

Validate DAYS as a bounded integer before writing crontab entries, inspect `crontab -l` after installation, and run the script only with a simple numeric value such as `30`.

What this means

Exposed SSH keys, FTP passwords, or VPS admin access could let someone access or alter backup footage and server configuration.

Why it was flagged

The setup requires VPS admin access and later uses SSH credentials for the local pull, which is expected for this backup architecture but gives the skill high-impact account authority.

Skill content
- VPS host/IP and SSH access method ... Run `scripts/setup_vps_vsftpd.sh` on VPS as root.
Recommendation

Use a dedicated VPS, a dedicated SSH key, a restricted non-root backup user, no sudo for the ingest user, and rotate any credential pasted into chat or logs.

NoteHigh Confidence
ASI10: Rogue Agents
What this means

The machine will keep connecting to the VPS and moving files on the configured schedule until the timer is disabled.

Why it was flagged

The local pull is intentionally installed as a persistent systemd user timer that continues running after setup and catches up after downtime.

Skill content
Persistent=true ... systemctl --user enable --now reolink-pull.timer
Recommendation

Install only on the intended machine and document how to stop it, such as `systemctl --user disable --now reolink-pull.timer`, and remove the retention cron job if the setup is retired.

What this means

Users may weaken SSH key restrictions while believing the account is more confined than it is, increasing damage if that key or password is compromised.

Why it was flagged

The troubleshooting guidance tells users to remove a forced-command SSH restriction and reassures them that the user is home-dir-only, which is not a complete SSH confinement guarantee in the shown setup.

Skill content
Do **not** use a forced rsync command for this setup. ... sed -i 's|command="rsync[^\"]*",||' /srv/reolink/.ssh/authorized_keys ... The `reolinkftp` user is already restricted (no sudo, home-dir only)
Recommendation

Do not remove forced-command restrictions blindly; replace them with a tested rsync-compatible restriction model, disable SSH password login where possible, and document the actual limits of the reolinkftp account.