Pinned by Arystus on 2026-08-06Locked

Security Scanner Warnings

Arystus · 5 days ago

Explanation of Security Scanner Warnings

Ritual Pyre separates its simulation code from its Unity visual code so that the core mod remains compatible with headless and server environments. This transparent implementation detail triggers several heuristic security warnings.

Loads an additional .NET assembly at runtime

The mod loads exactly one additional assembly:

RitualPyre.Unity.dll

This file is included visibly inside the distributed mod archive. It is not downloaded, generated, or loaded from an external location.

The filename is hard-coded, combined exclusively with the mod's own root directory, checked for existence, and then loaded:

https://github.com/max2605/RitualPyre/blob/9f7c86bbeb88710e73c04acc96f45ffb43dc49b2/src/RitualPyre/RitualPyreMod.cs#L83-L103

The package validator explicitly requires both RitualPyre.dll and RitualPyre.Unity.dll to be present and rejects unexpected package contents:

https://github.com/max2605/RitualPyre/blob/9f7c86bbeb88710e73c04acc96f45ffb43dc49b2/scripts/test.ps1#L62-L80

The split exists because the simulation assembly deliberately excludes Unity-dependent visual classes:

https://github.com/max2605/RitualPyre/blob/9f7c86bbeb88710e73c04acc96f45ffb43dc49b2/src/RitualPyre/RitualPyre.csproj#L23-L24

Those classes are compiled into the separate visual assembly:

https://github.com/max2605/RitualPyre/blob/9f7c86bbeb88710e73c04acc96f45ffb43dc49b2/src/RitualPyre.Unity/RitualPyre.Unity.csproj#L24-L56

Accesses the filesystem

The mod performs only two filesystem operations:

  • File.Exists
  • File.ReadAllBytes

Both operations target the hard-coded file RitualPyre.Unity.dll inside Manifest.RootDirectoryPath, which is the mod's own installation directory:

https://github.com/max2605/RitualPyre/blob/9f7c86bbeb88710e73c04acc96f45ffb43dc49b2/src/RitualPyre/RitualPyreMod.cs#L92-L102

The runtime mod code does not:

  • Write, create, modify, or delete files
  • Read arbitrary user-supplied paths
  • Access files outside the mod directory
  • Access the Windows Registry
  • Start external processes
  • Use native libraries
  • Perform network requests

The scanner warning is therefore caused by the broad detection of System.IO usage, even though the actual access is restricted to reading the mod's own shipped visual DLL.

Uses reflection by name

Reflection is used in exactly two places:

  1. Mafi.Unity.UnityMod is looked up in assemblies already loaded by the game. This determines whether the mod is running in a graphical client or a headless environment.
  2. RitualPyre.RitualPyreModelFactory is looked up inside the shipped RitualPyre.Unity.dll and registered with the game's dependency system.

Exact implementation:

https://github.com/max2605/RitualPyre/blob/9f7c86bbeb88710e73c04acc96f45ffb43dc49b2/src/RitualPyre/RitualPyreMod.cs#L51-L72

The mod does not use reflective method invocation, hidden API calls, GetMethod, GetField, or Invoke. Reflection is only used to locate these two known types and preserve headless compatibility.

Summary

The warnings describe techniques that can be dangerous in unknown software, but their use in Ritual Pyre is narrow and auditable:

  • One hard-coded, visibly shipped DLL is loaded.
  • Only the mod's own directory is read.
  • No files are written or deleted.
  • No code is downloaded.
  • Reflection resolves only two explicitly named types.
  • The complete source code is publicly available.
25
Showing 1–1 of 1