The "tunneling" problem is also referred to as the bullet through paper problem. At least, that's how I learned about it. I haven't heard of it described as tunneling, so if you haven't heard of my term for it, that might help with Google searches.
To clarify a bit of what has been posted, the problem is complex but hardly GMS-specific. The problem occurs when you test whether a location is free as a basis for movement. It the object is moving quick enough, the thickness of the "walls" isn't the issue here (having sufficiently thick walls can prevent it, and thinner walls are more susceptible, but the issue isn't a function of the wall), then that test will be beyond the solid object and seen as free. This is a fairly common speed running trick, and one of the more notorious examples is Super Mario 64's parallel dimensions.
So, how to solve? Ironically, Mario does try to solve this issue: it's just any system may fail if speed is sufficient. The bullet through paper problem is fairly benign, you could test along a vector in increments small enough to avoid the clipping issue. That's what Mario does: it makes three tests along the movement vector. The glitch in Mario occurs because they build up speeds that move so far in a single frame they can pass through multiple parallel dimensions. It's ridiculous and frankly not much worth worrying about. Capping Mario's speed solves the issue (as later revisions did). Other wall piercing tricks occur because of overlapping boundaries between floors and ceilings. Those aren't quite the same problem: Mario moves through the ceiling, but it's for a different reason than speed.
Of course that's just Mario and I'm just demonstrating that the issue isn't GMS or Unity specific. As was mentioned, GMS doesn't handle this issue, the programmer will have to. As has been suggested, a potential solution in GMS specifically is to use collision_line() which could be thought of as casting out a ray and checking for collisions along it. If you did that from the four corners of your object you would know if a collision occured. I believe you can even sort the list by distance now, so you can check which corner a collision occured on easily. A bit expensive potentially, but workable. The Mario solution is also possible, instead of testing the final location of a movement, break it down into increments and test several times along that vector. The simplest solution is just to avoid thin walls. If your thinnest wall is thicker than your max movement speed then the issue shouldn't be able to occur. Tricky players might find as a way, but if the fastest the player can move is three pixels per frame then walls that are four pixels wide will should never have this issue. At least not in general gameplay.
As a nice little aside, if you ever wondered why the death plane exists (a z position below which the player dies or is teleported back to safety) it's a naive solution to the problem. Even really good protection and detection may fail, so developers often put in a "catch all" at the bottom of the world just in case.