docs: Add security threat model - #33
Open
turbobobbytraykov wants to merge 4 commits into
Open
Conversation
PureWeen
reviewed
Aug 13, 2026
| | A2 | The consuming app enforces a Content Security Policy appropriate to its render mode. | | ||
| | A3 | The consuming app prevents untrusted script execution. The component must avoid introducing script execution and avoid unnecessarily widening access available to other scripts running in the same origin. | | ||
| | A4 | Data bound to `Data` has already passed the app's own authorization filter. | | ||
| | A5 | `IgbGridLiteOptions.JavascriptPath` is a compile-time constant controlled by the app, never derived from user input or untrusted configuration. | |
There was a problem hiding this comment.
A5 describes JavascriptPath as app-controlled, but the current public API doesn't expose it: IgbGridLiteOptions and Options are internal, and [Parameter] is commented out. A Razor Options=... assignment is captured as an HTML attribute rather than configuring this path. Could A5 instead state that the path is currently internal/not consumer-settable, and note that validation would be needed if it's exposed later?
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Add security threat model
Adds two documents — the first threat model for this package, plus the template for the security review that follows it:
Documentation only; no code changes.
Why this is needed
This PR establishes a maintained record of the package's security boundaries, assumptions, threats, controls, and accepted risks. It also adds a repeatable review record so findings can be resolved or explicitly accepted before release.
The model applies STRIDE at the package's trust boundaries and uses ASP.NET Core Blazor security guidance, OWASP threat-modeling guidance, and the CNCF/OpenSSF self-assessment format as technical references.
How to read it
STRIDE is applied to two trust boundaries: server-to-client serialization (TB1) and client-to-server JS interop (TB2). Every threat has an ID, severity, and status. Severity is the residual severity after the stated assumptions. Most interop threats presuppose attacker-controlled script in the page; the component's responsibilities are to avoid introducing script execution and to avoid unnecessarily widening the impact of other scripts running in the same origin.
Things that could look like findings but are not are verified and recorded so maintainers do not have to re-derive them: the locked
igniteui-grid-lite0.9.0 default cell renderer uses escaped Lit interpolation; there is noMarkupString,AddMarkupContent, oreval; and all JS interop identifiers are hard-coded literals.What it found
TItemobject graph is sent to the browser, not just the properties represented by grid columns; consumers can unintentionally disclose sensitive propertiesDotNetObjectReferenceis stored in a globalwindow.blazor_igc_grid_lite.dotNetRefsmap, making the callback reference available to other scripts in the pageigniteui-grid-liteis bundled in the NuGet package, so consumers cannot independently update it when an upstream security fix is releasedcheckout/setup-dotnet/setup-nodepinned to mutable tags in a job holdingid-token: writecatch { }with no logging, making malformed callback data difficult to detect and diagnoseExisting controls are recorded as well: CodeQL default setup with the extended query suite, secret scanning with push protection, Dependabot security updates, Private Vulnerability Reporting, signing with verification gates, Azure OIDC, NuGet Trusted Publishing, and
npm ciagainst a committed lockfile.What we need from you to approve
Please check three things:
Leave the
<!-- TODO(maintainer) -->placeholders (commit SHA, owner, approver names) — they are filled in at sign-off, not at merge.Next steps (after merge)
JavascriptPath..NETobject reference (TM-IX-01), record callback failures (TM-IX-04), and SHA-pin the remaining actions (TM-BLD-01).SECURITY.mdto document supported versions and direct reporters to GitHub Private Vulnerability Reporting, which is already enabled for this repository.docs/security/review-<version>.md.References
Blazor and threat modeling
Supply chain / build integrity