Authorized offensive security

Adversarial testing across your stack.

Manual, exploit-oriented assessment of web applications, native clients, APIs, and cloud control planes. Findings are evidence-backed, mapped to reachable impact, and closed with a retest.

  • Authorized onlyWritten rules of engagement before any traffic.
  • Exploit-backedReproduction and a reachable path, not a scanner export.
  • Retest includedOne pass on the in-scope fix is part of the work.

News

Latest briefings and CVEs

The news desk: cybersecurity stories and high-severity vulnerabilities, newest publish date first.

Latest news

All news →

News Vulnerabilities

Active Exploitation of SiteGuard Server Edition OS Command Injection Vulnerability

Threat actors are actively exploiting a critical OS command injection vulnerability in SiteGuard Server Edition, tracked as CVE-2026-106931. The flaw resides in the default statistics component and grants unauthenticated remote execution with root or SYSTEM privileges. SecOps and sysadmins running affected WAF installations must apply vendor patches immediately.

Read briefing

News Threat Intel

Detecting Orphaned VBA Projects Embedded Within AutoCAD DWG Files

Security analysts have identified a technique involving orphaned VBA macro projects embedded inside AutoCAD DWG files. This briefing outlines the underlying file structure mechanics, provides a YARA detection rule to identify anomalous artifacts, and details defensive remediation steps for SecOps teams.

News Advisories

ConnectWise Suspends Cloud Backup After Microsoft 365 Tenant Compromise

ConnectWise disabled seven application identities after attackers gained unauthorized access to Microsoft 365 tenants, suspending its Cloud Backup service. Defenders should verify affected identities, review backup status, audit logs, revoke tokens, and monitor for lateral movement.

Trending CVEs

All CVEs →

high CVSS 7.1

CVE-2026-98858

In the Linux kernel, the following vulnerability has been resolved: io_uring: fix task_work add use-after-free with SQPOLL For SQPOLL, the sqpoll thread runs task_work off its own list and doesn't need to be told about it, so it can pop and complete a request as soon as mpscq_push() has published it. If that was the last request holding the ring alive, io_ring_exit_work() then frees the ctx, stops the thread, and with it the tctx, while io_req_normal_work_add() is still looking at both after the push: BUG: KASAN: slab-use-after-free in io_req_normal_work_add+0x439/0x510 Read of size 4 at addr ff11000000ca0000 by task repro/55 (...) BUG: KASAN: slab-use-after-free in queue_work_on+0x25/0x70 Write of size 8 at addr ff11000000c3bd00 by task repro/55 Hold an RCU read lock across the add, like io_req_local_work_add() already does, and have io_ring_exit_work() wait for a grace period for SQPOLL rings as well before freeing the ctx.

high CVSS 7.1

CVE-2026-98862

In the Linux kernel, the following vulnerability has been resolved: audit: fix exe mark UAF in kill_rules() kill_rules() removes mixed AUDIT_DIR and AUDIT_EXE rules when an audit tree is pruned. It drops entry->rule.exe before removing the rule from the RCU-visible filter lists. After a rule has been installed with AUDIT_ADD_RULE, which requires CAP_AUDIT_CONTROL, removing the watched directory can race with another task that is still evaluating the rule. In that case, fsnotify can free the executable mark before the reader reaches audit_mark_compare(), causing a use-after-free. KASAN reports: BUG: KASAN: slab-use-after-free in audit_mark_compare+0x8d/0xa0 Unlink the published rules from the RCU-visible lists and retain them on tree->rules for cleanup. If any rule has an executable mark, wait for a single RCU grace period before removing the marks and scheduling the entries for freeing. Otherwise, call_rcu() already provides the required deferred freeing without a synchronous wait.

high CVSS 7.8

CVE-2026-98804

