What prevents anyone from spending utxos from a native segwit address? I read that transactions spending utxos from a native segwit address ( an address starting with bc1) are seen as anyone can spend transactions by legacy nodes.

So what prevents someone from taking a utxo from a native segwit address and using it to fund a transaction with  a scriptsig of OP_TRUE or null ,and submitting it to a legacy node or directly to a miner?
Segwit is a soft fork.  A supermajority of miners have agreed that they will not include such transactions in their blocks, and will orphan any block that does include such a transaction.

If you send such a transaction to a legacy node, it will see it as a valid unconfirmed transaction, but the network will never confirm it.  

Potentially, if there are still some miners running legacy code, the transaction could get included in a block by a miner who also sees it as valid.  But the majority of miners will reject this block.  The only way that the legacy node would ever see this transaction as reaching, say, 6 confirmations is if those legacy miners were to mine 6 blocks in succession.  Since those miners are at bet a tiny minority, this is extremely unlikely.

If you send the transaction directly to an updated miner, they'll reject it.  If you send it to a legacy miner, they might include it in a block, but then their block will eventually be orphaned out of the blockchain.