The man, identified only as First Private Kim, threw a grenade and fired from his rifle into barracks where his colleagues were sleeping in northeastern Yeoncheon county early on Sunday.
“Eight soldiers including an officer were killed and two others were seriously injured,” a defence ministry spokesman said in Seoul.
“The incident is under investigation,” he said, adding a press briefing will take place at 11:00 am (0200 GMT) on Sunday.
The defence ministry gave no further details but the killer was believed to be stressed about life on the frontline guard post, media reports said.
The incident happened at a small guard post near the tense military demarcation line known as the Demilitarised Zone (DMZ) that separates the Korean peninsula into the communist North and capitalist South Korea.
Every South Korean man with an able mind and body has to serve two years of military service. The two Koreas are still technically at war after the 1950-1953 Korean War ended in an armistice instead of a peace treaty.