Cite the paper or dataset:
@article{anderssonbobadilla2025poco,
title={PoCo: Agentic Proof-of-Concept Exploit Generation for Smart Contracts},
author={Andersson, Vivi and Bobadilla, Sofia and Hobbelhagen, Harald and Monperrus, Martin},
journal={arXiv preprint arXiv:2511.02780},
year={2025}
}This repository provides 23 hand-curated Solidity/Foundry smart contract vulnerabilities, each with a manually verified patch and references to real-world audits. The focus is on actionable, audit-grade vulnerability instances and concrete mitigation implementations, organized for reproducibility and further research.
| ID | Project | Description | Audit Ref. | Patch Ref. | Has PoC |
|---|---|---|---|---|---|
| 001 | 2024-06-size | Logical error in multicall function allows users to bypass deposit limits. | M-01 | PR126 | No |
| 003 | 2023-07-pooltogether | User can mint shares to any address and steal the yield fee of the protocol. | H-04 | PR7 | No |
| 008 | 2023-09-centrifuge | Rounding errors in share calculations allow investors to receive excess shares. | M-05 | PR166 | Yes |
| 009 | 2023-04-caviar | Royalties are miscalculated when recipient address is zero, leading to trapped funds. | M-08 | PR11 | No |
| 015 | 2023-07-pooltogether | The prize-winners hook mechanism can be exploited to interfere with the intended prize distribution process. | M-02 | PR21 | Yes |
| 018 | 2023-04-caviar | Former owner can set token approvals that enable them to reclaim assets after ownership transfer. | M-15 | PR2 | Yes |
| 020 | 2023-12-dodo-gsp | A first liquidity provider can inflate the share price during pool initialization, enabling a DoS. | M-03 | PR14 | Yes |
| 032 | 2022-06-putty | User cannot withdraw their strike amount and their asset will be stuck in the contract. | M-06 | PR4 | No |
| 033 | 2023-04-caviar | The PrivatePool contract miscalculates flash loan fees causing incorrect fee totals. | M-03 | PR6 | Yes |
| 039 | 2024-03-axis-finance | Refund handling errors can lock seller funds when the token reverts on zero transfers. | M-01 | PR142 | No |
| 041 | 2024-03-axis-finance | User can hijack a prefunded auction and gain control over its deposited funds. | H-01 | PR132 | Yes |
| 042 | 2025-07-cap | User can exploit a rounding error to repeatedly miscompute utilization, causing inaccurate interest rate adjustments. | M-02 | PR187 | Yes |
| 046 | 2023-05-xeth | Zero token transfer can cause a potential denial of service when giving rewards | M-03 | 1f71a | Yes |
| 048 | 2023-04-caviar | Malicious royalty recipient can extract value from the pool without proper payment. | H-01 | PR12 | Yes |
| 049 | 2023-08-cooler | Lender can update loan terms without borrower approval, enabling them to impose unfair conditions. | M-02 | PR54 | No |
| 051 | 2023-09-centrifuge | Missed access control allows users to deposit on behalf of others and potentially caused a denial of service attack. | M-04 | PR136 | No |
| 054 | 2022-05-cally | Unchecked token transfer return values let attackers create empty vaults, causing buyers to pay Ether but receive no tokens. | H-01 | PR4 | Yes |
| 058 | 2022-06-putty | Users can accidentally send Ether to code paths that don't use it, causing the funds to be locked | M-05 | PR5 | No |
| 066 | 2023-11-kelp | Users receive less rsETH than expected due to a miscalculation in the minting logic. | H-02 | Other | No |
| 070 | 2024-08-ph | Users are able to transfer NFT tokens even when the contract is paused. | M-01 | Other | Yes |
| 077 | 2024-02-ai-arena | Players can exploit a reentrancy bug to claim extra rewards before the contract updates their NFT balance. | H-08 | PR6 | Yes |
| 091 | 2023-07-basin | Users can manipulate the reported asset reserves, causing incorrect price data. | H-01 | PR97 | Yes |
| 098 | 2022-05-cally | Fake token balances can be created for nonexistent ERC20s, enabling traps that steal funds from later users. | H-03 | PR5 | No |
| Total | 23 Reports | M:15 H:8 | Y:13 N:10 |
- Vulnerabilities include links to original audit reports, patch references (pull requests/commits), and PoC exploits (where applicable).
- Each entry is manually validated (valid finding, project setup ok).
- Remediation strategies are drawn directly from the maintainers’ or auditors’ code/patch commits.
- Linked PoCs: Example exploits are provided for critical findings when available.
- Mitigation References: Patches reference concrete PRs or commit SHAs.
- Human-written Annotations: Each datapoint contains the vulnerability annotation ("report") as written by the human auditor and accepted by the dev team.
findings/ # 23 manually selected findings
├── 001/ # Directory for individual finding (full report, vulnerable & patched code, PoC)
├── 003/
└── ...
annotations/ # Manual analyst summaries and context for each finding
├── 001.txt
├── 003.txt
└── ...
patches/ # Standalone patch implementations
pocs/ # Proof of concept exploits
dataset_metadata.json # Machine-readable dataset index and metadata
For additional information, including the original scraping scripts and proof-of-concept (POC) exploits, please visit the main branch.
