macadmins / sofa

SOFA | A MacAdmin's Simple Organized Feed for Apple Software Updates
https://sofa.macadmins.io
Apache License 2.0
162 stars 27 forks source link
apple cve ios macadmins macos

SOFA

Simple Organized Feed for Apple Software Updates

Sofa logo

Hello 👋,

SOFA supports MacAdmins by efficiently tracking and surfacing information on updates for macOS and iOS. It consists of a machine-readable feed and user-friendly web interface, providing continuously up-to-date information on XProtect data, OS updates, and the details bundled in those releases.

Updated automatically via GitHub Actions, the SOFA feed is a dynamic, centralized, and accessible source of truth. It can be self-hosted, giving you complete assurances as to the provenance of the data your fleet and coworkers can consume. The goal is to streamline the monitoring of Apple's software releases, thereby boosting security awareness and administrative efficiency.

Key Features

Machine-Readable Feed, RSS Feed, and Web UI

Deprecation notice

IMPORTANT NOTE: Update Your Use of SOFA Feed

The old feed addresses of https://sofa.macadmins.io/v1/macos_data_feed.json and https://sofa.macadmins.io/v1/ios_data_feed.json are deprecated and will be removed soon.

Use Cases

SOFA supports a wide array of practical applications, whether for MacAdmin tooling directly or discussing the state of security on Apple platforms with security personnel.

Web UI Overview

OS Version Card

XProtect Data Card (macOS Only)

Security Updates Listing

RSS Overview

The RSS feed is generated using feedgen by leveraging the same data generated for the data feed. It extracts SecurityReleases and injects them into individual entries, providing a streamlined and organized feed of the latest updates. The process involves:

  1. Loading Cache Data: RSS data is loaded from cached JSON files from the cache/ directory to ensure all previously fetched updates are considered.
  2. Writing to Cache: New or updated data is written back to the cache, sorted by ReleaseDate.
  3. Diffing Data: New feed results are compared against existing cached data to identify and handle new entries.
  4. Generate New Cache: Updating the current cache files with new entries if new entries exist.
  5. Creating RSS Entries: SecurityReleases from the data feed are used to create RSS entries, including handling specific data like XProtect configurations and payloads.
  6. Writing RSS Feed: The sorted and updated entries are written to an RSS feed file (v1/rss_feed.xml) using feedgen.

Getting Started

Access the Web UI

Visit the SOFA Web UI to start exploring SOFA's features

Use the Feed Data

Access the feed directly for integration with automated tools or scripts. For production use, we strongly recommend self-hosting the feed to enhance reliability and security. For guidance on how to utilize and implement the feed, explore examples in the Tools section. For details on self-hosting, please refer to the section below.

Self-Hosting SOFA

We believe that organizations needing tight control and ownership of the data they rely on should consider self-hosting SOFA. By cloning the repository into your own GitHub account and activating GitHub Actions to automatically build the feed at set intervals — or implementing a similar setup on platforms like GitLab — you ensure full control over how the data is determined, updated, and utilized. Additional documentation on self-hosting will be available to guide you through this process.