GA-SECWP-1.0
Security Whitepaper
Trust boundaries, data handling, supply chain integrity, vulnerability disclosure policy, and compliance posture.
- Document ID
- GA-SECWP-1.0
- Last reviewed
- 2026-04-24
- Next review
- 2026-07-24
Security Whitepaper
GlueArrow Box OS — Broadcast Operations Platform Document version: 1.0 · Applies to Box OS 1.6.0+
1. Executive Summary
GlueArrow Box OS is the on-premises broadcast operations engine deployed by radio and television stations to run live playout, automation, proof-of-play logging, and revenue-bearing ad delivery. Because the platform captures station audio, publishes live streams, and produces financial records (proof-of-play underlies advertiser billing and royalty distribution), its security posture is a procurement gate, not a feature.
This whitepaper explains the design principles, controls, and operational disciplines that protect the platform, the station's content, and the station's money. It is written for IT security reviewers, compliance officers, and enterprise procurement teams.
Summary of the security posture:
- Offline-first by design. The box is authoritative for its own station. Cloud is a mirror, not a dependency. Loss of internet never halts broadcast or proof-of-play logging.
- Signed, verified software supply chain. Every update is SHA-256 verified and applied atomically with automatic rollback on failure.
- Hardened operating system. Systemd confinement, non-root service account, read-only system partitions, and A/B update partitions mean no single update can brick a box in the field.
- Encrypted storage for sensitive payloads. AES-256-CTR at rest for encrypted audio archives; SQLite state files protected by OS-level file permissions.
- Minimized cloud footprint. The cloud receives detection metadata and operational events — not continuous raw audio.
- Explicit vulnerability disclosure policy. A public contact point, a 90-day coordinated disclosure window, and a documented patch SLA.
2. Trust Boundaries
┌──────────────────────────────────────────────────────────────┐
│ TRUST BOUNDARY 1 — Station Premises │
│ ┌────────────────────────────────────────────────────────┐ │
│ │ TRUST BOUNDARY 2 — GlueArrow Box │ │
│ │ ┌──────────────────────────────────────────────────┐ │ │
│ │ │ TRUST BOUNDARY 3 — Engine process (non-root) │ │ │
│ │ │ • api.py (Flask, systemd-confined) │ │ │
│ │ │ • RTMP streamer subprocess │ │ │
│ │ │ • Local SQLite state │ │ │
│ │ └──────────────────────────────────────────────────┘ │ │
│ └────────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────┘
│
│ Signed HTTPS (TLS 1.2+)
▼
┌──────────────────────────────────────────────────────────────┐
│ TRUST BOUNDARY 4 — GlueArrow Cloud (us-central1) │
│ • Cloud Run services, IAM-gated │
│ • Cloud SQL (Postgres), private IP │
│ • Cloud Storage, signed URLs only │
└──────────────────────────────────────────────────────────────┘
Each boundary is independent. Compromise of one tier does not automatically compromise the tier beneath it.
3. Data Classification and Handling
3.1 Data the platform processes
| Data class | Examples | Storage | Transit |
|---|---|---|---|
| Broadcast metadata | Show schedule, ad assignments, rotation rules | Local SQLite + cloud mirror | TLS 1.2+ |
| Proof-of-play records | Time-stamped detections of what played on air | Local SQLite (signed ledger) + cloud mirror | TLS 1.2+ |
| Detection metadata | Compact, non-reversible representations of what was heard on air | Local SQLite + cloud mirror | TLS 1.2+ |
| Account and billing data | Station owner name, email, phone, license key | Cloud only (Postgres) | TLS 1.2+ |
| Staff authentication tokens | Short-lived session cookies issued by accounts.gluearrow.com |
Browser session | TLS 1.2+ |
| Raw station audio | Live mic and line-in signal | Local only — never transmitted | N/A |
| Archived audio snippets | Optional retained clips for dispute resolution | Local only, AES-256-CTR encrypted | N/A |
3.2 What is never sent to the cloud
The platform is deliberately restrictive about what leaves the station:
- Continuous raw audio. The cloud receives detection metadata derived from the station's broadcast. It does not receive a rolling recording of the station.
- Personally identifying biometrics without explicit consent from the calibrated individual.
- Unencrypted audio archives. If audio retention is enabled for dispute resolution, the archive is AES-256-CTR encrypted at rest on the box.
- Customer phone call content (for stations that integrate phone-in lines — the signal is captured locally, not exfiltrated).
3.3 Data minimization
Cloud sync transmits only what is necessary for operational continuity and cross-station features:
- Schedule mirror — so producers can edit remotely
- Proof-of-play ledger — for advertiser billing and royalty calculation
- Station health beacon — for operational monitoring
- Ad campaign and media download requests — for ad delivery
Detection events contain no raw audio; they are compact, tamper-evident records.
3.4 Data residency
Primary cloud storage is located in Google Cloud us-central1 (Council Bluffs, Iowa, United States). Enterprise tier customers requiring EU, African, or Asian data residency may request region-specific deployment; this is handled contractually.
4. Identity and Access Management
4.1 Station operator authentication
Staff accessing the control panel authenticate through accounts.gluearrow.com. Supported methods:
- Email + one-time password (OTP) — default for all tiers
- Phone OTP via WhatsApp — default for all tiers
- SAML 2.0 single sign-on — enterprise tier, customer IdP (Okta, Azure AD, Google Workspace tested)
- Multi-factor authentication — required for administrator and owner roles
Session tokens are short-lived (24 hours typical), scoped to the station, and revocable instantly from the cloud admin console.
4.2 Role-based access control
The platform implements four roles, enforced at both the cloud API layer and in the control panel UI:
| Role | Capabilities |
|---|---|
| Owner | Full administrative control, billing, user management, license key rotation |
| Station manager | Schedule, ad approval, proof-of-play review, staff invitation |
| Operator | Day-to-day production — live switching, playout, workspace usage |
| Viewer | Read-only access for compliance officers, auditors, regulators |
Role boundaries are enforced at every endpoint. Admin-prefixed routes require both a valid session and an explicit admin claim; unauthorized access returns HTTP 403 and is logged.
4.3 Machine authentication
- Box → Cloud API: each box holds a unique machine credential bound to its license key. Credential rotation is supported without downtime.
- Cloud → Box: the cloud never initiates inbound connections to the box. All communication is box-initiated, outbound HTTPS.
4.4 API authentication
REST and WebSocket APIs require one of:
- Valid user session cookie (for browser-originated requests)
Authorization: Bearer <token>header with a box machine credential- Signed server-to-server JWT for partner integrations (enterprise tier)
Unauthenticated access is limited to /health and /metrics (when restricted to a monitoring subnet).
5. Device Security
5.1 Operating system hardening (appliance)
The GlueArrow Box Appliance ships on Korra OS, a custom Ubuntu 22.04 LTS derivative hardened for broadcast appliance use:
- A/B partition layout with RAUC atomic updates. Updates install to the inactive partition; a failed boot automatically falls back to the previous known-good partition.
- Read-only root filesystem via
overlayroot. System binaries cannot be tampered with at runtime. - Minimal package set. No SSH by default (enabled temporarily by physical long-press on the status LCD for 30 minutes only), no development toolchain, no user-serviceable shell.
- Dedicated non-root service account (
gluearrow) for the engine. The root account is used only for OTA updates and is disabled for interactive login.
5.2 Process isolation (all modes)
The engine runs under systemd with the following confinements (Linux):
NoNewPrivileges=true
ProtectSystem=strict
ProtectHome=true
ReadWritePaths=/var/lib/gluearrow-box-os /opt/gluearrow-box-os/static/hls
LimitNOFILE=65536
MemoryMax=2G
These mean the engine cannot escalate privileges, cannot modify system binaries, cannot read other users' home directories, and is bounded in resource consumption.
5.3 Runtime watchdog
systemd's WatchdogSec=30 requires the engine to beacon its health every 30 seconds. A hang results in automatic restart, preventing silent failure during live broadcast.
5.4 Physical security considerations
Deployments in uncontrolled physical environments (small community stations, shared studios) should consider:
- Locking the Box in a rack or cabinet
- Tamper-evident seals on the chassis
- Disabling USB boot in firmware
- Setting a BIOS/UEFI password
The GlueArrow Box Appliance ships with USB boot disabled and a factory-set firmware password. Customer workstations retrofitted with Box OS (Mode C) must have these controls applied by the station's IT team.
6. Software Supply Chain
6.1 Build provenance
- Source is versioned in a private GitHub repository with mandatory pull request review and CODEOWNERS enforcement.
- Continuous integration runs unit and integration tests, static analysis, and dependency vulnerability scanning on every build.
- Release artifacts are produced by the
cloudbuild.yamlpipeline running in Google Cloud Build with audit logging enabled.
6.2 Over-the-air update integrity
Every OTA update follows the same atomic pattern:
- Discover — the box queries
storage.googleapis.com/gluearrow-box-os-releases/latest.json. The manifest is signed at release time. - Download — the box fetches the new sidecar or full image over HTTPS.
- Verify — the box computes SHA-256 of the downloaded artifact and compares against the value in the manifest. Mismatch → reject and retain current version.
- Stage — the new artifact is staged on disk without replacing the running binary.
- Atomic swap — on next launch (Windows) or next reboot (appliance), the new version takes over.
- Rollback — if the new version fails to start (fails health check within 60 seconds), the system automatically reverts to the previous version.
A malicious payload intercepted between storage.googleapis.com and the box cannot be installed unless the attacker also controls the release manifest's signing key.
6.3 Third-party dependencies
The engine uses approximately 45 direct Python dependencies. Each build produces a Software Bill of Materials (SBOM) enumerating name, version, license, and known CVEs. The SBOM for the current release is available on request from security@gluearrow.com and is published alongside each release on the downloads page.
Critical dependencies (Flask, Flask-SocketIO, gevent, psycopg2, FFmpeg) are tracked against upstream security advisories. The patch SLA for critical vulnerabilities in these dependencies is 14 days from public disclosure.
7. Monitoring, Logging, and Audit
7.1 What is logged
| Event class | Location | Retention |
|---|---|---|
| Engine lifecycle (start, stop, crash, watchdog) | systemd journal (Linux) / Windows Event Log | Rotated per OS policy |
| Authentication events (logins, failed logins, role changes) | Local SQLite + cloud mirror | 365 days in cloud |
| Admin actions (schedule edit, ad approval, user invitation) | Local SQLite + cloud mirror | 7 years in cloud |
| Proof-of-play detections | Local SQLite (ledger) + cloud mirror | 7 years in cloud |
| API access logs | Local file + optional SIEM forwarding | Configurable |
| RTMP stream start/stop | Local SQLite + cloud mirror | 90 days |
7.2 Proof-of-play integrity
Proof-of-play is the platform's most sensitive record — it determines advertiser billing and royalty payouts. Each ledger entry captures:
- NTP-synchronized wall-clock timestamp
- The detected item's identifier
- The source of the detection (broadcast audio fingerprint, ad slot trigger, DJ software cue)
- Station identifier and sync state
The ledger is append-only and mirrored to the cloud on the next sync cycle. The cloud retains a durable record independent of the box; reconciliation between the box-local ledger and the cloud mirror surfaces any missing, duplicated, or post-dated entries for investigation.
Roadmap — cryptographic chaining (target: 2026 Q3): a tamper-evident hash chain that links each ledger entry to its predecessor, so any local modification invalidates the chain for every subsequent entry. This is a disclosed roadmap item, not a current capability. Customers requiring cryptographic audit trails today should enable SIEM forwarding (§7.4) for an independent log of record.
7.3 Prometheus metrics
The engine exposes a Prometheus-compatible /metrics endpoint. Customers integrating with their own monitoring can scrape the engine directly. Metric categories:
- Engine health: memory, CPU, thread count, watchdog state
- Broadcast state: current source, RTMP state, HLS segment production rate
- Sync state: cloud reachability, queued items, last successful sync
- Business metrics: ads played, detections recorded, streams delivered
7.4 SIEM integration
Linux deployments can forward the systemd journal to any SIEM that accepts syslog or structured JSON (Splunk, Elastic, Datadog, Sumo Logic, Chronicle). Sample forwarding configurations are available from support on request.
8. Secrets Management
- Secrets (database passwords, API tokens, license keys) are stored in the environment file (
.envon workstation deployments,/etc/gluearrow-box-os/environmenton Linux, encrypted by Korra OS on the appliance). - The environment file is owned by root, readable only by the
gluearrowservice account, and never committed to source control. - Cloud-side secrets (database passwords, third-party API tokens for the cloud services) live in Google Secret Manager with IAM-controlled access and audit logging.
- Secret rotation is supported without service restart for non-database secrets; database credential rotation requires a 30-second reconnection window.
9. Business Continuity
9.1 Offline operation
The platform's most important security and availability property is that it continues to operate when isolated. The box serves its LAN, continues RTMP delivery to configured destinations, logs every play to the local ledger, and caches all cloud-bound events for replay on reconnection.
Tested failure modes:
- Cloud unreachable — station broadcast and local control continue indefinitely; cloud ledger receives a catch-up push on reconnection.
- Station internet unreachable — identical to the above, plus RTMP destinations unavailable until internet returns.
- Box local power loss — on restart, the engine resumes from the last persisted schedule and replays pending cloud events.
- OTA update failure — automatic rollback to the previous known-good version within 60 seconds; no operator intervention needed.
9.2 Backup
- Local SQLite state files are snapshotted by the engine every 60 minutes. Snapshots are retained for 7 days locally.
- Enterprise tier customers receive nightly cloud-side backups of the ledger and configuration state, retained for 30 days.
- Full disaster recovery: a new box paired with the same license key recovers its configuration and ledger from the cloud mirror.
10. Vulnerability Disclosure and Incident Response
The full Vulnerability Disclosure Program (VDP) is published at https://gluearrow.com/security (document identifier GA-VDP-1.0). The summary below is consistent with that program; the canonical text governs in case of any discrepancy.
10.1 How to report a vulnerability
Email security@gluearrow.com with:
- A description of the issue
- Steps to reproduce
- Affected version
- Your contact information (PGP key available on request)
10.2 Our commitment
- We acknowledge all reports within 3 business days.
- We validate and triage within 10 business days.
- Critical vulnerabilities are patched in a coordinated release within 30 days of validation.
- High-severity vulnerabilities are patched within 60 days.
- Medium- and low-severity vulnerabilities are patched in the next regular release.
10.3 Coordinated disclosure
We support a 90-day coordinated disclosure window. Public disclosure follows the patch release. Researchers are credited in release notes unless anonymity is requested.
10.4 Safe harbor
Good-faith security research conducted in line with this policy will not result in legal action. Activities explicitly permitted:
- Testing against your own deployment
- Automated scanning at reasonable rates (no more than 100 requests/second per box)
- Responsible reverse engineering of binaries for research purposes
Activities explicitly prohibited:
- Testing against third-party production deployments without their permission
- Exfiltrating data beyond what is needed to demonstrate the issue
- Denial-of-service attacks against production infrastructure
11. Compliance Posture
11.1 Current state
- GDPR — the platform is designed for GDPR compliance. A Data Processing Agreement (DPA) is available for EU customers. Data minimization, right to erasure, and data portability are supported.
- CCPA / CPRA — similar posture; DPA available.
- PCI DSS — the platform does not process payment card data. Billing is handled by upstream payment processors out of scope for the platform.
- COPPA — the platform does not knowingly collect data from minors.
11.2 Roadmap
- SOC 2 Type I — target: 2026 Q4. Readiness assessment in progress.
- SOC 2 Type II — target: 2027 Q3, following 6+ months of Type I operation.
- ISO 27001 — target: 2027 Q4.
- Regional data residency (EU, Africa, Asia-Pacific) — available on request for enterprise tier in 2026 Q3.
Enterprise customers may request quarterly briefings on compliance progress.
12. Security Controls Summary Table
For procurement questionnaires, the following is a condensed control overview. Cross-referenced to industry frameworks where applicable.
| Control domain | Implementation | Framework reference |
|---|---|---|
| Access control | SSO, MFA, RBAC (4 roles), short-lived sessions | ISO 27001 A.9, SOC 2 CC6 |
| Authentication | OTP, SAML, MFA for privileged roles | NIST SP 800-63B AAL2 |
| Encryption at rest | AES-256-CTR for encrypted audio archives; OS-level file permissions for state DBs | SOC 2 CC6.7 |
| Encryption in transit | TLS 1.2 minimum, 1.3 preferred | SOC 2 CC6.7 |
| Logging and monitoring | Structured logs, Prometheus metrics, SIEM forwarding | SOC 2 CC7.2, ISO 27001 A.12.4 |
| Change management | Code review, CI/CD, signed releases | SOC 2 CC8 |
| Incident response | Published VDP, 90-day disclosure, documented SLA | SOC 2 CC7.4, NIST SP 800-61r2 |
| Software supply chain | Signed OTA, SHA-256 verification, SBOM per release | SLSA Level 2 (target: Level 3) |
| Business continuity | Offline-first architecture, A/B partitions, automatic rollback | SOC 2 A1 |
| Data minimization | No continuous raw audio to cloud; detection metadata only | GDPR Art. 5(1)(c) |
13. Requesting Further Information
- General security questions: security@gluearrow.com
- Procurement and enterprise contracts: enterprise@gluearrow.com
- Data Processing Agreement (DPA): available on request
- SBOM for the current release: available on request
- Penetration test summary: available under NDA for qualified enterprise prospects
GlueArrow Inc. — 1111B S Governors Ave # 50266, Dover, DE 19904, United States Document identifier: GA-SECWP-1.0 · Last reviewed: 2026-04-24 · Next scheduled review: 2026-07-24
Questions about this document? Email enterprise@gluearrow.com or for security-specific inquiries, security@gluearrow.com.