Sachverhalt: Sachverhalt: A. Das Kreisgericht Rheintal verurteilte am 3. November 2004 Y._ wegen schwerer Widerhandlung gegen das Betäubungsmittelgesetz (Art. 19 Ziff. 1 Abs. 4 i.V.m. Ziff. 2 lit. a BetmG) und Gehilfenschaft dazu sowie wegen Widerhandlung gegen das Waffengesetz zu 17 Monaten Gefängnis, abzüglich 59 Tage Untersuchungshaft, mit bedingtem Vollzug und einer Probezeit von 3 Jahren. Es verpflichtete ihn, dem Staat eine Ersatzforderung von Fr. 2'000.-- zu bezahlen. Das Kantonsgericht St. Gallen erklärte ihn am 7. Dezember 2005 der Widerhandlung gegen das Waffengesetz sowie der einfachen Widerhandlung gegen das Betäubungsmittelgesetz (Art. 19 Ziff. 1 Abs. 4 BetmG) schuldig und verurteilte ihn zu einer Gefängnisstrafe von 9 Monaten (mit Anrechnung der Untersuchungshaft von 59 Tagen). Es schob den Vollzug der Freiheitsstrafe mit einer Probezeit von 3 Jahren auf. Es bestätigte insbesondere auch die kreisgerichtliche Verurteilung zur Bezahlung der Ersatzforderung. Das Kantonsgericht St. Gallen erklärte ihn am 7. Dezember 2005 der Widerhandlung gegen das Waffengesetz sowie der einfachen Widerhandlung gegen das Betäubungsmittelgesetz (Art. 19 Ziff. 1 Abs. 4 BetmG) schuldig und verurteilte ihn zu einer Gefängnisstrafe von 9 Monaten (mit Anrechnung der Untersuchungshaft von 59 Tagen). Es schob den Vollzug der Freiheitsstrafe mit einer Probezeit von 3 Jahren auf. Es bestätigte insbesondere auch die kreisgerichtliche Verurteilung zur Bezahlung der Ersatzforderung. B. Y._ erhebt staatsrechtliche Beschwerde mit den Anträgen, das Urteil des Kantonsgerichts im Schuld- und Strafpunkt sowie hinsichtlich der Ersatzforderung aufzuheben und ihm die unentgeltliche Rechtspflege zu gewähren. B. Y._ erhebt staatsrechtliche Beschwerde mit den Anträgen, das Urteil des Kantonsgerichts im Schuld- und Strafpunkt sowie hinsichtlich der Ersatzforderung aufzuheben und ihm die unentgeltliche Rechtspflege zu gewähren. C. Das Kantonsgericht verzichtet auf eine Vernehmlassung. Die Staatsanwaltschaft beantragt, die Beschwerde abzuweisen.