llm-CLI schickte OpenAI-Key an fremde Endpunkte
Simon Willisons Kommandozeilen-Tool llm konnte den OpenAI-Key an andere Anbieter senden. Fix in 0.37.2. Wer betroffen ist und was ihr rotieren solltet.
Das Kommandozeilen-Tool llm von Simon Willison hat in zwei Fällen den OpenAI-API-Key an einen anderen Anbieter geschickt. Betroffen sind Modelle, die man in extra-openai-models.yaml mit eigener api_base einträgt, also OpenAI-kompatible Endpunkte von Drittanbietern, Proxys oder selbst gehosteten Gateways. Version 0.37.2 vom 11.11.2026 behebt beide Fehler. GitHub stuft sie jeweils als "medium" ein.
Die zwei Wege
Fehlender Key unter api_key_name (GHSA-v9h7-jj4g-f862): Mit api_key_name gibt man an, welcher gespeicherte Key an den fremden Endpunkt gehen soll. War unter diesem Namen nichts gespeichert, fiel llm stillschweigend auf die Umgebungsvariable OPENAI_API_KEY zurück und schickte deren Wert als Authorization: Bearer an die api_base. Dafür reicht ein Tippfehler im Namen, ein vergessenes llm keys set oder ein frischer Rechner, auf dem nur OPENAI_API_KEY gesetzt ist. Betroffen sind alle Versionen ab 0.6 vom Juli 2023 bis 0.37.1.
Option -o chat_completions 1 (GHSA-r639-rr7r-x72w): Bei Modellen mit responses: true und ohne api_key_name schaltet diese Option auf die Chat-Completions-Schnittstelle um. Das dafür intern erzeugte Modell vergaß, dass es keinen OpenAI-Key braucht, und schickte den gespeicherten openai-Key oder OPENAI_API_KEY an die api_base. Die Dokumentation sagte für genau diesen Fall das Gegenteil. Betroffen sind 0.32a2 bis 0.37.1.
Gemerkt hat man davon nichts. Eine Warnung, dass der falsche Key rausging, gab es in keinem der beiden Fälle.
Was ihr tun solltet
- Aktualisieren:
pip install -U llmoderuv tool upgrade llm, danachllm --versionprüfen. Ab 0.37.2 bricht llm mit einer Fehlermeldung ab, wenn der genannte Key fehlt. - Prüfen, ob ihr betroffen sein könntet: Habt ihr in
extra-openai-models.yaml(zu finden überdirname "$(llm logs path)") Modelle mitapi_baseeingetragen und gleichzeitigOPENAI_API_KEYgesetzt oder einenopenai-Key gespeichert? Dann ist mindestens einer der beiden Wege möglich. - Key rotieren: Kommt das in Frage, den OpenAI-Key im OpenAI-Dashboard neu erzeugen. Er kann bei jedem Anbieter gelandet sein, dessen Endpunkt ihr eingetragen habt, und ob der Anbieter Request-Header protokolliert, wisst ihr nicht.
Wer den Fallback auf eine Umgebungsvariable bisher bewusst genutzt hat, um einen Drittanbieter-Key über OPENAI_API_KEY zu übergeben, muss ihn jetzt mit llm keys set <name> speichern.
Gefunden mit KI
Laut beiden Meldungen fiel der Fehler bei einer KI-gestützten Durchsicht der Dokumentation auf. Die Dokumentation sagte etwas zu, was der Code nicht einhielt. Der Melder hat beide Fälle danach selbst reproduziert und Patches samt Tests mitgeliefert.