Adding vkontakte social “like” button to posts results in multiple buttons on first post only

This isn’t WordPress specific, but the code provided on the page you linked places a div with an ID and some javascript that references that ID. If you have multiple instances of this on a single page, you’ll have multiple instances of divs and scripts using the same ID, and CSS IDs must be unique.

You can remedy this by adding the post ID to each instance to make them all unique:

<div id="vk_like_<?php echo get_the_ID(); ?>"></div>
<script type="text/javascript">
VK.Widgets.Like("vk_like_<?php echo get_the_ID(); ?>", {type: "full"});
</script>

However, this isn’t all you’ll need. If you read the text at the bottom of the page:

If the article on your site can have different addresses (for example, depending on the redirecting source, langauge, and other parameters), then in VK.Widgets.Like your internal page identifier ‘page_id should be rendered as the last parameter. An example of a code with page_id can be found in the full widget documentation

you’ll also need to set a page_id, otherwise all buttons will like the list of posts page rather than the single post page. I’m not able to see the documentation page without a login, so I can only guess that this parameter accepts a permalink.