Habr•September 24, 2026•🇷🇺Translated from Russian

Challenges in Building Accurate SBOMs for C and C++ Projects Highlighted by CodeScoring Analysis

In ecosystems with established package indexes such as Python, Java, or JavaScript, project composition analysis typically begins with a manifest that lists direct dependencies and allowed versions. Package managers resolve these requirements, fetch transitive dependencies, and record exact versions in a lock file. C and C++ projects rarely follow this model. A single library may be installed via a system package manager, built from source in a separate pipeline, or copied directly into the project directory, leaving no unified record of all components that end up in the final binary.

CodeScoring examined these difficulties while automating SBOM generation for large codebases, including LibreOffice, which contains over one hundred C/C++ libraries plus fonts, dictionaries, and a custom build system. Without a single source of truth, each component requires separate investigation from build commands back to project name, version, and origin. The company’s analysis shows that even when a library is found through linker arguments such as -lssl or explicit paths like /opt/libs/libfoo.a, the command line rarely reveals the original project, version, or applied patches.

Build-time and runtime inventories produce two distinct SBOMs. Build-time SBOMs record libraries linked during compilation, chosen targets, and observed commands. Runtime SBOMs reflect the dynamic libraries actually loaded in a given execution environment. Reconciling the two lists is necessary because a statically linked library disappears from the runtime view, while a dynamically loaded library may be replaced by a different compatible version at launch.

When metadata is absent, Johnny falls back to normalized function signatures, binary section analysis, and strings, yet compiler optimizations and strip operations limit precision to family or version range rather than exact version. The tool marks unverifiable entries with an unresolved suffix and supports manual correction via --lib-versions files using generic PURL identifiers. CMake, Yocto, and experimental SPDX generation features already produce partial SBOMs, but any library supplied as a raw artifact still requires separate provenance work.

The resulting SBOM records must include supplier, PURL or CPE identifier, and evidence of identity. CycloneDX supports confidence levels and completeness statements, allowing analysts to avoid fabricating versions when data is insufficient. This disciplined approach prevents blind spots that arise when one type of inventory is substituted for the other.

Related articles

Habr•Supply Chain & Open Source

OIDC Configured but GitHub Actions Still Vulnerable: Megalodon and actions-cool Attacks Expose Runner Risks

Even after widespread adoption of OIDC for temporary cloud credentials in GitHub Actions, two major attacks in May 2026 demonstrated that the approach remains insufficient on its own. Attackers compromised actions-cool/issues-helper by substituting action tags to execute malicious commits that read Runner.Worker memory. The Megalodon campaign injected malicious workflows into 5,561 public repositories, harvesting environment variables, credential files, kubeconfig, SSH keys, and OIDC tokens. OIDC eliminates long-lived AWS_ACCESS_KEY_ID secrets but leaves short-lived tokens exposed inside the runner during job execution. Four mandatory protection layers are now required: strict cloud trust policies using StringEquals on the sub claim, job-level id-token: write permissions, outbound traffic controls such as Harden-Runner, and CODEOWNERS enforcement on .github/workflows/. GitHub Environments with mandatory reviewers add an essential human-approval gate that would have disrupted the Megalodon attack path.

Habr•Supply Chain & Open Source

GitHub Repo Trap with 1774 Stars Mimics Microsoft Activation Scripts to Deliver Malware via Telegram Bot

A security researcher built a Telegram bot that daily delivers five trending GitHub repositories from trendshift.io along with README summaries. One repository named Microsoft Activation Scripts contained only a README with a reversed PowerShell command that decoded to download and execute a payload from a lookalike domain. The account was created 94 seconds before the repository and used classic one-liner installation syntax to blend with legitimate projects. Analysis of 321 trending repositories showed that simple filters such as recent account age or irm|iex patterns would incorrectly flag many legitimate projects including codex and opencode. Two independent detection rules were developed: one that normalizes and scans for obfuscated execution commands including base64, mshta, certutil and hidden window flags, and another that flags one-time owners created less than 30 days before the repository with under 10 KB of content. An additional groundedness check using the AIHOT method prevents DeepSeek from inserting unverified claims such as Ruby or Cypress into repository summaries.

BoletimSec•Supply Chain & Open Source

GhostAction Campaign Expands to Inject Malicious GitHub Workflows Stealing AWS Keys and Tokens

The GhostAction campaign has returned with an expanded technique that targets a wider range of credentials across hundreds of repositories. On October 8, two compromised maintainer accounts injected a malicious workflow named security-audit.yml into 346 GitHub repositories, including high-profile projects such as uber/athenadriver and kitao/pyxel. The workflow disguises itself as a security audit routine and executes automatically on every code push, exfiltrating credentials via HTTP requests to attacker-controlled servers. Unlike previous waves that only harvested GitHub Actions secrets, the new version also scans the working directory and full git history for forgotten credentials in older commits. Targeted data includes AWS access keys, GitHub and GitLab tokens, Google API keys, Slack and SendGrid tokens, OpenAI and Anthropic credentials, PyPI passwords, and crates.io tokens. Since October 7, more than 500 GitHub accounts have planted similar workflows, building on earlier campaigns that affected 817 repositories in September 2025 and 772 between August and September.

Habr•Supply Chain & Open Source

Security Researcher Builds SAST Scanner for AI-Generated Code and Audits 3,800 Public Repositories

A developer released AigisSAST, a lightweight open-source static analysis tool written in pure Python with no external dependencies, specifically tuned to detect common mistakes made by AI coding assistants. The scanner was run across roughly 3,800 repositories ranging from small pet projects to popular open-source platforms. It identified thousands of potential secrets and misconfigurations, yet manual review reduced the number of genuine leaks to approximately 30 cases, mostly Telegram bot tokens, database credentials, and committed .env files. The project also examined 471 production-grade Telegram bots handling payments and VPN services, uncovering 31 repositories that exposed real credentials either in current code or in Git history. AigisSAST includes 21 detection rules, 193 regression tests, automatic remediation via the fix command, and seamless integration with GitHub Actions. The author deliberately avoided validating any discovered keys to stay within ethical research boundaries.