Bug Bounty Program
The DFINITY Foundation operates an Internet Computer (ICP) Bug Bounty program that rewards researchers for finding and reporting vulnerabilities.
Eligibility
Before reporting a vulnerability, please:- Review the bug bounty policy at dfinity.org/bug-bounty
- Check the scope and eligibility criteria to determine if your finding qualifies
- Understand the reward structure for different severity levels
Rewards
The bug bounty program offers rewards based on:- Severity - Critical, High, Medium, or Low impact
- Exploitability - Ease of exploitation
- Impact - Potential damage to the network, users, or assets
- Quality - Completeness and clarity of the report
Reporting a Vulnerability
Reporting Methods
Preferred: HackenProof (Recommended)
Report through HackenProofAdvantages:
- Streamlined disclosure process
- Faster Bug Bounty payouts
- Structured communication channel
Alternative: Email
Send an email to: [email protected]Include the following information:
- Description of the vulnerability
- Steps to reproduce the vulnerability
- Risk rating (Critical/High/Medium/Low)
- Proof of concept (if applicable)
- Any other relevant information
What to Include in Your Report
Vulnerability Description
Vulnerability Description
- Clear, concise summary of the vulnerability
- Affected components or systems
- Vulnerability type (e.g., buffer overflow, injection, cryptographic weakness)
Reproduction Steps
Reproduction Steps
- Detailed steps to reproduce the issue
- Required preconditions or setup
- Expected vs. actual behavior
- Screenshots or logs if applicable
Impact Assessment
Impact Assessment
- Potential consequences if exploited
- Affected user groups or systems
- Your assessment of severity
Supporting Materials
Supporting Materials
- Proof of concept code (if safe to share)
- Network captures or logs
- Links to related vulnerabilities or research
Response Timeline
We will respond to your report within 72 hours and work with you to fix the vulnerability as soon as possible.
Security Update Process
Once a security vulnerability is reported, the DFINITY Foundation follows a structured process:Investigation
- Confirm the vulnerability
- Assess severity and impact
- Assign to appropriate security team
Fix Development
- Develop and test a fix
- Ensure no regression or new vulnerabilities
- Prepare documentation updates
Release
- Release a new version including the fix
- Follow Network Nervous System (NNS) upgrade process for protocol changes
Coordinated Disclosure
We practice responsible disclosure:- Vulnerabilities are kept confidential until a fix is deployed
- We coordinate with reporters on disclosure timing
- Public disclosure occurs only after fixes are widely deployed
Security Best Practices
For Contributors
Secure Coding Guidelines
Input Validation
Always validate and sanitize external inputs
Error Handling
Handle errors gracefully without leaking sensitive information
Cryptography
Use established cryptographic libraries, never roll your own
Dependencies
Keep dependencies updated and audit for known vulnerabilities
Code Review Focus Areas
For Node Operators
Infrastructure Security
System Hardening
System Hardening
- Keep IC-OS updated with latest security patches
- Minimize exposed network services
- Use firewall rules to restrict access
- Enable security monitoring and logging
Key Management
Key Management
- Secure storage of cryptographic keys
- Use Hardware Security Modules (HSMs) where appropriate
- Implement key rotation procedures
- Maintain secure backups
Access Control
Access Control
- Limit administrative access
- Use strong authentication mechanisms
- Implement principle of least privilege
- Audit access logs regularly
Monitoring
Monitoring
- Monitor for unusual network activity
- Set up alerting for security events
- Participate in security advisories
- Stay informed about IC security updates
For Canister Developers
Smart Contract Security
Access Controls
Implement proper authorization checks in all canister methods
Input Validation
Validate all inputs, especially from untrusted callers
Cycles Management
Protect against cycles draining attacks
State Management
Handle state transitions atomically and safely
Testing for Security
- Fuzz testing - Use property-based testing to find edge cases
- Security audits - Consider third-party security audits for critical canisters
- Formal verification - Use formal methods where applicable
- Penetration testing - Test attack scenarios before deployment
Dependency Management
Vulnerability Scanning
The repository usescargo-deny for dependency auditing:
deny.toml at the repository root.
Supply Chain Security
Security Tooling
Static Analysis
- Clippy - Rust linter with security-relevant checks
- Rustfmt - Consistent code formatting reduces bugs
- Cargo-audit - Check for known vulnerabilities in dependencies
Dynamic Analysis
- Fuzzing - See
rs/fuzzers/for fuzz testing infrastructure - System tests - End-to-end security testing
- Canister testing - Use PocketIC for security test scenarios
Build Reproducibility
The Internet Computer provides verification of build reproducibility:Communication
Preferred Language
We prefer all security communications to be in English for consistency and clarity.
Confidentiality
- Security reports are kept confidential
- Access is limited to security team members
- Reporter identity is protected (unless permission is given for attribution)
Security Advisories
Security advisories are published:- Through NNS proposals for protocol upgrades
- In release notes on GitHub
- On the DFINITY Forum for community awareness
Related Resources
Bug Bounty Program
Official bug bounty program details
HackenProof Platform
Report vulnerabilities through HackenProof
Contributing Guide
Guidelines for secure contributions
Testing Guide
Security testing practices
Disclaimer
Contact Information
- Security Email: [email protected]
- Bug Bounty: HackenProof
- Forum: forum.dfinity.org
- GitHub: github.com/dfinity/ic