Fix Byte-Order-Mark Fehler beim BOM Upload über eine Azure DevOps Pipeline

Wir nutzen für einige unserer Projekte Dependency Track (1). Dependency Track ist eine Software, die dazu verwendet wird, die Abhängigkeiten von Softwareprojekten zu verfolgen und zu überwachen.

Es ermöglicht es Entwicklern, potenzielle Sicherheitsrisiken in Abhängigkeiten zu identifizieren und zu verwalten, indem es automatisch Sicherheitswarnungen für bekannte Schwachstellen generiert. Es hilft auch dabei, die Compliance mit Unternehmensrichtlinien und Branchenstandards zu überwachen und zu gewährleisten, dass nur sichere und erlaubte Abhängigkeiten verwendet werden. Wie man diesen für sich einrichtet, kann man sehr schön Step für Step hier (2) nachlesen.

Seit kurzen aber wird das Projekt aber nicht mehr aktualisiert, wenn man versucht, das BOM über eine Azure DevOps Pipeline hochzuladen. Die Pipeline zeigt keine Fehler, man sieht es nur, wenn man auf dem DependencyTrack Server in die Logs schaut. Dort findet man dann folgende Fehlermeldung:

WARN [BomUploadProcessingTask] The BOM uploaded is not in a supported format. Supported formats include CycloneDX XML and JSON

Problem ist, dass die neueren Versionen von CycloneDX die BOM-Datei mit einem Byte-Order-Mark (wird ebenfalls mit BOM abgekürzt) (3)(4) versehen. Vor dem Upload muss man dieses entfernen. Hierzu verwenden wir folgendes Powershell-Script:

$BomPath = „$(Build.ArtifactStagingDirectory)/BOM/bom.xml“
$BomRawString = Get-Content -Raw $BomPath
$Utf8NoBomEncoding = New-Object System.Text.UTF8Encoding $False
[System.IO.File]::WriteAllLines($BomPath, $BomRawString, $Utf8NoBomEncoding)

Nun funktioniert alles wieder :)

Links:

  1. dependencytrack.org
  2. https://medium.com/devroot/deploying-dependency-track-as-a-container-in-azure-and-building-a-pipeline-with-azure-devops-ab1627961114
  3. https://de.wikipedia.org/wiki/Byte_Order_Mark
  4. https://github.com/DependencyTrack/dependency-track/issues/1214

 

Dieser Tipp kommt aus Berlin von Mathias Gontek.