NFT Token Transfer Disrupts Keeper Automation and Data Consistency
The WeatherNFT contract fails to properly handle Chainlink Keeper registrations and weather data updates when NFTs are transferred between addresses. This creates inconsistencies between NFT ownership and the automated services tied to each token.
The contract implements token transfers through standard ERC721 functionality but doesn't account for:
Keeper registration continuity
Weather data update permissions
LINK token expenditure responsibility
NFT has active Chainlink Keeper registration
Regular weather data updates are scheduled
LINK tokens are deposited for automation
No transfer restrictions implemented
Standard ERC721 transfer operations
Active Chainlink network services
Valid Keeper registrations
Sufficient LINK token balances
Attacker acquires NFT through normal transfer
Original owner's Keeper continues operating
New owner receives NFT but no control over:
Update frequency
Data sources
Keeper parameters
Contract continues spending original owner's LINK
Weather updates mismatch ownership
Financial Risks:
LINK token loss from orphaned Keepers
Unauthorized fund deductions
Irreversible automation costs
Operational Risks:
Broken automation workflows
Mismatched data ownership
Uncontrolled API calls
Compliance Risks:
Violation of data privacy
Unauthorized data access
Regulatory reporting issues
Reputation Risks:
User distrust in automation
Negative protocol perception
Loss of stakeholder confidence
Financial loss:
Original owner pays for unwanted services
New owner cannot utilize paid features
Functional issues:
Automated updates to wrong addresses
Mismatched data permissions
Trust erosion:
Unclear service ownership
Unexpected LINK token deductions
System instability:
Orphaned Keeper registrations
Unauthorized data modifications
Mint NFT with Keeper registration
Transfer NFT to new address
Verify:
Original Keeper still active
New owner can't modify settings
LINK deductions continue
Updates use old parameters
Implement transfer hooks:
Add Keeper transfer function:
Require explicit Keeper re-registration after transfer
Implement LINK token reimbursement mechanism
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.