Files
git.stella-ops.org/docs/features/unchecked/binaryindex/symbol-source-connectors.md

2.3 KiB

Symbol Source Connectors (Debuginfod, Buildinfo, Ddeb, SecDb)

Module

BinaryIndex

Status

IMPLEMENTED

Description

Four symbol source connector implementations (Debuginfod, Debian Buildinfo, Ubuntu Ddeb, Alpine SecDb), each with plugin registration and configuration support.

Implementation Details

  • Modules: src/BinaryIndex/__Libraries/StellaOps.BinaryIndex.Corpus/, src/BinaryIndex/__Libraries/StellaOps.BinaryIndex.Corpus.Alpine/, src/BinaryIndex/__Libraries/StellaOps.BinaryIndex.Corpus.Debian/, src/BinaryIndex/__Libraries/StellaOps.BinaryIndex.Corpus.Rpm/
  • Key Classes:
    • Alpine SecDb: AlpineCorpusConnector (src/BinaryIndex/__Libraries/StellaOps.BinaryIndex.Corpus.Alpine/AlpineCorpusConnector.cs) - connects to Alpine security database; ApkBuildSecfixesExtractor - extracts secfixes from APK build files
    • Debian Buildinfo: DebianCorpusConnector (src/BinaryIndex/__Libraries/StellaOps.BinaryIndex.Corpus.Debian/DebianCorpusConnector.cs) - connects to Debian buildinfo sources; DebianMirrorPackageSource - mirrors Debian repositories
    • RPM: RpmCorpusConnector (src/BinaryIndex/__Libraries/StellaOps.BinaryIndex.Corpus.Rpm/RpmCorpusConnector.cs) - connects to RPM repositories; SrpmChangelogExtractor - extracts changelogs from source RPMs
    • Library-specific: CurlCorpusConnector, GlibcCorpusConnector, OpenSslCorpusConnector, ZlibCorpusConnector (src/BinaryIndex/__Libraries/StellaOps.BinaryIndex.Corpus/Connectors/)
  • Interfaces: IBinaryCorpusConnector, ILibraryCorpusConnector, IAlpinePackageSource, IDebianPackageSource, IRpmPackageSource
  • Package Extractors: AlpinePackageExtractor, DebianPackageExtractor, RpmPackageExtractor - extract binaries from packages using IBinaryFeatureExtractor

E2E Test Plan

  • Connect via AlpineCorpusConnector and verify secfixes data is extracted from APK builds
  • Connect via DebianCorpusConnector and verify buildinfo data is retrieved from Debian mirrors
  • Connect via RpmCorpusConnector and verify RPM changelog extraction works
  • Verify library-specific connectors (OpenSSL, glibc, curl, zlib) retrieve correct binary versions
  • Verify all connectors produce CorpusSnapshot with consistent snapshot IDs
  • Verify package extractors use IBinaryFeatureExtractor to extract identity features from packages