In the Linux kernel, the following vulnerability has been resolved: net: page_pool: fix use-after-free in page_pool_recycle_ring_bulk() With CONFIG_PAGE_POOL_STATS=y, page_pool_recycle_ring_bulk() updates the recycle stats after dropping the producer lock. If it just recycled the last inflight netmems of a pool being destroyed, page_pool_release() can pass its producer-lock barrier and free the pool before recycle_stat_add() runs. Commit fcc680a647ba7 ("page_pool: allow mixing PPs within one bulk") moved this stat update after the unlock. Commit 271683bb2cf32 ("page_pool: Fix use-after-free in page_pool_recycle_in_ring") later added the barrier, but only fixed page_pool_recycle_in_ring(). Move the update back under the lock.

high CVSS 7.1

CVE-2026-98807

In the Linux kernel, the following vulnerability has been resolved: net/mlx5: Fix slab-out-of-bounds when handling team device events The mlx5_handle_changeupper_event() and mlx5_handle_changeinfodata_event() functions check for LAG masters (which includes both bonding and team devices) but only call bonding-specific APIs. When processing team device events, calling bond_slave_get_rcu() and bond_is_slave_inactive() on team_port structures causes KASAN to detect an out-of-bounds memory access since team_port is smaller than bond slave. Fix this by wrapping the bond-specific API calls with a check for bonding devices. This allows the function to still process LAG events for both bonding and teams but only calls bond-specific functions when dealing with actual bonding devices. For mlx5_handle_changeinfodata_event(), keep the explicit bond check as mlx5 doesn't handle state information for team ports anyway. Tested with Mellanox ConnectX-5 on Linux 7.2.0-rc6: - Bonding: PASS (no regressions) - Team device: PASS (no KASAN errors)

Pentesting

Four surfaces. One assessment practice.

Coverage is aligned to OWASP, MASVS, and CIS where it is useful — not as a checklist. The output is a prioritized set of reachable issues your engineers can close this cycle.

  • Web & API: authn/z, object-level access, injection, file handling
  • iOS / Android: storage, crypto, pinning, deep links, backend trust
  • Cloud: IAM, public exposure, secrets, workload and Kubernetes config
  • AppSec: threat models, design review, CI/CD and dependency risk, retest
  • Web The browser app, tested as a signed-in user and as an admin.
    • Sessions, cookies, and password reset
    • Pages and actions each role can reach
    • Data that leaks across tenants
  • API The calls the app makes, checked as more than one identity.
    • Object access with another user’s id
    • Tokens, scopes, and missing checks
    • Injection and file handling on those routes
  • Cloud The account around the app, not a checklist of every setting.
    • Roles that can move sideways
    • Public storage and exposed secrets
    • A key or pipeline that reaches production
  • Mobile The installed app treated as hostile, including the API behind it.
    • Local storage, keychain, and tokens
    • Deep links and pinning
    • A backend that trusts the client

Web & API

Browser apps, SPAs, and the APIs they call — tested as more than one role.

  • Session, JWT, and object-level access
  • Injection, SSRF, file handling
  • Multi-tenant isolation

Mobile

iOS and Android clients treated as hostile, not as a security boundary.

  • Storage, keychain, and local crypto
  • Pinning, deep links, IPC
  • Backend trust and certificate misuse

Cloud

Identities and control planes, not a generic CIS dump of every checkbox.

  • IAM, trust policies, public exposure
  • Secrets, metadata, workload roles
  • Kubernetes and pipeline reachability

AppSec

Design and delivery risk when a full exploit pass is not the first need.

  • Threat models and design review
  • CI/CD and dependency exposure
  • Retest of a scoped remediation

About

A practice built around the path to root

RootPwn is an authorized offensive-security practice. We do not run unsolicited tests, sell scan exports, or grade severity without a reachable path. Engagements stay tight: scoped assets, real roles, reproducible evidence, and remediation that matches how the system is actually built. Retest of an in-scope fix is included.

What we will and will not do

Work starts only after the asset owner authorizes it in writing. We test as the roles you name — anonymous, user, admin, service — and we stop at the boundary you set. If a chain leaves scope, we record the edge and ask before continuing.

We do not replace your scanner subscription, issue a certification, or inflate severity to fill a report. If we cannot demonstrate impact, it is not a finding.

  1. 01 — Authorization Written rules of engagement from the owner of the assets.
  2. 02 — Named scope Apps, APIs, identities, and environments listed before traffic.
  3. 03 — Evidence first Reproduction and impact before a severity label.
  4. 04 — Close the loop Retest of an in-scope fix is part of the engagement.
