I am trying to understand how chainlink, or any oracle solution for that matter, can deal with a node not providing accurate data. How would you detect that the data is faulty to begin with, and how would you "punish" the node?
All oracle networks don't necessarily take the same approach, however as the most used oracle network with a high focus on security and reliability, Chainlink specifically looks for outlier results ('faulty data'), and then takes appropriate action if any are found, to ensure the data feed isn't negatively affected.
In terms of penalties or 'punishment', Chainlink has published its roadmap and long term goals for crypto-economic staking. Suggest reading this for more info on how nodes will be kept honest. This is currently in development, with a target to go live later in the year