Security Auditing Our Smart Contracts with OpenZeppelin
Security is foundational to everything we build at Cornicular. We recently completed a comprehensive audit of our smart contracts with OpenZeppelin, and we want to share what we learned.
Audit Scope
The audit covered our entire smart contract suite: the document registry, access control system, pause mechanism, and multi-signature governance. OpenZeppelin's security team reviewed approximately 2,500 lines of Solidity code across three contracts.
Vulnerabilities Found
The audit identified two medium-severity issues and four low-severity findings. None of the findings were exploitable in production, but addressing them strengthened the overall security posture of the system.
The most significant finding related to a potential reentrancy vector in the batch registration function. While the attack surface was limited due to our use of pull-over-push patterns, we implemented additional safeguards including reentrancy guards on all state-changing functions.
Key Takeaways
The audit reinforced several important principles: never trust external contract calls, always validate input parameters at the contract level, and implement defense in depth. We have since integrated automated security scanning into our CI/CD pipeline and established a regular audit cadence.
We also launched our bug bounty program, inviting the broader security community to help us identify and address potential vulnerabilities. Security is not a destination but a continuous journey.