The only free and comprehensive online etymological dictionary of the Spanish language
brujo (Noun) sorceror, (f.) "witch," (m.) "warlock"
Very early 15th cent. Old Spanish bruxa. Of unknown origin.

The traditional view is that brujo comes from a pre-Roman language such as Iberian or Celtiberian. If the word is a loan from a Celtic source, then compare Old Irish Brigit "bright," name of a fire goddess, whose worshippers were the brigantes. Note the old Latin name for La Coruña, Spain, was Brigantium "place of the Brigantes."

Alinei (1999) argued that the word and its Romance cognates derive from Latin bruc(h)ulus "little worm," from bruchus "grub."

Dworkin (2012) follows the work of Cazalbou, who noticed that the Old Spanish bruxa is pre-dated by Catalan bruixa, Occitan (Gascon dialect) broucho, and several Southern French forms by at least a century. In which case, perhaps the word was borrowed from a pre-Roman language spoken north of the Pyrenees.

Finally, a suggestion by Meier (1984) that brujo comes from Vulgar Latin *versiare/*vortiare has been roundly rejected by other linguists.
Asturian bruxu, Portuguese bruxa, Aragonese bruixa, Catalan bruixa, Occitan (Gascon) broucho, brouche, French (southern dialects) bruèis(sa), breicha, broucha