It's Microsoft's fault because...
...some developer decided to use a C string operation (which is terminated by the appearance of the first 0x00 in the string) on an ASN.1 string data type. ASN.1 data structures are TLV (type, length, value). SInce the length of the string is specified in the encoding, the appearance of a null within the string shouldn't stop the processing of that string before its end is reached.