kubernetes / kubernetes/kops

kops stores Digital Ocean keys insecurely

Open
#14,315 16 comments 0 reactions 0 assignees View on GitHub
lifecycle/frozen
Dominant language
Go
Stars
16.7k
Forks
4.7k
Avg merge
17h 21m
Merged PRs (30d)
68

Description

This was disclosed through Hacker One, but was improperly closed after review; so this disclosure is being done publicly to ensure visibility.

When using kops for Digital Ocean, it supplies API keys through user init. API keys on Digital Ocean are inheriently insecure and must be transmitted securely.

Any unprivileged user with access on a server kicked by kops in Digital Ocean can curl the metadata API and see the API key in plain text when viewing the user data supplied.

This means that an unprivileged user that may have only had access to a single server can become Digital Ocean account god.

A secure method of transmission needs to be used for Digital Ocean API keys, for which user init is not that.

Contributor guide

Open the contributing guide

Research direction

No file or test is named; begin by tracing kops's Digital Ocean user-init path and reproducing whether metadata user data exposes the API key. Define and validate a secure transmission approach, with done meaning unprivileged server users can no longer retrieve the key from metadata.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
cloud, infrastructure, security
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.