docs: SEC-I04 indexer/API abuse and data integrity review #453
Labels
No labels
agent:fix_bugfix
agent:fix_conflicts
agent:fix_security
agent:gap_analysis
agent:implement
agent:implement
agent:implement
agent:open_issues
agent:ready
agent:research
agent:security_audit
agent:verify
architecture
backend
blocker:hybrid
blocker:launch
blocker:limit-orders
blocker:v2
block:log_only
block:security
bug
ci
contracts
correctness
deploy
dev
devops
docs
documentation
duplicate
e2e
enhancement
epic
feature
frontend
functional-completion
gas
good first issue
governance
help wanted
high-risk
hooks
hybrid
indexer
infra
infrastructure
integrators
invalid
launch-blocker
limit-orders
localnet
localterra
low priority
missing-implementation
needs-design
ops
performance
priority
high
priority
medium
product
qa
QA
question
ready
ready
research
scripts
security
security-hardening
smartcontracts
tech-debt
testing
ux
UX
v2
verification
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
code/cl8y-dex-terraclassic#453
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
assigned to @totdking
unassigned @totdking
Summary
Agent-assisted review of indexer/API abuse vectors and data integrity completed across two independent runs. Merged verdict: PASS overall with one medium operational gap and one low input validation gap.
What Was Done
Areas reviewed: SQL injection posture, rate limiting configuration and clamping, error sanitization, CORS origin allowlist enforcement, swap and fill deduplication, hybrid volume reconciliation, CSV formula injection, factory provenance validation, and ILIKE query safety.
Solid findings confirmed:
push_bind()orsqlx::query.bind(). The threeformat!()SQL segments interpolate only closed-match enum values and are not vulnerabilities.RUN_MODE=prodrefuses to start ifCORS_ORIGINSis empty.internal_errandlcd_gateway_errreturn sanitized messages only. No URLs or LCD endpoint paths exposed to clients.UNIQUE(tx_hash, pair_id, swap_index)on swap events andUNIQUE(tx_hash, pair_id, order_id)on limit fills. Insert usesON CONFLICT DO NOTHING.book_return_amount + pool_return_amountonly. Maker fill rows are sub-allocations, not additive.=,+,-,@to neutralize formula injection.verify_factory_provenanceconfirms factory maps asset tuple to the exact emitting pair address before indexing.Findings Triaged
%and_wildcards,?q=%matches every pair -- filed as Issue 58 (#459)format!()SQL segments use closed-match whitelisting; not a vulnerability, no action requiredRelated Issues
?q=%matches all pairsVerification Checklist
mentioned in issue #381
Both code findings re-checked live on the fresh redeploy (
21381a0e, indexer rebuilt).I04-F01 / #458 — dual-zero rate-limit bind guard:
I04-F02 / #459 — ILIKE wildcard escape:
Children merged + live-verified, checklist done — good to close from my side. @PlasticDigits
mentioned in issue #472
mentioned in merge request !1006
Good to close on this end as well .
All pushed changes pass checklist and verification parameters