The Sweden international, who has been capped 26 times by his country and played at Euro 2012, has put pen to paper on a three-year deal with the Krasno-sinie, with the option of a further year written into the contract.
The reported 6 million euro fee will bring Elm to the Russian capital after three years in the Netherlands with AZ.
The 24-year-old played a total of 83 league games for the Eredivisie side, scoring 18 goals in the process.
Elm had previously been linked with the likes of Lazio and Tottenham, but has joined a CSKA side that currently sits in 10th place in the Russian Premier League after just two games of the new season.
Follow GOAL.COM USA on Twitter