I think you played it well until 18... Nb6?. Your Nd7 guards c5 and can be relocated to f8, if necessary. On b6, he does nothing.
Much better looks 18... Bd6 instead, followed by Qf8/e7/c7 (depending on white's move) and activation of your QR. You have play against f4 and the better minor pieces.
I see no threat of a white pawn storm; h5/g6 can be met with Rf6 and h5/h6 can be ignored. White has no time to add piece support for the attack, your play against f4 is faster.
White has the option to exchange on f5, followed by a mass exchange on the e-file, so the position looks pretty equal to me.
One move later, 19... Bd6 was still playable but 19... g6? pretty much threw the game away.
This was from a tournament game I played last night. I've felt relatively confident in my Caro-Kann, but this line is really causing me a headache. See comments in diagram.
Opponent (~2040) vs Me (~2090)
OPENING MOVES
THE "CRITICAL DECISION"
So, what of this line? It seems that the Nd2-Nb3 line, intending to always meet ...Be7 with g4, is very scary for black. My opponent was only rated 2040 and had begun this tournament .5/6, but seemed to effortlessly get a position that was not only good, but easy to play. Any suggestions for improvements in the opening for black?