If a single producer becomes corrupt the community can vote it out. However my understanding is that this happens via on-chain transactions. If 2/3 of the producers are corrupt and working in tandem how can the community vote them out? Since there are only 21 producers it seems possible that someone can take over 14 of them and censor all votes against them. How does EOS handle that situation?
The network would indeed be in trouble if over 2/3's of the Block Producers are corrupt and collude together.
However, this is quite a big if statement, especially when compared to Proof of Work Blockchains like Ethereum or Bitcoin where only 2 or 3 mining pools would have to collude to achieve a 51% attack and control the network.
If any one Block Producer started to act unreliably or hostile they can easily be replaced by another Block Producer waiting in the standby pool by Voting of the community. These Block Producers are all quite public as well, should they misbehave the community is a lot more likely to know who's door to knock on! Just look at the team of EOS Canada!
The underlying software of EOSIO is very flexible and can adopt new updates as technology grows more powerful over time. Should the community feel more than 21 Block Producers or a whole new consensus method is warranted, this can be upgraded without creating hard forks and splitting communities which usually makes a Blockchain more vulnerable.