A voltage divider is used.
I don't know of any CANbus internal schematics offhand, but the standard is based upon RS-485, for which some schematics are available. Consider the ancient SN75176A, Fig. 8-1 middle:
The two right-hand transistors and diodes constitute a bias network, probably a complementary emitter follower from an internal threshold (may be referenced to the opposite line; further internal structure is not shown of course). Notice the 16.8k into 480Ω (parallel Thevenin equivalent) resistor divider: this reduces the signal level from -7 to 12V (maximum common mode input range), to -194 to 333mV (change relative to the mean, the bias level).
Notice this puts significant pressure on the receiver stage (comparator) to read the level correctly; if its own error is typically 2-5mV (compare with contemporary untrimmed bipolar types like LM393), that error is multiplied by the inverse divider ratio to say 72-180mV at the terminals. Indeed, the receiver is only guaranteed to read correctly outside the -200 to 200mV range, so it seems likely this is such an example, an untrimmed bipolar comparator circuit with matched resistor dividers (the resistors might be laser-trimmed however, to ensure CMRR and matched gain; they might also be monolithic fabbed where the absolute value is crudely controlled (hence the "NOM"inal specifier) but the ratios are well matched).
For another example, older but more complete, consider DS75115N:
This (somewhat obscure?) receiver relates to different standards (possibly MIL-STD-188-114A, I'm not sure?), and uses a different input bias network, but you can still see a similar scheme in use: inputs wired through resistor dividers. (I'm not sure offhand the exact function of the input current mirror (the three common-base transistors, with the 130Ω emitter and shared 150Ω emitter resistors), but it seems likely it extends the positive input CM range by actively pulling down on the diff pair bases (pulled up via 1.64k resistors). This comes somewhat at the expense of higher input bias current (the "unit load" here is approximately the 7k and 8k in parallel), whereas modern RS422/485/CAN/etc. receivers have much higher input resistances (fractional "unit load" inputs).
I'm sure I've seen a schematic of SN75176 and friends before, but I can't seem to find one online right now. So, consider this diagram as a representative alternative, but not a direct substitute.
Anyway, keep in mind, these are archaic bipolar solutions to the same problem -- modern CMOS devices may choose to employ similar methods (matched pair resistor dividers into CMOS comparator), or may have more bespoke methods.
...Aha, SN65HVD23x give a little bit more detail, and without making reference to older standards; these are native CAN interfaces.
Curiously, they show the ESD diodes twice (the 16 and 20V double-zeners to CANH/L). Important here is the input resistor divider (shown this time as 110k up, 45k series, and 4.5k at Vcc/2 Thevenin equivalent), and they actually happen to show an NPN BJT with current source in the emitter circuit -- they don't show further connections but this will certainly be the differential pair of the comparator section, with common emitter CCS.
Also curiously, they show different MOS symbols (the BJT-like IC shorthand symbols*, bottom-left; MOSFETs proper everywhere else). Well, TI isn't exactly renowned for their quality diagrams these days (or even two decades ago when this datasheet was first written, honestly).
*Which, as I love to rant about... are strictly wrong: the arrow indicates conventional current flow, so, apparently the built-in diode would be downward on both, shorting out the supply? Well, anyway...
As design solutions go, it's... well it is and it isn't an interesting question: given that most ICs clamp inputs either to supply rails or zener diodes (or other ESD structures), it may seem odd to have inputs with wider operating ranges; but, well, a resistor divider does well enough, as long as your bandwidth and noise margins are designed appropriately (which, as we've seen, this might drive the 200mV minimum input signal level, for example). It's a dumb, brute-force solution, but when a brute-force solution is adequate... so what? :)
In any case -- apologies for the piecemeal exploration of multiple not-necessarily-relevant-or-related product families; these things aren't exactly widely available, and you only really know by decapping and tracing the circuit.
Which, decapping is more and more accessible these days -- particularly for older chips where a visible microscope suffices to resolve the structures. I don't see a CAN interface decap offhand, but, Google is terrible at searching these things. You might want to peruse https://siliconpr0n.org/ or https://zeptobars.com/ and see if they have anything, and, I think there are a few other related sites out there too; search around.