The bus, which had 60 people aboard, was heading from Mandera, near the Somali border, to the capital of Nairobi.
About 20 miles into its dawn journey, militants stopped it at a hilly area and stormed in, local police Cmdr. Noah Mwivanda told the Daily Nation newspaper.
Militants demanded those onboard recite Quran verses. As others watched, they opened fire on passengers who failed to do so, he said.
Somali-based terror group Al-Shabaab claimed responsibility for the attack in a statement, saying it was retaliation for mosque raids this week. It described those killed as Christians.
This is one of the busiest travel seasons in the nation. Throngs make their way to relatives' homes for the holidays, with buses and other public transportation packed this time of the year.
"Security agencies are in pursuit of the criminal gang," the Interior Ministry said in a statement. It later said helicopters and jets have demolished the attackers' camp and operations were ongoing.
Kenyan Interior Minister Joseph Ole Lenku declined to comment on the incident in a phone call with CNN on Saturday.
The bodies of the victims were being taken to Nairobi, where the Kenya Red Cross will provide assistance to victims' relatives and survivors of the attack, said the organization's secretary general, Abbas Gullet.
Days before the bus attack, police raided multiple mosques in the port city of Mombasa after they found explosives in one. The searches this week prompted clashes with Muslim youths in the city, Kenya's second-largest.
Al-Shabaab, which has ties to al Qaeda, has launched a series of attacks in Kenya since its forces went into neighboring Somalia in 2011 to battle the extremists.
Kenyan soldiers have targeted militants' hideouts across Somalia, prompting retaliatory attacks from the terror group.
Last year, Al-Shabaab raided a Nairobi mall in a brazen attack that killed 68 people and left shoppers under siege for days.
In addition to Kenya and Somalia, the terror group has struck Uganda, where it killed more than 70 people gathered to watch a World Cup soccer match in Kampala in 2010.
As the attacks get more daring, the international community has rallied to battle the militants.
In September, a U.S. airstrike killed Al-Shabaab's leader, Ahmed Godane. The terror group later replaced him and vowed to avenge his death.