Skip to content

Security-Sensitive Project Designation — Trust and Identity Requirements #658

Description

@Reccetech

Background

Several Hiero repositories sit in the critical path of real-value transactions on the Hedera network and any network built on Hiero. A malicious or compromised Committer or Maintainer with merge rights on any of these repos could approve code that silently harms end users — for example by:

  • Hard-coding an account ID in a fee or transfer calculation
  • Injecting a dependency that exfiltrates private keys at signing time
  • Introducing a side channel in cryptographic code
  • Modifying a build or release workflow to backdoor a published artifact
  • Altering transaction routing or fee logic in node or relay software

Real money is at stake. This makes these repositories materially different from many open source projects and justifies a higher level of maintainer vetting than the standard contribution-based process alone provides.

Scope: What Qualifies as Security-Sensitive

A Hiero project should carry the Security-Sensitive designation if a malicious or negligent code change in that repo could directly cause financial loss to end users — specifically, projects that participate in the construction, signing, routing, or processing of value transfers on a Hiero-based network.

In scope — initial designated projects:

Repository Reason
hiero-sdk-js Constructs and signs transactions on behalf of end users
hiero-sdk-java Constructs and signs transactions on behalf of end users
hiero-sdk-go Constructs and signs transactions on behalf of end users
hiero-sdk-rust Constructs and signs transactions on behalf of end users
hiero-sdk-python Constructs and signs transactions on behalf of end users
hiero-sdk-cpp Constructs and signs transactions on behalf of end users
hiero-sdk-swift Constructs and signs transactions on behalf of end users
hiero-sdk-tck Cross-SDK conformance testing; validates transaction behaviour
hiero-consensus-node Processes and reaches consensus on all network transactions
hiero-mirror-node Canonical record of all network transactions; downstream trust anchor
hiero-json-rpc-relay Routes EVM-compatible transactions to the Hedera network

Out of scope — explicitly excluded:

  • DID / identity SDKs (hiero-did-sdk-js, hiero-did-sdk-python): These manage decentralized identifiers and verifiable credentials, not value transfers. They are governed through the Identity community.
  • dApps and applications built on top of Hedera: Application-layer projects that consume the SDKs but do not themselves sit in the transaction path.
  • Developer tooling, documentation, and website repos: hiero-docs, hiero-website, hiero-cli, and similar repos do not participate in transaction processing.
  • Standards and governance repos: hiero-improvement-proposals, sdk-collaboration-hub, governance, and similar repos.

The TSC is responsible for maintaining the designation list and may add or remove projects by vote as the ecosystem evolves.

Real-World Precedents

These are not theoretical risks. The broader software supply chain has seen exactly this kind of attack:

  • Event-stream (2018): A new maintainer was granted ownership of a widely-used npm package and injected code that stole Bitcoin wallet credentials from a specific downstream application. The attack was live for weeks before detection.
  • Rspack (December 2024): A stolen npm token was used to publish a version of @rspack/core (500k weekly downloads) containing an XMRig cryptocurrency miner delivered via a postinstall script.
  • npm "Great Heist" (September 2025): Attackers phished the maintainers of debug, chalk, and 17 other packages (collectively 2+ billion weekly downloads) by spoofing the npm support flow to capture live 2FA codes. Malicious versions were live for approximately 2 hours before being reverted.

In all cases, the attack succeeded because the projects had no mechanism to verify who their maintainers really were beyond a GitHub account.

What Other Security-Sensitive Projects Do

Bitcoin Core

All merge commits must be GPG-signed by a maintainer whose public key is stored in the repository. A verify-commits script checks every merge, creating a cryptographic chain of trust. New maintainers are selected by existing maintainers based on demonstrated competence over many months — their keys are added by the existing team, not self-declared.

CNCF Graduated Projects

CNCF graduation criteria require documented governance, a defined security disclosure process, and organizational diversity among maintainers. Well-established graduated projects — Kubernetes being the canonical example — enforce multiple independent reviewers per PR by convention, preventing any single person from unilaterally merging code.

Apache Software Foundation

Any software release requires at least three active PMC (+1) votes. A single compromised or malicious maintainer cannot publish a release alone. The ASF also enforces diversity of organizational affiliation, so no single company can dominate a project's governance.

Ethereum / Solidity

New contributors to the Solidity compiler team must be introduced by an existing team member who knows them professionally. All commits are GPG-signed and the release pipeline requires multiple maintainer sign-offs.

Additional Requirements for Security-Sensitive Projects

These requirements apply to all Committer and Maintainer nominations on designated projects, whether submitted through the normal process or the continuity process.

1. Identity Verification (beyond a GitHub account)

The nominee must be verifiably known to their sponsor. A GitHub account and contribution history alone are not sufficient — the sponsor must be able to confirm the nominee's real-world identity. Acceptable forms of verification:

  • Co-employment: The nominee currently works or has previously worked at the same LFDT member organization as the sponsor
  • Direct interaction: A video call or in-person meeting where the nominee's name, face, and professional affiliation were confirmed by at least one existing Maintainer or TSC member
  • Documented professional relationship: A prior professional context with a verified identity (e.g., conference co-presenter, prior open source collaboration under a known identity)

The sponsor attestation included in the nomination PR must explicitly state which form of verification applies, with enough detail for the TSC to evaluate it.

2. CODEOWNERS Enforcement

Every Security-Sensitive project must maintain a .github/CODEOWNERS file with "Require review from Code Owners" enabled in branch protection. The CODEOWNERS file must ensure that PR approval requires someone with genuine knowledge of that specific repo — a person who maintains the consensus node should not be able to satisfy the codeowner requirement for an SDK repo, and vice versa.

For the Hiero SDKs specifically, the per-SDK codeowner team structure defined in Issue 1 implements this requirement. For other Security-Sensitive projects (consensus node, mirror node, JSON-RPC relay), the existing per-project maintainer team already provides this separation, and a CODEOWNERS file referencing that team is sufficient.

This requirement must be in place before any new nomination takes effect.

3. GPG Key Registration

While GPG commit signing is already required for all Hiero contributors under the existing DCO policy, Committers and Maintainers on Security-Sensitive projects must additionally register their public key as part of their nomination PR by adding it to governance/trusted-keys/<github-handle>.asc. This creates a governance-controlled mapping of identity to key: a commit signed with an unregistered key from a known Committer or Maintainer should be treated as a signal of potential account compromise.

4. Structured Offboarding Within 7 Days

When a Committer or Maintainer departs a Security-Sensitive project, the following must be completed within 7 days:

  1. GitHub access revoked via a PR to config.yaml
  2. GPG key removed from governance/trusted-keys/
  3. Any Trusted Publisher registrations they hold on package registries (npm, Maven Central, PyPI, crates.io, etc.) explicitly reviewed and updated

This addresses a known gap: npm and PyPI Trusted Publisher systems do not automatically revoke registry access when a person is removed from a GitHub team. Without explicit offboarding, a departed maintainer may retain the ability to publish packages long after their access should have been removed.

Note: PR #648 is currently open and proposes publishing guidelines covering npm, Maven Central, PyPI, crates.io, and other registries under the @hiero-ledger org. That PR should be reviewed alongside this proposal, and the offboarding requirements here should be reflected in whatever publishing policy it establishes.

Offboarding for inactivity. The standard 6-month inactivity threshold defined in roles-and-groups.md applies. A Committer or Maintainer who has made no meaningful contribution in 6 months and does not respond to a contact attempt within 2 weeks must be offboarded via the same 7-day process above. Project maintainers are responsible for monitoring inactivity and initiating the offboarding PR. The TSC may also initiate offboarding if maintainers fail to act.

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions