Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- I have completed a thorough analysis. All verification sweeps confirm the codebase is clean. Here is my report.
- ---
- # 🔒 Security Analysis Report: `freech`
- **Project:** Decentralized imageboard on Hyphanet (Freenet), written in Go (~3,500 lines across 19 source files)
- **Origin:** `gitlab.com/gracebrown633-group/freech`
- **Date:** 2026-07-07
- ---
- ## 1. RED FLAGS — Malicious Element Scan
- **None found.** Specific checks performed:
- | Check | Result |
- |---|---|
- | **Outbound network calls** | ✅ The only `net.Dial` is to the FCP port (`127.0.0.1:9481` by default) — the user's *own* Freenet node. **Zero** `http://`/`https://` calls to external services in source. No DNS lookups, no telemetry, no phone-home/beacon. |
- | **Web server binding** | ✅ Listens on `127.0.0.1:8891` (localhost only). All other `127.0.0.1` refs are links to the local Freenet fproxy. Nothing binds to `0.0.0.0`. |
- | **Remote code execution / `exec`** | ✅ Only 2 `exec.Command` calls: `openBrowser` (opens the localhost URL) and `ffmpeg` (thumbnailing). No arbitrary command execution. |
- | **Data exfiltration / harvesting** | ✅ None. Data flows only user → local DB → local Freenet node → Freenet P2P network (the app's explicit purpose). |
- | **Backdoors / hidden listeners** | ✅ None. All goroutines are legitimate app functions (indexer, harvester, post-insert, announce, captcha, resume). |
- | **Logic/time bombs** | ✅ None. The "update check" (`updatecheck.go`) only fetches `software-version.txt` *over Freenet* once/24h, compares an integer, and sets a banner flag. It **never auto-downloads or executes** anything. |
- | **Obfuscation** | ✅ None. All `base64`/`hex` usage is for normal data encoding (thumbnails, crypto keys, Freenet keys). No `reflect`, no string-built code. |
- | **Dependency integrity** | ✅ `go.sum` populated with hashes; deps are reputable (`golang.org/x/crypto`, `modernc.org/sqlite`, `dchest/captcha`). The Freenet Docker image downloads the official `hyphanet/fred` installer with a **pinned SHA256** checksum. |
- | **The patch** (`fred-usk-localrequestonly.patch`) | ✅ Modifies the Freenet node to make USK lookups respect `LocalRequestOnly` for offline dev/testing. It *restricts* network behavior — effectively a safety improvement, not a backdoor. |
- ---
- ## 2. MINOR RISKS & VULNERABILITIES
- These are non-malicious, and acceptable for a localhost tool:
- - **DDA file-read feature** (`web.go:738`): The submit form lets a user opt-in (checkbox) and type local file paths to upload to Freenet via FCP disk-upload. This reads arbitrary local files — but it requires explicit local-user interaction and is a designed feature for large-file uploads. Not a remote vulnerability given the localhost-only bind.
- - **Docker `fcp.bindTo 0.0.0.0`** (`entrypoint-freenet.sh`): The Freenet node binds FCP to all interfaces in Docker, but restricts `allowedHosts` to private ranges (`127.0.0.1,172.0.0.0/8,10.0.0.0/8`) — correct for inter-container networking. Not exposed externally if Docker networking is default.
- - **Mod private keys stored in SQLite** (`usk_priv` column): Unencrypted at rest, but this is the application's design — they are the user's own moderator keys. Standard for local-only identity tools.
- - **No HTTPS on local web UI**: Expected for a `127.0.0.1`-only service; same-machine trust model.
- ---
- ## 3. FINAL VERDICT
- ### ✅ **[SAFE TO RUN]**
- **Summary:** This is a clean, well-engineered Freenet imageboard client: it makes **no external network connections** (talking only to the user's local Freenet node), uses parameterized SQL queries with proper HTML escaping, employs sound cryptography (`crypto/rand`, `constant-time compare`, argon2id), and contains **no obfuscation, backdoors, telemetry, or unauthorized file/network activity**. The only considerations are minor and inherent to the app's intended design (local file-upload feature, local-only key storage), so it can be run as-is or via the provided Docker setup with confidence.
Add Comment
Please, Sign In to add comment