Hugo is using goldmark as its markdown renderer and has a render hook feature.

Previously, Hugo uses Blackfriday as its markdown renderer in version below v0.60.0. Check the changelog for more information.

Method 1 (No JavaScript)

Make a file layouts/_default/_markup/render-link.html and add the following code:

<a href="{{ .Destination | safeURL }}"
{{ with .Title}} title="{{ . }}"{{ end }}
{{ if strings.HasPrefix .Destination "http" }}
    target="_blank" rel="external nofollow noopener noreferrer"
{{ end }}>
    {{ .Text | safeHTML }}
</a>

Method 2 (JavaScript)

Make a file layouts/partials/extend_head.html and add the following code:

<script>
    document.addEventListener('DOMContentLoaded', function () {
        var links = document.getElementsByTagName("a");
        var i;
        for (i = 0; i < links.length; i++) {
            if (location.hostname !== links[i].hostname) {
                links[i].rel = "external nofollow noopener noreferrer";
                links[i].target = "_blank";
            }
        }
    });
</script>

References