Skip to content

Security hardening controls for OpenSSF Scorecard#130

Merged
Scetrov merged 5 commits into
mainfrom
chore/security-20260720
Jul 20, 2026
Merged

Security hardening controls for OpenSSF Scorecard#130
Scetrov merged 5 commits into
mainfrom
chore/security-20260720

Conversation

@Scetrov

@Scetrov Scetrov commented Jul 20, 2026

Copy link
Copy Markdown
Owner

Summary

Implements security hardening controls to address OpenSSF Scorecard findings:

Dependency Reproducibility

  • Pin .NET runtime base image to digest (resolves Scorecard finding fix(): restore and build before publish #4)
  • Enable NuGet lock file generation for all solution projects
  • Enforce locked restore mode in CI and validation script

Parser Robustness (SharpFuzz)

  • Add dedicated fuzzing project with SharpFuzz 2.3.0
  • Implement targets for Sui GraphQL, Move JSON, ResIndex, Pickle (local unpickler), World API
  • Use production deserialization paths through real client code
  • Configure corpus replay in main workflow
  • Add bounded fuzzing workflow for scheduled execution
  • Isolate filesystem access for ResIndex target
  • Classify expected parse rejections in each harness

Repository Governance

  • Require strict up-to-date required status checks
  • Disable ineffective code-owner review requirement
  • Document solo-maintainer residual risk with exit criteria
  • Update security policy with direct private vulnerability reporting link
  • Publish maintainer-approved acknowledgement, update, and coordinated-disclosure targets

Verification

  • Add remediation baseline evidence document capturing current Scorecard and ruleset state
  • Capture approved base image digest and platform support
  • Record approved fuzzing limits and vulnerability-reporting targets

Testing

  • All fuzz targets pass deterministic corpus replay locally
  • Locked restore verified for all eight solution projects
  • Deliberate stale lock file fails pre-build as expected
  • Docker image digest locally verified for both target platforms

Notes

  • Tasks 2.4, 3.2, 4.9, 5.5, 6.x require CI execution or external admin actions and remain open for follow-up.

Scetrov added 5 commits July 20, 2026 13:11
- pin .NET runtime base image to digest in Dockerfile
- enable NuGet lock file generation for all solution projects
- enforce locked restore mode in CI and validation script
- add SharpFuzz harnesses for Sui, ResIndex, Pickle, World APIs
- configure corpus replay and bounded fuzz workflows
- restrict code owner review and require current status checks
- update security policy with private vulnerability reporting link
- add remediation baseline evidence
- Register project 13670 with OpenSSF Best Practices
- Add badge to README with link to public project profile
- Document CI validation results (221 tests, 4 fuzz targets, all checks passing)
- Note Best Practices registration at 94% status
- Mark remaining tasks as post-merge verification items
Archive completed change and extract requirements to main specs:
- dependency-reproducibility: Immutable container inputs and lock-enforced NuGet
- parser-robustness-assurance: Coverage-guided fuzzing and deterministic replay
- repository-security-governance: Solo-maintainer controls and coordination

All 34 tasks completed. CI validation passed (221 tests, 4 fuzz targets).
OpenSSF Scorecard remediation ready for post-merge verification.
@Scetrov
Scetrov merged commit 89abee3 into main Jul 20, 2026
12 checks passed
@Scetrov
Scetrov deleted the chore/security-20260720 branch July 20, 2026 16:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant