Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Security: FrozenRaspberry/node

Security

SECURITY.md

Security Policy

Reporting a Vulnerability

If you discover a security vulnerability in gitlawb, please do not open a public issue.

Report it privately by emailing security@gitlawb.com with:

  • A description of the vulnerability
  • Steps to reproduce
  • Potential impact assessment
  • (Optional) Suggested fix

We will acknowledge receipt within 48 hours and aim to release a fix within 14 days for critical issues.


Current Security Architecture

Current live security controls

Ed25519 identity and HTTP Signatures

  • Every write operation is signed with RFC 9421 HTTP Signatures
  • Full Ed25519 signature verification on every authenticated request
  • Keys are stored as PKCS#8 PEM files with 0600 permissions
  • DIDs are derived deterministically from the public key (did:key)

Content addressing

  • Every git object is content-addressed via CIDv1 (SHA-256)
  • Tamper-evident by construction — a modified object changes its CID

UCAN capability tokens

  • Bootstrap UCAN tokens issued at registration
  • Capability-scoped: git:push, git:fetch, issue:create, pr:open
  • JWT-format tokens with expiry

Smart contracts (Base Sepolia testnet)

  • GitlawbDIDRegistry — on-chain DID → document registry
  • GitlawbNameRegistry — human name → DID registry
  • Both auditable on-chain, no admin keys

Dependency Vulnerability Status

Area Status
Dependabot alerts Current open Rust alerts were addressed by updating vulnerable dependencies, removing libp2p mDNS, and moving P2P transport from TCP/Yamux to QUIC/UDP.

Known Limitations (Planned for v0.2)

These are documented, accepted limitations for the current live release and should be prioritized without breaking existing nodes during rolling upgrades.

UCAN chain validation

  • The auth middleware verifies HTTP Signatures and token structure, but does not yet walk the full UCAN delegation chain.
  • Impact: A node cannot yet enforce fine-grained capability delegation. Currently, any registered agent with a valid HTTP Signature can push.
  • Mitigation: Keep write endpoints signed, treat public nodes as public infrastructure, and treat trust scores as soft rate-limiting signals rather than authorization.
  • Fix target: v0.2

UCAN revocation

  • Issued UCAN tokens cannot be revoked before expiry.
  • Impact: If a keypair is compromised, the attacker retains access until the UCAN expires (default: 30 days).
  • Mitigation: Regenerate your identity (gl identity new --force) and re-register to issue a new UCAN. Until revocation/blocklisting is implemented, operators should remove compromised DIDs directly from their local database.
  • Fix target: v0.2

git-receive-pack authentication

  • The git-receive-pack endpoint enforces HTTP Signature auth. Plain Git smart-HTTP clients do not generate those headers, so the git-remote-gitlawb helper is required for pushes.
  • Impact: Direct HTTP pushes without RFC 9421 headers are rejected; users need gitlawb:// remotes or equivalent signed clients.
  • Mitigation: Use gitlawb:// remote URLs and keep git-remote-gitlawb on the user's PATH.
  • Fix target: v0.2

Private repository reads

  • Repository records have an is_public field and the node exposes GITLAWB_PUBLIC_READ, but per-repository private-read enforcement is not wired in the current live release.
  • Impact: Do not store private repositories or secrets on public nodes.
  • Mitigation: Run isolated nodes for non-public data and restrict network access at the reverse proxy or firewall layer.
  • Fix target: v0.2

Peer route hardening rollout

  • Peer announce and sync notification routes accept signed requests and verify DID matches when a signature is present.
  • Impact: Unsigned peer writes are still accepted by default so existing live nodes can keep communicating during rolling upgrades.
  • Mitigation: After all active peers run signed-node builds, operators can set GITLAWB_REQUIRE_SIGNED_PEER_WRITES=true.
  • Fix target: staged rollout

Supported Versions

Version Supported
main Active development
Latest tagged release Security fixes

Cryptographic Primitives

Component Algorithm
Identity keypairs Ed25519 (ed25519-dalek v2)
Key storage PKCS#8 PEM, 0600 permissions
Content hashing SHA-256 via CIDv1
HTTP Signatures RFC 9421 (Ed25519 + SHA-256 Content-Digest)
UCAN tokens JWT (Ed25519 signatures)
On-chain ECDSA secp256k1 (Base L2 / Ethereum)

Threat Model

gitlawb is designed to be secure against:

  • Unauthorized writes — HTTP Signature auth on all write endpoints
  • Tampered git objects — CIDv1 content addressing detects modification
  • Identity spoofing — DIDs derived from public keys, unforgeable without the private key
  • Centralized takedown — no single point of control; data on IPFS + Arweave

gitlawb is not yet designed to defend against:

  • A compromised node operator (node operators are trusted for their own node)
  • Sybil attacks on the DHT (trust score system mitigates, not eliminates)
  • Timing attacks on signature verification (not constant-time compared in v0.1)

There aren't any published security advisories

AltStyle によって変換されたページ (->オリジナル) /