Contracts (both smart and traditional) are first of all logic constructions. And thus:
1) this logic can be implemented with vulnerabilities, no matter in paper or software form;
2) this logic can be bad by design, allowing undesired behavior of contractors.
These are not problem of smart contracts only, but problems of any kind of contracts. They are much older than any software. And they need to be solved (at least partially) since people need contracts for the economy to function.