Informationen zu Tokendaten im Überwachungsprotokoll
Im Überwachungsprotokoll deines Unternehmens zeigen die Ereignisdaten für alle Aktionen, die mit einem personal access token oder einer OAuth app für die Authentifizierung ausgeführt wurden, die verwendete Authentifizierungsmethode und den SHA-256-Hash des Tokens an.
Wenn du erfährst, dass ein Token kompromittiert wurde, kannst du die Aktionen des kompromittierten Tokens nachvollziehen, indem du das Überwachungsprotokoll deines Unternehmens nach allen Ereignissen durchsuchst, die diesem Token zugeordnet sind.
Hashtokenwerte sind beim Exportieren des Überwachungsprotokolls nicht enthalten.
Suchen nach Ereignissen, die einem Token zugeordnet sind
Wenn du nach Ereignissen suchst, die einem bestimmten Token zugeordnet sind, kannst du die Benutzeroberfläche oder die REST-API verwenden. In beiden Fällen musst du den SHA-256-Hash des Tokens kennen.
Generieren eines SHA-256-Hashwerts für ein Token
Wenn du nur über einen unformatierten Tokenwert verfügst, musst du einen SHA-256-Hash generieren, bevor du nach dem Token suchen kannst.
Für MacOS und Linux kannst du echo -n TOKEN | openssl dgst -sha256 -binary | base64
verwenden. Ersetze dabei TOKEN durch den Tokenwert.
Für PowerShell kannst du das folgende Skript verwenden, um einen SHA-256-Hash für eine bestimmte Zeichenfolge zurückzugeben.
Param ( [Parameter(Mandatory=$true)] [string] $ClearString ) $hasher = [System.Security.Cryptography.HashAlgorithm]::Create('sha256') $hash = $hasher.ComputeHash([System.Text.Encoding]::UTF8.GetBytes($ClearString)) $hashString = [System.BitConverter]::ToString($hash) $hashString.Replace('-', '')
Param (
[Parameter(Mandatory=$true)]
[string]
$ClearString
)
$hasher = [System.Security.Cryptography.HashAlgorithm]::Create('sha256')
$hash = $hasher.ComputeHash([System.Text.Encoding]::UTF8.GetBytes($ClearString))
$hashString = [System.BitConverter]::ToString($hash)
$hashString.Replace('-', '')
Suchen auf GitHub
Schließe beim Durchsuchen des Überwachungsprotokolls auf GitHub
hashed_token:"VALUE"
in deine Suchabfrage ein, und ersetze VALUE
durch den SHA-256-Hash des Tokens.
Hinweis: Setze den Hashtokenwert unbedingt in Anführungszeichen.
Suchen mit der REST-API
Damit du mithilfe der REST-API nach einem Token suchen kannst, musst du nach dem Generieren eines SHA-256-Hashs den Hash ebenfalls mit dem URI als Escapezeichen versehen. Die meisten gängigen Programmiersprachen bieten ein Hilfsprogramm für die Verwendung des URI als Escapezeichen. Beispielsweise wird mit encodeURIComponent() eine Zeichenfolge für JavaScript codiert.
Füge dann hashed_token:"VALUE"
in deinen Suchbegriff ein, und ersetze VALUE durch den Hash, den du mit dem URI als Escapezeichen versehen hast.
Wenn der Name des Unternehmenskontos beispielsweise octo-corp
lautet, durchsucht der folgende cURL-Befehl das Überwachungsprotokoll von @octo-corp nach allen Ereignissen, die dem Token zugeordnet sind, dessen URI-codierter SHA-256-Hash EH4L8o6PfCqipALbL%2BQT62lyqUtnI7ql0SPbkaQnjv8
lautet.
curl --header "Accept: application/vnd.github+json" --header "Authorization: Bearer YOUR-TOKEN" --header "X-GitHub-Api-Version:2022-11-28" 'https://api.github.com/enterprises/octo-corp/audit-log?phrase=hashed_token:"EH4L8o6PfCqipALbL%2BQT62lyqUtnI7ql0SPbkaQnjv8"'