Fix Byte-Order-Mark Fehler beim BOM Upload über eine Azure DevOps Pipeline
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:
- dependencytrack.org
- https://medium.com/devroot/deploying-dependency-track-as-a-container-in-azure-and-building-a-pipeline-with-azure-devops-ab1627961114
- https://de.wikipedia.org/wiki/Byte_Order_Mark
- https://github.com/DependencyTrack/dependency-track/issues/1214
Dieser Tipp kommt aus Berlin von Mathias Gontek.