DelistProbeDBPROOF1.sol
VSS-20260924-ENBE771Z · generated Sep 24, 2026, 5:22 AM
Verdict is derived from severity counts via the same deterministic formula every VegaSec report uses. DelistProbeDBPROOF1.sol was scanned from pasted source. This is static-analysis triage, not a certification or formal audit attestation.
PDF artifact
Queued artifact pipeline · not blocking on the scan
No PDF artifact has been requested for this report yet. The HTML report and the Markdown export already carry the full disclaimer and limitations inline. PDF synthesis is a queued artifact, not part of the scan path.
Status endpoint
GET /report/solidity/VSS-20260924-ENBE771Z/export.pdf
Solidity evidence report
4 audit findings
Severity distribution
Executive summary
- 4 findings surfaced (0 critical, 1 high, 1 medium, 0 low, 2 informational).
- HIGH · Reentrancy in DelistProbeDBPROOF1.withdraw(uint256) (DelistProbeDBPROOF1.sol#7-12): (withdraw) — exploitability medium.
- Automated static analysis only. A human operator review has not been attached to this report.
- highReentrancyConfidence: mediumExploitability: mediumDetector: slither
Reentrancy in DelistProbeDBPROOF1.withdraw(uint256) (DelistProbeDBPROOF1.sol#7-12):
Evidence
Reentrancy in DelistProbeDBPROOF1.withdraw(uint256) (DelistProbeDBPROOF1.sol#7-12): External calls: - (ok,None) = msg.sender.call{value: amount}() (DelistProbeDBPROOF1.sol#9) State variables written after the call(s): - balances[msg.sender] -= amount (DelistProbeDBPROOF1.sol#11) DelistProbeDBPROOF1.balances (DelistProbeDBPROOF1.sol#5) can be used in cross function reentrancies: - DelistProbeDBPROOF1.balances (DelistProbeDBPROOF1.sol#5) - DelistProbeDBPROOF1.withdraw(uint256) (DelistProbeDBPROOF1.sol#7-12)
Exploitability notes
Medium-confidence detection; manual review required before relying on the finding either way.
Remediation
Apply the checks-effects-interactions pattern. State writes must happen before external calls, and consider OpenZeppelin's ReentrancyGuard for high-risk entry points.
- mediumUnchecked callDetector: semgrep
Low-level .call to an externally-controlled target
Evidence
Low-level .call to an externally-controlled target. Combined with reentrancy or unchecked return values, this is a common fund-draining pattern.
Exploitability notes
Analyzer did not report a confidence level; treat as unverified until reviewed.
Remediation
Check the boolean return of low-level call/delegatecall/send and revert on failure with a descriptive reason string.
- informationalLogicConfidence: highExploitability: lowDetector: slither
Version constraint 0.8.19 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)
Evidence
Version constraint 0.8.19 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) - VerbatimInvalidDeduplication - FullInlinerNonExpressionSplitArgumentEvaluationOrder - MissingSideEffectsOnSelectorAccess. It is used by: - 0.8.19 (DelistProbeDBPROOF1.sol#2)
Exploitability notes
Informational signal; not directly exploitable without additional context.
Remediation
Re-derive the business rule by hand, write a property-based test that fails on the current path, and only then fix the implementation.
- informationalUnchecked callConfidence: highExploitability: lowDetector: slither
Low level call in DelistProbeDBPROOF1.withdraw(uint256) (DelistProbeDBPROOF1.sol#7-12):
Evidence
Low level call in DelistProbeDBPROOF1.withdraw(uint256) (DelistProbeDBPROOF1.sol#7-12): - (ok,None) = msg.sender.call{value: amount}() (DelistProbeDBPROOF1.sol#9)
Exploitability notes
Informational signal; not directly exploitable without additional context.
Remediation
Check the boolean return of low-level call/delegatecall/send and revert on failure with a descriptive reason string.
Exploit reasoning
Reference-grade reasoning tied to evidence
- e8c358e4499cd5ebb564037953d669a433efe4216c1591e63fee3afdf563b0a9 · reentrancyhighConfidence: low
Conditions point at the exploit but at least one precondition needs operator confirmation.
Preconditions
- External call to an untrusted address before the contract's own state is updated
- Contract or callback path reachable from the external caller
- No nonReentrant guard or equivalent on the entry-point function
Action
Attacker contract receives control during the external call and re-enters the original function before the original state write completes, repeating the state-changing side effect.
Impact
Duplicated withdrawals, double-spend on accounting balances, or out-of-order updates to invariants the function relies on.
False-positive caveats
- The external call may be to a known, trusted contract whose behavior is provable.
- The function may be guarded indirectly by a flag or external lock not visible to the analyzer.
Remediation checklist
- Apply checks-effects-interactions: update internal state before any external call.
- Add a nonReentrant guard on the entry-point function.
- Where feasible, pull-payment instead of push-payment on user balances.
- 403f4a2db221dbd54fd421b0a6fc833665e442241fb8d74f62aff560efdd64b4 · unchecked-callmedium
Not determined
Question: Is this finding exploitable in this specific contract?
Reason: Analyzer confidence or exploitability is unknown; the narrative would overclaim without operator review.
Audit pipeline
Audit cockpit
Honest stage-by-stage view of what VegaSec ran against this contract. Automated stages do not replace a human operator review.
Audit intake
Passed320ms replay5:22 AMNormalize the submitted contract target and confirm it can enter the Solidity audit lane.
Source acquisition
Passed1.4s replay5:22 AMResolve pasted source or verified explorer source without treating malformed input as demo data.
Toolchain validation
Passed2.3s replay5:22 AMConfirm the configured static analyzers can run and produce parseable output.
Static analysis
Passed4 findings8.8s replay5:22 AMRun static analyzers against the sandboxed source and collect raw detector evidence.
Finding normalization
Passed4 findings1.1s replay5:22 AMDedupe detectors, classify vulnerability classes and compute severity-weighted risk.
Exploitability review
Partial4 findings1.9s replay5:22 AMFrame automated findings with conservative exploitability and limitation notes.
- Automated exploitability review is conservative and does not replace a manual exploitability assessment.
Remediation draft
Partial4 findings1.5s replay5:22 AMPrepare remediation-oriented evidence for the shareable report artifact.
- Remediation notes are generated from detector evidence and require project-specific engineering review.
Operator review
Blocked0ms replay5:22 AMRecord whether a human operator artifact exists before buyer escalation.
- No operator review artifact is attached to this automated scan.
- Human operator review has not been attached to this automated scan yet.
Finalization
Partial4 findings620ms replay5:22 AMPublish the automated report artifact or explain why the scan failed closed.
Artifact: Automated Solidity report · solidity-2f746d702f766567
- Final report is an automated static-analysis artifact; no operator review artifact is attached.
How to read this report
Score, confidence, ranking: four moving parts, no hand-tuning.
Generated Sep 24, 2026, 5:22 AM · Solidity · DelistProbeDBPROOF1.sol
Score bands
0-19
AVOID-style triage
Multiple high or critical findings, low source confidence, or unverified context. Public action should pause until a Private Review or a re-scan with better evidence.
20-49
High caution
Notable findings or thin evidence. Worth a Private Review before relying on the artifact.
50-69
Watch
Mixed signals: some evidence, some gaps. Re-scan after material changes to the target.
70-89
Clear surface (automated) · this report
No critical or high findings via static analysis. Not a safety claim: human review is still recommended for diligence work.
90-100
Strong surface (automated)
No critical or high findings, verified source, and high source confidence. Not a safety claim: human review is still recommended for diligence work.
- Score
- Deterministic 0-100 derived from severity counts. Same formula across every report. Lower means more risk.
- Confidence
- Separate axis. Measures how much VegaSec trusts the input data. Low confidence pushes the verdict toward UNKNOWN; the two are never collapsed into one number.
- Ranking / percentile
- Only meaningful within the eligible Trust Index set. Shown on /trust-index when the eligible pool is large enough. Today the public index is a controlled preview.
Private Review is separate
A paid Private Review does not raise the public score on this report. Public score reflects public-source evidence only. Private Review adds operator attestation and a confidential memo, never a score bump.