Armed men have reportedly killed four migrants after boarding their dinghy off the coast of Libya.
German aid group Sea-Watch said another 25 migrants are missing after the attackers beat them with clubs, throwing many into the sea.
The group claimed that the speedboat carrying the armed men was marked 'Libyan Coast Guard'.
Around 150 migrants were crammed on board the dinghy.
The Italian coast guard had sent the Sea-Watch ship and a diverted oil tanker to help the migrants, and the attack happened while the operation was under way.
"The violent intervention of the Libyan Coast Guard caused a situation of mass panic on board the rubber boat in distress," Sea-Watch said in a statement.
"One tube of the rubber boat collapsed, causing the majority of the 150 people to slip into the water."
The group said it had launched a rescue operation following the incident, which happened overnight on Thursday.
Sea-Watch said it had rescued 120 people, a figure confirmed by the Italian coast guard.
A spokesman for Libya's naval forces in Tripoli said he had not heard of the attack.
Boat-loads of migrants regularly attempt the dangerous journey across the Mediterranean.
The Italian coast guard, which co-ordinates the operations carried out by aid ships, said around 1,400 migrants were rescued on Thursday off the coast of Libya.
Attempts at the crossing are continuing despite worsening weather as winter approaches, with more than 2,400 migrants rescued off Libya since Sunday.
The medical charity Medecins Sans Frontieres tweeted that it had rescued 802 people on six rubber dinghies and one small wooden boat.
A Maltese aid group said it had rescued 432 migrants packed on to three dinghies.
The United Nations says at least 3,654 people have died trying to cross the Mediterranean this year.