The 25-year-old defender was due to be out of contract this summer but has now committed to the Clarets until 2017.
"I'm quite flattered by it to be honest," Lafferty, who made just eight league starts this season, told Burnley's website.
"I didn't play as much as I'd like this season, and only about 40 times since I've been at the club (having joined in January 2012), so for the manager (Sean Dyche) to turn around and give me three years, as a player with no Premier League experience, was a boost.
"There are guys who played a lot more than me this year who've been let go, so for the manager to show that faith in me is very nice and I want to repay that on the pitch in the next few years."
Burnley earned automatic promotion to the top flight by finishing second in the Championship.