It sounds like your son is in the middle of an experimental stage of life, which is normal for teenagers. As parents, it's our job to let our children know when they have gone too far. We do this by creating boundaries and setting limits. Sit down and talk with your son about what your expectations are for him. Perhaps he's not allowed to take this 18-year-old to school anymore or even hang out with him. Make sure each limit, boundary and expectation is laid out very clearly for him, as well as what the consequences will be if these expectations are not met. Then give him a chance to prove himself.
If your son chooses to not follow these rules, immediately start issuing consequences and taking away privileges. Do not take away everything at once because if he chooses to break another rule, you are left with nothing to barter. Try to make your consequences as closely related to the behavior as possible. For example, if he is caught giving this friend a ride to school, he loses the privilege of using the car. What's best may not always be the easiest or make him the happiest, but his safety and growth is your number one concern.