Authorized only No unsolicited testing. No traffic until the owner signs the rules of engagement.
Manual-first Authentication, access control, and business logic — the paths scanners miss.
Retest included One retest of an in-scope remediation is in the engagement, not a change order.

Attack surface

Privilege paths we pressure first

Production compromise is usually a chain: a weak control, a trusted client, an over-privileged identity. We start where that chain is cheapest to pull.

Authorization

BOLA/IDOR, vertical privilege escalation, and multi-tenant isolation failures across session, JWT, and object-level checks.

Cloud IAM

Trust policies, public storage, metadata services, and lateral movement from a single over-scoped role or leaked key.

Client trust

Insecure local storage, pinning bypass, IPC, and APIs that treat the mobile or SPA client as a security boundary.

  • Intake What you run, where it runs, and when you need the result.
    • Product, environments, and identity model
    • A written scope before any traffic
    • A start window you agree to
  • Assess Manual testing as the roles you name.
    • Authenticated and unauthenticated paths
    • A chain followed to reachable impact
    • Work stops at the boundary you set
  • Report Written for the engineer who has to ship the fix.
    • Steps that replay the issue
    • Evidence and the reachable impact
    • A concrete remediation
  • Retest One pass on the patch that was in scope.
    • The same role and the same path
    • Confirm the issue is closed
    • Residual risk stated if it is not

Methodology

Authenticated, manual, exploit-backed

We inventory in-scope apps, APIs, identities, and cloud assets, then test as a privileged and unprivileged user. Work is manual-first: authentication, session handling, access control, injection, deserialization, SSRF, and business-logic abuse that scanners miss. Each issue ships with reproduction, impact, and a concrete fix — then we retest the patch.

Process

How an engagement actually runs

No surprise traffic. Scope, roles, and a start window are agreed first. The report is written for the engineer who has to fix the issue — then we retest.

  1. 01 Intake

    Product, environments, identity model, and deadline. We reply with a proposed scope.

  2. 02 Rules of engagement

    Named assets, roles, out-of-scope edges, and a written authorization from the owner.

  3. 03 Manual assessment

    Authenticated testing across the agreed surfaces. Chains are pursued to reachable impact.

  4. 04 Report

    Reproduction, evidence, impact, and a concrete fix — prioritized, not padded.

  5. 05 Retest

    The in-scope patch is retested. Residual risk is stated plainly if anything remains.

Sample finding shape Not a client report — the format we deliver

Object-level access on invoice API

Reproduction
Reachable impact
AuthzBOLA / IDOR FixServer-side check RetestIncluded

Reproduction

Role, request, and steps an engineer can replay. No “tool said so” findings.

Impact

Severity follows a reachable path — data, identity, or control — not a CVSS guess in isolation.

Fix and retest

A concrete remediation, then one retest of that in-scope change.

Questions

Before you send a request

Short answers to what teams usually ask before they authorize an assessment.

Do you test systems without permission?

No. We do not run unsolicited tests. Written authorization from the asset owner is required before any traffic is sent.

Can you test production?

Yes, when the rules of engagement say so. Staging is often cleaner for destructive checks. We agree environments, rate limits, and stop conditions up front.

Is this a scan or a certification?

Neither. We do not sell scanner exports or issue a compliance badge. The output is a prioritized set of reachable issues with reproduction and a fix.

What do you need from us to start?

The product, environments (prod / staging), identity model, in-scope assets, and any deadline. After intake we send a proposed scope, rules of engagement, and a start window.

Is a retest included?

Yes. One retest of an in-scope fix is part of the engagement. Out-of-scope work or a new surface is a separate scope.

Who is this not for?

Teams that want an unsolicited test, a checkbox scan, or a report without authorization. If you do not own the asset, we will not test it.

Engagement intake

Request a scoped assessment

Choose your email provider, then pick a primary focus. We open a draft to [email protected] with subject and details filled for that focus — complete the blanks and send. No traffic is sent without written authorization from the asset owner.

Choose email provider