It looks like a wrong vertex normal. The problem is, there was a bug in ent_getvertex so you cannot check the normal currently. (bug was fixed in 8.11)
I'm mediocre at shader programming, I did not write a terrain shader or a shader with dynamic lights, yet, but I can have a look at it.
"Falls das Resultat nicht einfach nur dermassen gut aussieht, sollten Sie nochmal von vorn anfangen..." - Manual