Skip to content
View thesmartshadow's full-sized avatar
🎯
Focusing
🎯
Focusing

Block or report thesmartshadow

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
thesmartshadow/README.md

Ali Firas

Open-Source Security Researcher

I audit open-source software, reproduce security flaws, work with maintainers on remediation, and follow issues through fixes, regression coverage, advisories, releases, and downstream distribution updates.

GitHub Advisories · HackerOne · LinkedIn · MSRC Special Recognition

What I work on

My work is centered on source-code auditing and open-source vulnerability research. I am most interested in flaws that cross trust boundaries quietly: authorization mistakes, unsafe file handling, parser failures, shared state, archive extraction, command construction, memory safety, and resource limits that are enforced too late.

A useful report should leave a project with more than a finding. I try to provide a small reproducible case, affected-version analysis, a clear root cause, and a practical fix. When it makes sense, I also write the patch and regression tests myself.

Selected ecosystem impact

CISA manage.get.gov

Reported a high-impact authorization flaw that allowed a view-only organization member to perform privileged member-management actions. The report was validated through a real application flow and led to an upstream fix and an official GitHub Security Advisory rated 8.1 High.

GHSA-hfq4-89cf-8p8j · Fix PR #5049

CoreDNS

Reported a remote, unauthenticated denial-of-service issue in the DNS-over-HTTPS GET path. Oversized dns query values caused expensive parsing, Base64 decoding, and DNS message processing before validation rejected the request. The fix shipped in CoreDNS 1.14.3, and the advisory credits thesmartshadow as the reporter.

CVE-2026-32936 · GHSA-63cw-r7xf-jmwr · GO-2026-5164

jq

Reported a path-resolution inconsistency caused by embedded NUL bytes in jq import paths. A policy layer could approve the full logical import name while jq resolved and opened a different local module or data file, breaking trust assumptions around policy loading and redaction. The issue was fixed in jq 1.8.2 and later tracked by major Linux and cloud vendors.

CVE-2026-43895 · GHSA-7q7g-mrq3-phxr

Microsoft APM

Reported a symlink-handling flaw in the installation of remote APM packages. Package-controlled links inside .apm/prompts/ or .apm/agents/ could be followed during installation, copying local file contents into generated assistant directories such as .claude, .codex, .cursor, and .github. Microsoft fixed the issue in APM 0.13.0.

CVE-2026-45539 · GHSA-q5pp-gvjg-h7v4

libheif

Reported a heap out-of-bounds write in the uncompressed encoder when auxiliary alpha-plane dimensions did not match the primary image. The encoder sized its output using the primary image while copying component data using the component plane's actual size. The project fixed the issue in libheif 1.23.1.

CVE-2026-62291 · GHSA-xpw3-9rhw-482x

RubyGems

Authored and shipped a symlink-aware extraction boundary fix for RubyGems. The patch prevents a pre-existing symlink inside the destination tree from redirecting extracted files outside the intended directory and includes regression coverage. It was released in RubyGems 4.0.13 with credit to thesmartshadow.

PR #9493 · RubyGems 4.0.13 release

rust-openssl

Reported an out-of-bounds write in CipherCtxRef::cipher_update_inplace for AES key-wrap-with-padding ciphers. Non-aligned input could cause OpenSSL to write beyond the caller-provided buffer, and the affected method had been missed by an earlier security fix. The issue was fixed in the openssl crate 0.10.80.

CVE-2026-45784 · GHSA-phqj-4mhp-q6mq

systeminformation

Reported command injection in the Linux networkInterfaces() path through attacker-controlled NetworkManager connection-profile names. The issue was reproduced with the real nmcli flow, where simply calling the API could reach vulnerable shell commands. The project fixed the issue in systeminformation 5.31.6.

CVE-2026-44724 · GHSA-hvx9-hwr7-wjj9 · Project security page

Rack

Discovered a stored XSS condition in Rack::Directory through unsafe handling of attacker-controlled file names. The fix was released across supported Rack branches and later reached Ubuntu, Debian, and SUSE security updates. Ubuntu credited me by name in its security notice.

CVE-2026-25500 · GHSA-whrj-4476-wvmp · Ubuntu USN-8066-1 · Debian DSA-6180-1 · SUSE

RustFS

Reported a missing source-authorization check in the multipart copy path. A low-privileged tenant without read access to a private source object could copy it into a multipart upload under their own control and retrieve the completed object. The end-to-end reproduction confirmed cross-bucket data exposure with matching file size and SHA-256.

CVE-2026-39360 · GHSA-mx42-j6wv-px98

Upstream patches I authored

These are changes I wrote that were accepted into projects outside my own account:

  • RubyGems #9493, confine extraction when destination paths contain pre-existing symlinks; released in RubyGems 4.0.13
  • CEL-Go #1302, enforce expression-size limits before source-buffer allocation, with regression and allocation tests
  • Google zx #1349, prevent cleanup from deleting an external node_modules directory; later published as CVE-2025-13437
  • Ruby JSON #948, reject negative generator depth before native hangs or crashes
  • Google HumanIO #4, stop source-file exposure and move a hard-coded service token to environment configuration
  • httparse #217, document strict limits for repeated parsing of growing partial buffers

Additional published security research

Published CVE record, 23 entries

2026

2025

Downstream distribution and vendor tracking

Rack, CVE-2026-25500

jq, CVE-2026-43895

CoreDNS, CVE-2026-32936

rust-openssl, CVE-2026-45784

systeminformation, CVE-2026-44724

How I approach a project

I start with the trust boundary, not a scanner result. I trace how external data reaches file operations, parsers, authorization checks, process execution, shared state, cryptographic buffers, or resource allocation. When something looks wrong, I reduce it to the smallest realistic reproduction I can build and test it against clean versions.

I also try to keep severity separate from technical validity. Some findings are vulnerabilities, some are hardening opportunities, and some should remain ordinary bugs. The goal is to give maintainers evidence they can act on without forcing a security label where it does not belong.

Current interests

  • Package managers and archive extraction
  • Authorization and multi-tenant isolation
  • Parsers and malformed-input handling
  • Memory safety and cryptographic bindings
  • Developer tools, AI tooling, and CI workflows
  • Linux and systems software
  • Supply-chain security
  • Patch analysis and incomplete fixes

Contact

For coordinated disclosure or open-source security collaboration:

Pinned Loading

  1. ai ai Public

    Forked from vercel/ai

    The AI Toolkit for TypeScript. From the creators of Next.js, the AI SDK is a free open-source library for building AI-powered applications and agents

    TypeScript

  2. docsy docsy Public

    Forked from google/docsy

    Hugo theme for open source documentation

    JavaScript

  3. expr expr Public

    Forked from expr-lang/expr

    Expression language and expression evaluation for Go

    Go

  4. freertos-sys2 freertos-sys2 Public

    Forked from junelife/freertos-sys2

    Rust

  5. humanio humanio Public

    Forked from google/humanio

    Human I/O, published at CHI 2024, Honorable Mentions Award

    JavaScript

  6. rack rack Public

    Forked from rack/rack

    A modular Ruby web server interface.

    Ruby