Another issue in Solidity, a JavaScript-like language that Ethereum uses for smart contracts, has been highlighted that can impact any Ethereum contract, not just the DAO.
This issue is specifically a problem with the design of the Solidity language. There is a rich body of research on formal languages for contracts (see
this survey or
this post by Nick Szabo). Ethereum, however, decided to use a JavaScript-like language instead.
The issue impacts some, and not all, contracts on Ethereum. And developers of future contracts can avoid writing exploitable contracts by closely following guidelines and best practices.
This does NOT mean that Ethereum is permanently broken. The Solidity compiler can warn programmers of this particular issue.