After walking through the source code, I found that CCDrawNode is equipped with kCCShader_PositionLengthTexureColor program which uses the shader defined in ccShader_PositionColorLengthTexture_frag.h. There is one line in the main block.
gl_FragColor = v_color*step(0.0, 1.0 - length(v_texcoord));
The above statement means only those pixels whose texture coordinates length < 1 will be colored. In other word, it paints a circle. That is the trick of CCDrawNode drawing circle dot with only 4 vertices.