Segmentation faults are usually caused by 1 of a few things:
- Buggy code (unlikely in passwd)
- Bad memory (unlikely if reproducable)
- Bad compilation (possible, unless installed from rpm)
- Bad version of libc
- Hacked system (good passwd replaced with a bad and buggy one)
Any of those sound likely on your system?