The vehicles are equipped with electronic control units that control their functions. These units communicate with each other via in-vehicle communication protocols like CAN bus. Although CAN is the most common in-vehicle communication protocol, its lack of encryption and authentication can cause serious security shortcomings. In the literature, many attacks are reported related to CAN bus and the number increases with rising connectivity in the cars. In this paper, we present CAN protocol and analyze its security vulnerabilities. Then we survey the implemented attacks and proposed solutions in the literature.