Being an ethical software engineer should be similar to being an ethical professional mechanical or structural engineer. It means first doing your job correctly. Doing your job correctly includes "doing your job". Not worrying about world peace or <insert moral dilemma of the week>. Because, your opinion is NOT a moral absolute. Such Hubris!
Taking this analogy further: a structural engineer that makes a calculation mistake ("bug") that causes a bridge to collapse and kill people would be unethical. One that refuses to refuses to work on the bridge project, because he believes it will be ugly and will ruin the skyline, is unethical, and conceited. As is the one that spends 7 hours a day talking about politics (erm... "broader ethical issues").
It's time that consumers start paying attention to the ethics of the companies they consume from. If they don't like it, they should stop paying them.
The buyers and investors are the one to worry, not the paid help. If the paid help doesn't like it: Leave. Form your own billion dollar company with a "Do no evil" slogan and let me know how that all works out.