This is called "tunneling" and has to do with how collision detection works. Bodies are moved by "teleporting" a certain discrete distance each step. If the velocity is high relative to the size of the obstacle, then the movement between frames will skip right over them.
For this reason, a lot of games will use raycasts for high-speed projectiles, rather than actual moving bullets.