What you are describing cannot be attributed to hardware. There may ALSO be a problem with the hardware, but "buffer underrun" means that aplay is trying to read data faster than arecord is streaming it. If you do not plug in anything, arecord will still stream silence, just a continuous feed of zeros, which aplay will dutifully (not) play. If you are getting under runs, that means arecord isn't streaming anything.
Not sure how deep your knowledge is so forgive me if anything sounds condescending.
Open a terminal and type this: "arecord -D hw:0,1 > test.raw", and then hit enter. Wait a few seconds and then hit "ctrl-c" (the control button and the C key at the same time). Type "ls -lrt" and hit enter and you should see a list of files with "test.raw" being at the bottom. There should be a number just before the date in that line, that's the file size. What is that file size? If it's zero, or very close, then there's a problem. It should be around 20000 or so if it is working properly, more if you left it running for longer.
Also when you run the "arecord" command, can you copy what it says (something like "Recording WAVE 'stdin' : Unsigned 8 bit, Rate 8000 Hz, Mono") or if there is any error?
When finished, make sure to run "rm test.raw" to delete the file.