Sinistralis' way is good if you want to drive yourself mad, haha. That's what I did at first for my Civil Auras mod. Then I wised up and figured out a way to use the following functions in Osiris:
CharacterGetAbility
CharacterAddAbility
CharacterRemoveAbility
CharacterGetAttribute
CharacterAddAttribute
CharacterRemoveAttribute
The key is to store the Player and Bonus amount in a database, so you can remove it later. I used a CharacterStatusApplied and CharacterStatusRemvoed to trigger when to apply/remove the bonuses.