The militants attacked the bus near Charkhel village in Kurram Agency, officials of the local political administration said.
All passengers on the bus belonged to the Shia community, they said.
The vehicle was going from Parachinar, the main town of Kurram Agency, to Peshawar in Khyber-Pakhtunkhwa province when it was attacked.
The dead and injured were taken to a military hospital in Thall. Several women and children were among the injured.
Officials said this was the sixth attack on a bus in the same area after the Parachinar-Peshawar road was reopened by authorities about six months ago after being closed for several years due to sectarian tensions.
Security forces rushed to the site of the ambush and surrounded the militants who carried out the attack, TV news channels reported.
Hundreds of people have died in clashes between Shias and Sunnis in Kurram Agency over the past five years. The situation was exacerbated after the Taliban infiltrated the region and began backing the Sunni tribesmen.