diff --git a/src/cmd/cos_dkms/actions/BUILD.bazel b/src/cmd/cos_dkms/actions/BUILD.bazel
index 68dc604..52ce01f 100644
--- a/src/cmd/cos_dkms/actions/BUILD.bazel
+++ b/src/cmd/cos_dkms/actions/BUILD.bazel
@@ -25,6 +25,7 @@
         "@com_github_spf13_cobra//:go_default_library",
         "@com_github_spf13_pflag//:go_default_library",
         "@com_google_cloud_go_storage//:storage",
+        "@org_golang_google_api//option",
     ],
 )
 
diff --git a/src/cmd/cos_dkms/actions/args.go b/src/cmd/cos_dkms/actions/args.go
index 82e145b..a3aff80 100644
--- a/src/cmd/cos_dkms/actions/args.go
+++ b/src/cmd/cos_dkms/actions/args.go
@@ -6,6 +6,7 @@
 	"fmt"
 	"os"
 	"os/exec"
+	"path"
 	"strings"
 
 	"cloud.google.com/go/storage"
@@ -15,6 +16,7 @@
 	"cos.googlesource.com/cos/tools.git/src/pkg/utils"
 	"github.com/golang/glog"
 	"github.com/spf13/cobra"
+	"google.golang.org/api/option"
 )
 
 func FetchKernelVersion() (string, error) {
@@ -34,6 +36,40 @@
 	return strings.Trim(string(out), "\n"), nil
 }
 
+// FetchKernelVersionFromHeaders downloads the COS kernel headers for the
+// given build id and board to a temporary directory and reads the kernel
+// release version from include/config/kernel.release.
+func FetchKernelVersionFromHeaders(buildId, board string) (string, error) {
+	ctx := context.Background()
+	client, err := storage.NewClient(ctx, option.WithoutAuthentication())
+	if err != nil {
+		return "", err
+	}
+
+	prefix := path.Join(buildId, board)
+	downloader := cos.NewGCSDownloader(client, nil, "", prefix, "", "")
+
+	tmpDir, err := os.MkdirTemp("", "")
+	if err != nil {
+		return "", err
+	}
+	defer os.RemoveAll(tmpDir)
+
+	glog.Infof("installing kernel headers to determine kernel version")
+	if err := dkms.InstallKernelHeaders(ctx, downloader, tmpDir); err != nil {
+		return "", err
+	}
+
+	versionPath := path.Join(tmpDir, "include/config/kernel.release")
+	versionBytes, err := os.ReadFile(versionPath)
+	if err != nil {
+		return "", err
+	}
+	version := strings.TrimSpace(string(versionBytes))
+
+	return version, nil
+}
+
 func FetchArch() (string, error) {
 	arch := os.Getenv("ARCH")
 	if arch != "" {
@@ -94,6 +130,12 @@
 			return fmt.Errorf("could not determine kernel version: %v", err)
 		}
 		pkg.KernelVersion = kernelVersion
+	} else if pkg.KernelVersion == "cos-default" {
+		kernelVersion, err := FetchKernelVersionFromHeaders(pkg.BuildId, pkg.Board)
+		if err != nil {
+			return fmt.Errorf("could not determine kernel version from headers: %v", err)
+		}
+		pkg.KernelVersion = kernelVersion
 	}
 
 	if pkg.Arch == "" {
diff --git a/src/cmd/cos_dkms/actions/args_test.go b/src/cmd/cos_dkms/actions/args_test.go
index a5106f8..323eac1 100644
--- a/src/cmd/cos_dkms/actions/args_test.go
+++ b/src/cmd/cos_dkms/actions/args_test.go
@@ -1,5 +1,4 @@
 package actions
-
 import (
 	"context"
 	"fmt"
@@ -33,6 +32,16 @@
 	}
 }
 
+func TestFetchKernelVersionFromHeaders(t *testing.T) {
+	kernelVersion, err := FetchKernelVersionFromHeaders("19126.0.0", "lakitu")
+	if err != nil {
+		t.Fatalf("error fetching kernel version: %v", err)
+	}
+	if kernelVersion != "6.6.94+" {
+		t.Fatalf("expected to find kernel version 6.6.94+, found %s", kernelVersion)
+	}
+}
+
 func TestFetchArch(t *testing.T) {
 	arch, err := FetchArch()
 	if err != nil {
