Den centret-back befintliga affären skulle löpa ut i slutet av den kommande säsongen.
Morrison, 26 år, gick med i Bluebirds from Reading 2014, efter att tidigare ha spelat för Swindon och Huddersfield.
Han har gjort 120 framträdanden och gjorde 13 mål för Cardiff, som förkastade ett bud för honom från andra Championship sida Sheffield onsdag i juni.
Cardiff City kapten Sean Morrison har undertecknat ett nytt kontrakt som kommer att hålla honom på klubben fram till 2020.