<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: facilishz</title>
    <description>The latest articles on DEV Community by facilishz (@facilishz).</description>
    <link>https://dev.to/facilishz</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4183994%2Ffd88c2b9-a264-42db-ab72-a7e58239788c.png</url>
      <title>DEV Community: facilishz</title>
      <link>https://dev.to/facilishz</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/facilishz"/>
    <language>en</language>
    <item>
      <title>Python tarfile extraction needs an explicit filter policy</title>
      <dc:creator>facilishz</dc:creator>
      <pubDate>Wed, 04 Nov 2026 13:02:06 +0000</pubDate>
      <link>https://dev.to/facilishz/python-tarfile-extraction-needs-an-explicit-filter-policy-38p</link>
      <guid>https://dev.to/facilishz/python-tarfile-extraction-needs-an-explicit-filter-policy-38p</guid>
      <description>&lt;h1&gt;
  
  
  Python tarfile extraction needs an explicit filter policy
&lt;/h1&gt;

&lt;p&gt;An archive extractor turns bytes supplied by someone else into filesystem writes. That makes every extraction path a write primitive, even when the code never runs a shell command. Python's &lt;code&gt;tarfile&lt;/code&gt; module now exposes a set of extraction filters for this problem, but a service still has to select one and keep that choice stable across supported Python versions.&lt;/p&gt;

&lt;h2&gt;
  
  
  The unsafe part is the destination path
&lt;/h2&gt;

&lt;p&gt;A tar archive can contain ordinary files, symbolic links, hard links, device nodes, absolute paths, and members with &lt;code&gt;..&lt;/code&gt; components. An extractor that trusts those names can write outside the intended directory or create a link that makes a later write escape it. The archive format does not carry a promise that every member belongs under one clean root. The application has to enforce that rule.&lt;/p&gt;

&lt;p&gt;The Python 3.12 documentation supplies &lt;code&gt;tarfile.data_filter&lt;/code&gt; for data archives and also documents privileged filters for archives that need broader behavior. The data filter rejects paths that escape the destination, blocks unsafe links, and rejects special files. Applications that only need regular files and directories should prefer the narrower behavior.&lt;/p&gt;

&lt;h2&gt;
  
  
  Make the filter visible in the call
&lt;/h2&gt;

&lt;p&gt;An explicit argument is easier to audit than a global side effect:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;tarfile&lt;/span&gt;

&lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="n"&gt;tarfile&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;archive_path&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;r:*&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;archive&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;archive&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;extractall&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;destination&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nb"&gt;filter&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;data&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Code that carries a custom policy can pass a callable instead. A callable should inspect the member and return either a safe replacement member or &lt;code&gt;None&lt;/code&gt;. It should reject absolute paths, parent traversal, unexpected device files, and links whose resolved destination is outside the extraction root. Raising an exception is often clearer than silently skipping a hostile member because the caller then knows that the transaction did not complete as expected.&lt;/p&gt;

&lt;h2&gt;
  
  
  Version defaults still need an inventory
&lt;/h2&gt;

&lt;p&gt;The filter interface is available on supported branches, but defaults differ by Python release. A service that relies on the interpreter default can behave differently after a base image upgrade. Use &lt;code&gt;hasattr(tarfile, "data_filter")&lt;/code&gt; to check feature availability, then set &lt;code&gt;extraction_filter&lt;/code&gt; or the &lt;code&gt;filter&lt;/code&gt; argument explicitly in code. Do not use a version number as the only capability test when the runtime has been patched or rebuilt by a distribution.&lt;/p&gt;

&lt;p&gt;There is another operational detail in the documentation: an extraction that aborts can leave a partial tree. Treat the destination as untrusted until the whole operation succeeds. Extract into a fresh staging directory, validate the resulting tree, and move it into place only after success. That prevents a failed request from leaving files at paths that a later process mistakes for valid state.&lt;/p&gt;

&lt;h2&gt;
  
  
  Controls that survive a retry
&lt;/h2&gt;

&lt;p&gt;Use a dedicated unprivileged account for extraction. Mount the staging area with &lt;code&gt;nodev&lt;/code&gt;, &lt;code&gt;nosuid&lt;/code&gt;, and &lt;code&gt;noexec&lt;/code&gt; when the extracted content does not need those capabilities. Apply a file count and total expanded size limit before accepting the request. Keep the archive and the extracted output on the same controlled volume so a rename is atomic. Log the parser version, selected filter, member count, expanded bytes, and failure reason.&lt;/p&gt;

&lt;p&gt;These controls do not prove that every file is harmless. They make the extraction boundary predictable and give the next process a clean object to inspect. The filter is part of the security model, not a decoration on the &lt;code&gt;extractall&lt;/code&gt; call.&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;p&gt;[1] &lt;a href="https://docs.python.org/3.12/library/tarfile.html" rel="noopener noreferrer"&gt;Python 3.12 tarfile documentation&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;[2] &lt;a href="https://docs.python.org/3/library/tarfile.html#extraction-filters" rel="noopener noreferrer"&gt;Python tarfile extraction filter documentation&lt;/a&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>archivesecurity</category>
      <category>sandboxing</category>
    </item>
    <item>
      <title>FOSSology title matches mark a small license-review surface</title>
      <dc:creator>facilishz</dc:creator>
      <pubDate>Wed, 04 Nov 2026 09:41:53 +0000</pubDate>
      <link>https://dev.to/facilishz/fossology-title-matches-mark-a-small-license-review-surface-3mna</link>
      <guid>https://dev.to/facilishz/fossology-title-matches-mark-a-small-license-review-surface-3mna</guid>
      <description>&lt;h1&gt;
  
  
  FOSSology title matches mark a small license-review surface
&lt;/h1&gt;

&lt;p&gt;License scanning systems sit beside source code, build artifacts, supplier packages, and legal decisions. That makes them useful reconnaissance targets even when their public footprint is small. A count-only ZoomEye query found no application fingerprint for FOSSology but 28 title matches on 2026-11-04. The result is a lead for asset review, not a vulnerability finding.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the observed surface represents
&lt;/h2&gt;

&lt;p&gt;The query &lt;code&gt;app="FOSSology"&lt;/code&gt; returned 0. The complementary query &lt;code&gt;title="FOSSology"&lt;/code&gt; returned 28. Both ran with &lt;code&gt;sub_type=all&lt;/code&gt;, page 1, and pagesize 1 at 07:49 Asia/Shanghai. The page size limits returned records; the reported total is the match count. The zero app result does not prove that no FOSSology instance is exposed. It means ZoomEye's application fingerprint did not identify one in this query.&lt;/p&gt;

&lt;p&gt;The title count is also not a count of organizations. A reverse proxy, a themed login page, or a documentation mirror can produce a title. A single organization can expose several assets. Treat the number as a population estimate for an inventory task and verify ownership before drawing conclusions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the system deserves its own inventory
&lt;/h2&gt;

&lt;p&gt;FOSSology supports license and copyright analysis through a web interface and REST API. Its API documentation describes token-based access, and the current project documentation notes OpenID Connect authentication options. The sensitive material is not only the scanner configuration. Uploaded source packages, scan results, report links, and integration tokens can reveal suppliers, unreleased products, and software composition.&lt;/p&gt;

&lt;p&gt;An internet-facing instance may be intentional for a distributed legal or engineering team. The review question is whether the public endpoint needs to serve every function. A read-only report portal can have a different exposure profile from an administrative scanner that imports source packages. Separate the routes if the application permits it, or place the administrative console behind a private access layer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Checks that produce evidence
&lt;/h2&gt;

&lt;p&gt;Start with the public hostname and its TLS certificate. Identify the owning business unit, the environment, and the deployment version. Authenticate through the intended flow and list users, API tokens, and integration clients. Confirm that anonymous users cannot list uploads, reports, jobs, or agent status. Check the upload path for file-size limits and a private staging volume.&lt;/p&gt;

&lt;p&gt;Review the API token scope. A token used by a build pipeline should not be able to create administrators or read unrelated projects. Rotate tokens after staff changes and record their owner. If OpenID Connect is enabled, verify issuer, audience, redirect URI, and group mapping against the identity provider.&lt;/p&gt;

&lt;p&gt;Monitor authentication failures, upload activity, report downloads, and changes to external integrations. A small service still needs an owner and an alert path. A 28-title population can be checked manually if the inventory is prioritized by certificate name, organization, and title consistency.&lt;/p&gt;

&lt;h2&gt;
  
  
  Read the count correctly
&lt;/h2&gt;

&lt;p&gt;The useful conclusion is narrow: this query identified 28 title-bearing assets and no application fingerprint. It does not establish that those systems are vulnerable, unpatched, or even running FOSSology. It does establish a set of names and pages that deserve an ownership check. ZoomEye is the discovery layer here. Configuration review and authenticated testing are separate work.&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;p&gt;[1] &lt;a href="https://github.com/fossology/fossology/wiki/FOSSology-REST-API" rel="noopener noreferrer"&gt;FOSSology REST API documentation&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;[2] &lt;a href="https://fossology.github.io/fossology-python/fossology.html" rel="noopener noreferrer"&gt;FOSSology Python client and authentication notes&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;[3] &lt;a href="https://www.zoomeye.ai/searchResult?q=dGl0bGU9IkZPU1NvbG9neSI%3D" rel="noopener noreferrer"&gt;ZoomEye result for title="FOSSology"&lt;/a&gt;&lt;/p&gt;

</description>
      <category>zoomeye</category>
      <category>licensecompliance</category>
      <category>assetinventory</category>
    </item>
    <item>
      <title>Tomcat RemoteIpValve needs a trusted proxy boundary</title>
      <dc:creator>facilishz</dc:creator>
      <pubDate>Wed, 04 Nov 2026 06:21:23 +0000</pubDate>
      <link>https://dev.to/facilishz/tomcat-remoteipvalve-needs-a-trusted-proxy-boundary-2a4l</link>
      <guid>https://dev.to/facilishz/tomcat-remoteipvalve-needs-a-trusted-proxy-boundary-2a4l</guid>
      <description>&lt;h1&gt;
  
  
  Tomcat RemoteIpValve needs a trusted proxy boundary
&lt;/h1&gt;

&lt;p&gt;Applications often use the client address for rate limits, audit records, access rules, and session decisions. Behind a reverse proxy, the socket peer is the proxy rather than the user. Tomcat's &lt;code&gt;RemoteIpValve&lt;/code&gt; can recover an apparent client address from a forwarded header, but that transformation is safe only when Tomcat knows which proxies are allowed to supply it.&lt;/p&gt;

&lt;p&gt;The valve reads a header such as &lt;code&gt;X-Forwarded-For&lt;/code&gt;, identifies internal or trusted proxies, and updates request IP and protocol information. Its configuration includes an &lt;code&gt;internalProxies&lt;/code&gt; expression and related trusted-proxy settings. A broad expression can classify an address as trusted when it should not be. An unreviewed default can also be wrong after a network redesign.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the valve changes
&lt;/h2&gt;

&lt;p&gt;The review should start with the network path. Enumerate every proxy, load balancer, and ingress controller that can connect to Tomcat. Confirm that Tomcat's connector is not reachable from client networks. Then compare those source addresses and ranges with the valve expression. A private-range regex is not a trust policy if an unrelated service on the same private network can reach the connector.&lt;/p&gt;

&lt;h2&gt;
  
  
  Map proxy trust
&lt;/h2&gt;

&lt;p&gt;Header handling is the next layer. A trustworthy proxy should overwrite or strip client-supplied forwarding headers before adding its own. If the edge passes &lt;code&gt;X-Forwarded-For&lt;/code&gt; through unchanged, a client can add an address that Tomcat later treats as part of the chain. The valve's proxy processing reduces this risk only when the immediate peer is trusted and the chain is interpreted as designed. It cannot repair an edge that forwards arbitrary authority headers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Validation tests
&lt;/h2&gt;

&lt;p&gt;Useful tests include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Send a forged forwarded header directly to the Tomcat port and confirm that it is rejected or ignored.&lt;/li&gt;
&lt;li&gt;Send the same header through the approved proxy and confirm the expected result.&lt;/li&gt;
&lt;li&gt;Repeat after adding a new proxy range or changing a load-balancer address.&lt;/li&gt;
&lt;li&gt;Check application logs to verify that the recorded client address changes with the tested path.&lt;/li&gt;
&lt;li&gt;Review rate-limit keys and allowlists that depend on &lt;code&gt;request.remoteAddr&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Evidence and scheme trust
&lt;/h2&gt;

&lt;p&gt;Audit events should retain both the apparent client address and the immediate peer when possible. If an incident review sees only the rewritten address, it may lose the ability to identify the proxy or detect a malformed chain. The proxy itself should log the original connection and the headers it generated.&lt;/p&gt;

&lt;p&gt;A final review point is scheme and port trust. The same valve can influence protocol and host information used for redirects, cookie handling, and URL generation. A forwarded header that is acceptable for logging may be too powerful for building password-reset links or choosing a secure cookie flag. Separate those decisions in the application.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;RemoteIpValve&lt;/code&gt; is a bridge between a proxy's view of the connection and Tomcat's request API. It should rest on a short, documented list of trusted peers and an edge policy that controls every relevant header. Treating all private addresses as trusted turns a useful adapter into an easy way to forge identity-adjacent request data.&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Apache Tomcat Valve configuration reference: &lt;a href="https://tomcat.apache.org/tomcat-11.0-doc/config/valve.html" rel="noopener noreferrer"&gt;https://tomcat.apache.org/tomcat-11.0-doc/config/valve.html&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Apache Tomcat RemoteIpValve API documentation: &lt;a href="https://tomcat.apache.org/tomcat-11.0-doc/api/org/apache/catalina/valves/RemoteIpValve.html" rel="noopener noreferrer"&gt;https://tomcat.apache.org/tomcat-11.0-doc/api/org/apache/catalina/valves/RemoteIpValve.html&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>securityengineering</category>
      <category>cyber04tomcatremoteip</category>
    </item>
    <item>
      <title>LinkAce bookmarks and API tokens belong in one review</title>
      <dc:creator>facilishz</dc:creator>
      <pubDate>Wed, 04 Nov 2026 03:01:42 +0000</pubDate>
      <link>https://dev.to/facilishz/linkace-bookmarks-and-api-tokens-belong-in-one-review-33m6</link>
      <guid>https://dev.to/facilishz/linkace-bookmarks-and-api-tokens-belong-in-one-review-33m6</guid>
      <description>&lt;h1&gt;
  
  
  LinkAce bookmarks and API tokens belong in one review
&lt;/h1&gt;

&lt;p&gt;LinkAce is a self-hosted bookmark archive. Its records can reveal research interests, internal documentation, customer links, and the URLs people rely on. The service also provides user API tokens and sharing features. A small public footprint can therefore carry a useful map of an organization's information habits.&lt;/p&gt;

&lt;h2&gt;
  
  
  Observation
&lt;/h2&gt;

&lt;p&gt;At 08:42 on November 4, 2026 (UTC+8), a count-only ZoomEye SDK query with &lt;code&gt;sub_type=all&lt;/code&gt;, page 1, and pagesize 1 returned zero application matches for &lt;code&gt;app="LinkAce"&lt;/code&gt; and 122 title matches for &lt;code&gt;title="LinkAce"&lt;/code&gt;. The title matches are a manual verification queue. They may include hosted bookmarks, project pages, or instances with a different application title.&lt;/p&gt;

&lt;h2&gt;
  
  
  Data and access
&lt;/h2&gt;

&lt;p&gt;The project documentation describes LinkAce as an archive, organizer, and sharing tool for web links. It also documents user API tokens for external applications. Those two facts make the review broader than a login page. A bookmark can be shared without exposing the underlying token, and a token can read or change content without exposing a password. Both need separate ownership.&lt;/p&gt;

&lt;p&gt;Start with the account model. Record who administers the instance, how users are created, whether public registration is possible, and which accounts belong to former staff. Then inspect sharing settings. A public or guest-visible collection should be an intentional publication decision, not a side effect of a bookmark's default visibility.&lt;/p&gt;

&lt;p&gt;The API review should answer what a token can do. LinkAce's token documentation points to a broad API surface for controlling content. An integration token used by a read-only dashboard should not be able to delete records or change shared collections. If the application does not offer fine-grained scopes, compensate with a dedicated account and network restrictions, and rotate the token when the integration ends.&lt;/p&gt;

&lt;h2&gt;
  
  
  Review controls
&lt;/h2&gt;

&lt;p&gt;Useful checks include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Identify the owner of every active API token.&lt;/li&gt;
&lt;li&gt;Test revocation against a read-only integration.&lt;/li&gt;
&lt;li&gt;Review public, shared, and private bookmark collections.&lt;/li&gt;
&lt;li&gt;Confirm that backups and exports are not placed in a web root.&lt;/li&gt;
&lt;li&gt;Check whether link previews or webhooks can be directed at internal services.&lt;/li&gt;
&lt;li&gt;Record the review time and the visible title count.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The 122 title matches are not evidence of 122 exposed archives. A public page can show a login form, an informational page, or a rendering of the project name. The practical output is a smaller list with a confirmed owner, login boundary, sharing policy, and token inventory.&lt;/p&gt;

&lt;p&gt;ZoomEye is useful for finding candidate hosts and for repeating the observation later. It should not be used to inspect private bookmarks or to claim that a public title represents a vulnerable service. The article's conclusion is operational: keep the public face, the sharing decision, and the API authority in the same review, because they describe one information store.&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;LinkAce documentation: &lt;a href="https://www.linkace.org/docs/" rel="noopener noreferrer"&gt;https://www.linkace.org/docs/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;LinkAce user API tokens: &lt;a href="https://www.linkace.org/docs/v2/configuration/user-api-tokens/" rel="noopener noreferrer"&gt;https://www.linkace.org/docs/v2/configuration/user-api-tokens/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;ZoomEye title query: &lt;a href="https://www.zoomeye.ai/searchResult?q=dGl0bGU9IkxpbmtBY2Ui" rel="noopener noreferrer"&gt;https://www.zoomeye.ai/searchResult?q=dGl0bGU9IkxpbmtBY2Ui&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>zoomeye</category>
      <category>zoomeye04linkace</category>
    </item>
    <item>
      <title>BookWyrm: 93 title matches and a federation review that starts with ownership</title>
      <dc:creator>facilishz</dc:creator>
      <pubDate>Tue, 03 Nov 2026 23:42:16 +0000</pubDate>
      <link>https://dev.to/facilishz/bookwyrm-93-title-matches-and-a-federation-review-that-starts-with-ownership-3k9m</link>
      <guid>https://dev.to/facilishz/bookwyrm-93-title-matches-and-a-federation-review-that-starts-with-ownership-3k9m</guid>
      <description>&lt;h1&gt;
  
  
  BookWyrm: 93 title matches and a federation review that starts with ownership
&lt;/h1&gt;

&lt;p&gt;BookWyrm is a federated reading community, so its visible surface includes public books, reviews, profiles and federation metadata. On 2026-11-04, ZoomEye returned 93 matches for &lt;code&gt;title="BookWyrm"&lt;/code&gt; and zero for &lt;code&gt;app="BookWyrm"&lt;/code&gt; with page 1, page size 1 and &lt;code&gt;sub_type=all&lt;/code&gt;. The title population is small enough to review by domain, but each result still needs an ownership check.&lt;/p&gt;

&lt;h2&gt;
  
  
  Federation makes the instance a data boundary
&lt;/h2&gt;

&lt;p&gt;BookWyrm's documentation describes federation as a way for small, trusted communities to connect. The admin interface can show federated instances and control federation settings. That means an instance is not merely a public website. It maintains local accounts, remote relationships and moderation decisions.&lt;/p&gt;

&lt;p&gt;Review the federation status, remote instance list and moderation routes. Confirm that only an authorized administrator can change federation settings. Check that remote content is stored with provenance and that a blocked domain does not continue to appear through cached pages or client APIs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Public reading data is not administrative data
&lt;/h2&gt;

&lt;p&gt;A book page or review can be intentionally public. User email addresses, moderation notes, private reading activity and session data are not. Test these with an owned account and no third-party data. Do not enumerate users or use public API responses to infer private relationships.&lt;/p&gt;

&lt;p&gt;Keep database, media storage and reverse-proxy access logs separate from the public request path. A federated delivery job should use the minimum credentials needed for federation, not an administrative account token. Review outgoing requests for SSRF protections if an administrator can add a remote instance URL.&lt;/p&gt;

&lt;h2&gt;
  
  
  Interpreting the zero application count
&lt;/h2&gt;

&lt;p&gt;The absence of a product application fingerprint can mean the index did not see a stable value. It does not show that the 93 titles are unrelated, nor that the software is unconfigured. Use title matches to group domains by certificate and organization, then verify representative hosts against the documented public pages.&lt;/p&gt;

&lt;p&gt;For an owned instance, inspect version, deployment configuration and backup age. For an external instance, limit the review to public metadata and ownership. The title is a clue, not an authorization to probe accounts.&lt;/p&gt;

&lt;h2&gt;
  
  
  A small-population workflow
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Resolve each candidate's public host and owner.&lt;/li&gt;
&lt;li&gt;Confirm the expected federation mode.&lt;/li&gt;
&lt;li&gt;Review admin and moderation route reachability.&lt;/li&gt;
&lt;li&gt;Check storage and backup access for private reading data.&lt;/li&gt;
&lt;li&gt;Record the result without collecting user content.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;ZoomEye provides a 93-title scope that an organization can compare with its own domains. BookWyrm's federation and moderation documentation defines the controls. The security question is whether the public reading community is separated from the infrastructure that stores private accounts and remote relationship data.&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;p&gt;[1] &lt;a href="https://docs.joinbookwyrm.com/" rel="noopener noreferrer"&gt;BookWyrm documentation&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;[2] &lt;a href="https://docs.joinbookwyrm.com/pt-br/federation.html" rel="noopener noreferrer"&gt;BookWyrm federation documentation&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;[3] &lt;a href="https://github.com/bookwyrm-social/documentation/blob/main/content/managing_bookwyrm/moderation.md" rel="noopener noreferrer"&gt;BookWyrm moderation documentation&lt;/a&gt;&lt;/p&gt;

</description>
      <category>cybersecurity</category>
      <category>zoomeye</category>
      <category>exposureinventory</category>
    </item>
    <item>
      <title>Scrypted: 2,758 title matches around camera and NVR access</title>
      <dc:creator>facilishz</dc:creator>
      <pubDate>Tue, 03 Nov 2026 20:21:34 +0000</pubDate>
      <link>https://dev.to/facilishz/scrypted-2758-title-matches-around-camera-and-nvr-access-2mlp</link>
      <guid>https://dev.to/facilishz/scrypted-2758-title-matches-around-camera-and-nvr-access-2mlp</guid>
      <description>&lt;h1&gt;
  
  
  Scrypted: 2,758 title matches around camera and NVR access
&lt;/h1&gt;

&lt;p&gt;Scrypted is a home and small-business automation server with a strong camera and NVR use case. It connects to cameras, bridges protocols, records video, and presents a management interface. A public Scrypted instance can expose live camera views, recorded footage, device settings, and the credentials used to reach the cameras.&lt;/p&gt;

&lt;p&gt;A ZoomEye count-only query on 2026-11-03 returned 2,758 matches for &lt;code&gt;title="Scrypted"&lt;/code&gt; and zero for &lt;code&gt;app="Scrypted"&lt;/code&gt;. The search used page 1, pagesize 1, &lt;code&gt;sub_type=all&lt;/code&gt;. The title result is a candidate inventory, not a confirmed count of exposed NVRs. A login page, documentation page, or unrelated site with the same title can be included.&lt;/p&gt;

&lt;h2&gt;
  
  
  Camera authority is layered
&lt;/h2&gt;

&lt;p&gt;Scrypted's access documentation describes user management, a Scrypted NVR users extension, per-camera permissions, and optional cloud access. It warns that a compromise in an authentication provider such as Scrypted Cloud, an email account, or a single sign-on service could allow another party to view cameras or modify server settings. That warning is a useful reminder that the internet-facing login is not the only trust path.&lt;/p&gt;

&lt;p&gt;The camera connection adds another layer. Scrypted's camera setup guidance says the camera login may need administrator-level access for some functions. A server that stores camera administrator credentials can read streams and change device settings. Use separate camera accounts where possible, apply network restrictions, and avoid exposing the camera management interface directly.&lt;/p&gt;

&lt;p&gt;Review who can view footage and who can administer the server. A viewer account should not be able to add a camera, change recording policy, or invite another user. Test permissions on a per-camera basis, not only on the dashboard. If a user is removed from a camera group, confirm that existing streams and mobile sessions lose access.&lt;/p&gt;

&lt;h2&gt;
  
  
  Separate local and remote access
&lt;/h2&gt;

&lt;p&gt;The documentation describes local network access and optional cloud access. These paths can have different identity providers and session lifetimes. Decide which one is intended for each user. A cloud account that can recover through email may be the weakest link for a camera system, especially if the email account is not protected by strong authentication.&lt;/p&gt;

&lt;p&gt;Place the server behind a VPN or an identity-aware proxy for remote administration. If a cloud relay is used, review its sharing model and the permissions granted to each linked account. Check whether recordings are stored locally, on a NAS, or in a cluster configuration, and protect the storage path as part of the same review.&lt;/p&gt;

&lt;p&gt;The title count should be matched against known deployments and network ownership. Do not use 2,758 as a claim that thousands of camera feeds are public. Confirm the login page and the organization's intended reachability first. A small camera estate can still contain sensitive views of homes, warehouses, or production floors.&lt;/p&gt;

&lt;h2&gt;
  
  
  A practical checklist
&lt;/h2&gt;

&lt;p&gt;Record the version, public route, authentication provider, administrator count, NVR plugin status, camera permissions, recording retention, and storage location. Test a viewer against a camera that should be hidden. Test a removed user against the web interface and an existing mobile session. Check whether the server's camera credentials can be read from a backup or configuration export.&lt;/p&gt;

&lt;p&gt;Monitor sign-in failures, camera additions, permission changes, and recording exports. Keep the camera firmware and the server's dependencies current. Scrypted may be only one part of the path, but it is often the component that holds the keys to all the others.&lt;/p&gt;

&lt;h2&gt;
  
  
  Query evidence
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;title="Scrypted"&lt;/code&gt; returned 2,758 matches at 2026-11-03 19:50 UTC. &lt;code&gt;app="Scrypted"&lt;/code&gt; returned zero. The observation is a title-matched population, not a confirmed count of exposed camera systems.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.zoomeye.ai/searchResult?q=dGl0bGU9IlNjcnlwdGVkIg%3D%3D" rel="noopener noreferrer"&gt;Open the recorded ZoomEye search&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.scrypted.app/maintenance/access.html" rel="noopener noreferrer"&gt;Scrypted users and remote access&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.scrypted.app/camera-preparation" rel="noopener noreferrer"&gt;Scrypted camera configuration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.scrypted.app/scrypted-nvr/camera-recording.html" rel="noopener noreferrer"&gt;Scrypted camera recording&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>security</category>
      <category>zoomeye</category>
    </item>
    <item>
      <title>Axios CVE-2026-44494: What Red Hat Customers Should Verify in OpenShift</title>
      <dc:creator>facilishz</dc:creator>
      <pubDate>Tue, 03 Nov 2026 17:03:44 +0000</pubDate>
      <link>https://dev.to/facilishz/axios-cve-2026-44494-what-red-hat-customers-should-verify-in-openshift-1084</link>
      <guid>https://dev.to/facilishz/axios-cve-2026-44494-what-red-hat-customers-should-verify-in-openshift-1084</guid>
      <description>&lt;h1&gt;
  
  
  Axios CVE-2026-44494: What Red Hat Customers Should Verify in OpenShift
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Red Hat scope
&lt;/h2&gt;

&lt;p&gt;Red Hat's CVE-2026-44494 record identifies a flaw in Axios that can escalate an existing &lt;code&gt;Object.prototype&lt;/code&gt; pollution condition into a full man-in-the-middle attack. Red Hat rates the issue Important with a CVSS 3.1 base score of 8.7 and gives the vector &lt;code&gt;CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:H/A:N&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The affected component is Axios. The GitHub advisory lists versions from 1.0.0 through 1.15.x and identifies 1.16.0 as the patched release. Red Hat lists OpenShift Container Platform among the products that contain the affected library. Its guidance says a product marked affected includes all minor releases unless the advisory states otherwise, and that fixes arrive through Red Hat errata.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the Red Hat listing means
&lt;/h2&gt;

&lt;p&gt;An affected product listing means Red Hat determined that the product ships one or more affected components. It does not mean every cluster is exploitable. The application still needs a path that pollutes &lt;code&gt;Object.prototype&lt;/code&gt; and a later Axios request that inherits the polluted &lt;code&gt;proxy&lt;/code&gt; value.&lt;/p&gt;

&lt;p&gt;OpenShift customers should separate the platform package from workloads. Red Hat's errata address the packages Red Hat maintains. A customer-built Node.js image can contain its own Axios package, so it must be rebuilt from an updated dependency even after the cluster is current.&lt;/p&gt;

&lt;h2&gt;
  
  
  The technical path
&lt;/h2&gt;

&lt;p&gt;The HTTP adapter reads &lt;code&gt;config.proxy&lt;/code&gt; from the merged request configuration. Because &lt;code&gt;proxy&lt;/code&gt; is not in the Axios defaults, an object can have no own property and still inherit an attacker-supplied one. If &lt;code&gt;setProxy()&lt;/code&gt; receives that value, it can change the request host and port.&lt;/p&gt;

&lt;p&gt;The attacker proxy can see request headers, credentials, cookies, and bodies. It can also replace responses. Red Hat's description states that no direct user interaction is required once an existing pollution primitive is present. The separate pollution source is the main reason the issue is conditional.&lt;/p&gt;

&lt;h2&gt;
  
  
  Customer verification checklist
&lt;/h2&gt;

&lt;p&gt;List every OpenShift namespace and runtime image digest. Query the final image's package inventory for Axios below 1.16.0. Include applications, jobs, operators, and sidecars. Record the image owner and the request paths that use Axios.&lt;/p&gt;

&lt;p&gt;Check the current Red Hat security advisory for the installed OpenShift Container Platform release. Apply the errata that include CVE-2026-44494. Then rebuild application images with Axios 1.16.0 or later and confirm the fixed package inside the new image.&lt;/p&gt;

&lt;p&gt;Review object-parsing code for recursive merges and dangerous keys. A team can reduce exposure by rejecting untrusted &lt;code&gt;__proto__&lt;/code&gt;, &lt;code&gt;constructor&lt;/code&gt;, and &lt;code&gt;prototype&lt;/code&gt; keys, but Red Hat says a supported mitigation is not available. Those checks should not be recorded as a replacement for the errata and package update.&lt;/p&gt;

&lt;h2&gt;
  
  
  Exposure context
&lt;/h2&gt;

&lt;p&gt;The ZoomEye Search &lt;code&gt;title="OpenShift"&lt;/code&gt; returned 5,443 matches on 2026-11-03 UTC. The CVE filter returned 0. This count is a broad view of OpenShift-related product titles and should not be compared to Red Hat's affected-product inventory without additional evidence. It does not confirm that a deployment is vulnerable.&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/advisories/GHSA-35jp-ww65-95wh" rel="noopener noreferrer"&gt;GitHub Advisory Database: GHSA-35jp-ww65-95wh&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://access.redhat.com/security/cve/cve-2026-44494" rel="noopener noreferrer"&gt;Red Hat CVE-2026-44494&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.cve.org/CVERecord?id=CVE-2026-44494" rel="noopener noreferrer"&gt;CVE.org record&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://wid.cert-bund.de/content/public/content/f112f26b-4802-418e-afd9-cbb93139eec8" rel="noopener noreferrer"&gt;CERT-BUND source advisory&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>security</category>
      <category>vulnerability</category>
      <category>axios</category>
      <category>openshift</category>
    </item>
    <item>
      <title>Managing CVE-2026-21932 in Production Print Environments</title>
      <dc:creator>facilishz</dc:creator>
      <pubDate>Tue, 03 Nov 2026 13:41:09 +0000</pubDate>
      <link>https://dev.to/facilishz/managing-cve-2026-21932-in-production-print-environments-5057</link>
      <guid>https://dev.to/facilishz/managing-cve-2026-21932-in-production-print-environments-5057</guid>
      <description>&lt;h1&gt;
  
  
  Managing CVE-2026-21932 in Production Print Environments
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Overview
&lt;/h2&gt;

&lt;p&gt;Production print servers sit between job submission, customer files, operator consoles and physical output. An integrity vulnerability in a bundled Java runtime therefore needs a maintenance response even when the public exploit path is incomplete. CVE-2026-21932 affects Oracle Java SE AWT and JavaFX, and Xerox lists it in its January 2026 OpenJDK update for FreeFlow v2 and v7.&lt;/p&gt;

&lt;h2&gt;
  
  
  Risk profile
&lt;/h2&gt;

&lt;p&gt;Oracle gives CVE-2026-21932 a CVSS 3.1 score of 7.4. The vector is &lt;code&gt;CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:N/I:H/A:N&lt;/code&gt;. The score combines a network attack path, low complexity, no required privileges, required user interaction, changed scope and high integrity impact. Confidentiality and availability are not listed as impacted.&lt;/p&gt;

&lt;p&gt;The affected component is AWT and JavaFX. Oracle says the issue applies to clients running sandboxed Java Web Start applications or applets that load untrusted code. The note excludes servers that run only trusted administrator-installed code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Mechanism and exploitation conditions
&lt;/h2&gt;

&lt;p&gt;The public record does not identify the exact AWT or JavaFX operation that fails. It does establish that exploitation requires network access, user interaction and a client path that loads untrusted Java content in the sandbox model. Xerox links the CVE to the OpenJDK update, but its bulletins do not map the issue to a specific print-server request.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why integrity matters in print operations
&lt;/h2&gt;

&lt;p&gt;An integrity failure can alter job instructions, configuration data or files that the Java workload can write. The changed scope means the vulnerable component can affect another product or environment. A print server that handles customer artwork or regulated output needs to know which files could be changed and how the resulting print job would be verified.&lt;/p&gt;

&lt;p&gt;The absence of a confidentiality impact does not remove the need to protect customer data. It narrows the stated consequence in this CVE. The absence of an availability impact does not guarantee that a damaged job will complete correctly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Xerox patch scope
&lt;/h2&gt;

&lt;p&gt;Xerox Security Bulletin XRX26-007 puts OpenJDK Java 8 Update 482-b08 into the January 2026 Security Patch Update for FreeFlow v2 on Windows 10. It lists CVE-2026-21932 as remediated and names iGen 5 and Baltoro HF Production Inkjet Press support.&lt;/p&gt;

&lt;p&gt;Xerox Security Bulletin XRX26-006 puts OpenJDK 8 Update 482-b08 into the January 2026 Security Patch Cluster for FreeFlow v7 on Solaris 11.4. It lists CVE-2026-21932 and applies to FFPS 73.M1.90 / RV 14.4.28 and later levels.&lt;/p&gt;

&lt;p&gt;FreeFlow v9's January 2026 bulletin has no Java software update and does not list this CVE. A production team should not reuse v2 or v7 evidence for v9.&lt;/p&gt;

&lt;h2&gt;
  
  
  Exposure review
&lt;/h2&gt;

&lt;p&gt;ZoomEye returned 197 matches for &lt;code&gt;title="FreeFlow"&lt;/code&gt; and 0 for &lt;code&gt;vul.cve="CVE-2026-21932"&lt;/code&gt;. The selected Exposure is 197.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.zoomeye.ai/searchResult?q=dGl0bGU9IkZyZWVGbG93Ig%3D%3D" rel="noopener noreferrer"&gt;https://www.zoomeye.ai/searchResult?q=dGl0bGU9IkZyZWVGbG93Ig%3D%3D&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The query gives a list of potentially relevant internet-facing assets. It does not reveal the patch level or prove that a visible console can launch untrusted Java content. Use it to find owners and start an inventory review.&lt;/p&gt;

&lt;h2&gt;
  
  
  Change plan
&lt;/h2&gt;

&lt;p&gt;Start with the vendor-supported package for the correct FreeFlow release. Schedule the install through the Xerox service process and record a system backup before making changes. During the window, limit access to the server from networks that do not need it.&lt;/p&gt;

&lt;p&gt;After the install, verify the OpenJDK build. On v7, Xerox documents a script that reports the Solaris version, FreeFlow release, patch cluster and Java version. Use the equivalent supported verification path on v2.&lt;/p&gt;

&lt;p&gt;Keep a before-and-after record for each host. Include the package identifier, the FreeFlow release and the Java version. Restore the vendor-approved backup plan if the package is corrupt or the version check does not match.&lt;/p&gt;

&lt;h2&gt;
  
  
  Monitoring
&lt;/h2&gt;

&lt;p&gt;Review authentication, administration and job-processing logs for unexpected changes during and after the patch window. Validate a sample of print jobs after the update. Alert on changes to server configuration that do not match an approved maintenance action. These checks help detect integrity problems without claiming that a specific CVE artifact was observed.&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.oracle.com/security-alerts/cpujan2026verbose.html" rel="noopener noreferrer"&gt;Oracle January 2026 risk matrix&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.oracle.com/en-us/iaas/releasenotes/java-management/jdk-cpu-january-2026.htm" rel="noopener noreferrer"&gt;Oracle Java SE release notes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://securitydocs.business.xerox.com/wp-content/uploads/2026/03/Xerox-Security-Bulletin-XRX26-007-for-Xerox-FreeFlow-Print-Server-v2_Windows10.pdf" rel="noopener noreferrer"&gt;Xerox XRX26-007&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://security.business.xerox.com/wp-content/uploads/2026/02/Xerox-Security-Bulletin-XRX26-006-for-Xerox-FreeFlow-Print-Server-v7.pdf" rel="noopener noreferrer"&gt;Xerox XRX26-006&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>vulnerability</category>
      <category>xerox</category>
      <category>freeflow</category>
      <category>openjdk</category>
    </item>
    <item>
      <title>XWiki Visibility: Turn a Fingerprint Count Into an Owner List</title>
      <dc:creator>facilishz</dc:creator>
      <pubDate>Tue, 03 Nov 2026 08:50:10 +0000</pubDate>
      <link>https://dev.to/facilishz/xwiki-visibility-turn-a-fingerprint-count-into-an-owner-list-eb</link>
      <guid>https://dev.to/facilishz/xwiki-visibility-turn-a-fingerprint-count-into-an-owner-list-eb</guid>
      <description>&lt;h1&gt;
  
  
  XWiki Visibility: Turn a Fingerprint Count Into an Owner List
&lt;/h1&gt;

&lt;p&gt;XWiki is a collaboration platform with pages, extensions, user accounts, and administration functions. An external inventory needs to locate deployments that an organization may have forgotten without turning a product fingerprint into a vulnerability claim. A count is useful when the query, scope, and limitations are recorded with it.&lt;/p&gt;

&lt;p&gt;On 2026-11-03, a count-only ZoomEye query for &lt;code&gt;app="XWiki"&lt;/code&gt; used scope &lt;code&gt;all&lt;/code&gt;, page 1, and one result. The observation returned 1,268 matching assets. The exact time and query are part of the evidence. The result is an observed application-fingerprint population, not a list of confirmed affected versions or a test of whether anonymous page access is enabled.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why a fingerprint is a useful first pass
&lt;/h2&gt;

&lt;p&gt;A title containing a product name can appear in documentation, tutorials, and unrelated sites. An application fingerprint field provides a stronger relationship between an asset and the product, though fingerprint quality still varies by version and deployment. The count can guide an ownership review and help prioritize hosts that sit outside the expected hosting inventory.&lt;/p&gt;

&lt;p&gt;The operator should avoid comparing this number directly with a vendor download count or an internal endpoint count. Those figures answer different questions. ZoomEye measures matching public observations under a selected scope. Internal inventory measures deployed software known to the organization. The gap between them is the interesting part, not a single "exposure score."&lt;/p&gt;

&lt;h2&gt;
  
  
  Review the actual surface
&lt;/h2&gt;

&lt;p&gt;For each candidate, identify the hosting owner, domain registration, certificate identity, and business purpose. Check whether the wiki serves anonymous content, whether account creation is open, and which extensions are active. Review administrative access and recent user changes. Collect version evidence from an authorized management interface rather than from a remote probe alone.&lt;/p&gt;

&lt;p&gt;Do not test exploit paths unless the organization has explicit authorization and a controlled process. Discovery is not exploitation. A public wiki can be intended to be public, and a private wiki can be misconfigured in a way that deserves urgent remediation. Those are different decisions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keep evidence comparable
&lt;/h2&gt;

&lt;p&gt;Store the normalized dork, scope, page settings, collection time, and count. If the same query is repeated, record whether asset changes, quota, authentication, or API errors occurred. A failed request is not a zero count. Preserve enough query metadata that another analyst can reproduce the measurement.&lt;/p&gt;

&lt;p&gt;ZoomEye's practical value is prioritization. It turns an open question about forgotten XWiki installations into a bounded review queue. The team still needs to verify ownership, authorization, version, and configuration. A completed review should produce an owner list, a remediation decision for each exception, and a follow-up time for any public wiki that cannot be retired.&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;XWiki, &lt;a href="https://www.xwiki.org/xwiki/bin/view/documentation/xs/" rel="noopener noreferrer"&gt;XWiki Standard documentation&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;XWiki, &lt;a href="https://www.xwiki.org/xwiki/bin/view/documentation/xs/admin/?language=en" rel="noopener noreferrer"&gt;Administrator documentation&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;ZoomEye, &lt;a href="https://www.zoomeye.ai/" rel="noopener noreferrer"&gt;ZoomEye&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>security</category>
      <category>zoomeye</category>
      <category>assetinventory</category>
    </item>
    <item>
      <title>Partitioned cookies contain embedded sessions without flattening tenant isolation</title>
      <dc:creator>facilishz</dc:creator>
      <pubDate>Tue, 03 Nov 2026 07:10:53 +0000</pubDate>
      <link>https://dev.to/facilishz/partitioned-cookies-contain-embedded-sessions-without-flattening-tenant-isolation-5fh6</link>
      <guid>https://dev.to/facilishz/partitioned-cookies-contain-embedded-sessions-without-flattening-tenant-isolation-5fh6</guid>
      <description>&lt;h1&gt;
  
  
  Partitioned cookies contain embedded sessions without flattening tenant isolation
&lt;/h1&gt;

&lt;p&gt;Cookies Having Independent Partitioned State, usually called CHIPS, lets a site opt a cookie into storage that is keyed by the top-level site and the cookie's host. The &lt;code&gt;Partitioned&lt;/code&gt; attribute changes how a browser stores and returns the cookie. It does not change the application's responsibility to authenticate the user, authorize an object, or separate tenant data.&lt;/p&gt;

&lt;p&gt;That distinction matters for embedded portals, support widgets, payment forms, and any application that runs inside another site. A partitioned cookie can prevent one top-level site from seeing another site's copy of the same embedded service cookie. It cannot prevent an application flaw inside one partition, a stolen bearer token, or a server that returns data for the wrong account.&lt;/p&gt;

&lt;h2&gt;
  
  
  Understand the storage key
&lt;/h2&gt;

&lt;p&gt;MDN describes partitioned cookies as using the host key and a partition key derived from the top-level site. Two top-level sites that embed the same third-party service receive different cookie jars even if the cookie name and host are identical. The &lt;code&gt;Partitioned&lt;/code&gt; attribute is set on the &lt;code&gt;Set-Cookie&lt;/code&gt; response, and the cookie must also use appropriate security attributes.&lt;/p&gt;

&lt;p&gt;The partition key is not a user identity or a tenant identity. It is a browser storage boundary. If the same user visits the same embedded service from two sites, the service may see two independent cookie contexts. If two users share a device and visit the same top-level site, they may still share the browser profile. Design session records and logout behavior from those realities.&lt;/p&gt;

&lt;p&gt;Do not use a partitioned cookie as the only source of tenant context. The server should resolve the tenant from an authenticated session, a signed configuration, or a validated host mapping. A request from a different top-level site should not be able to move the session to another tenant merely by changing a cookie name or an embedding parameter.&lt;/p&gt;

&lt;h2&gt;
  
  
  Plan for compatibility and fallbacks
&lt;/h2&gt;

&lt;p&gt;Browser behavior around third-party cookies differs by vendor, version, user setting, and enterprise policy. Some contexts may reject the cookie entirely. Others may use partitioning only when the attribute is present. A service that depends on a cookie for authentication needs an explicit fallback for a lost cookie, such as a short-lived authorization code or a reauthentication flow.&lt;/p&gt;

&lt;p&gt;Test in a real embedded context rather than only at the top-level URL. Check whether the browser sends the cookie, whether it sends it only in the expected partition, and whether a logout in one top-level site affects another partition. Test &lt;code&gt;SameSite&lt;/code&gt; interactions, secure transport, and a top-level navigation that changes the embedding site.&lt;/p&gt;

&lt;p&gt;If the service uses a cross-site iframe for login, do not weaken the cookie to &lt;code&gt;SameSite=None&lt;/code&gt; without &lt;code&gt;Secure&lt;/code&gt; and a reviewed domain policy. Do not expand the cookie domain to a parent domain merely to make an embed work. That is a different security tradeoff and can expose the cookie to more subdomains than intended.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keep authorization on the server
&lt;/h2&gt;

&lt;p&gt;The session should carry the user, tenant, assurance level, and expiry. The server should check the requested resource against that session on every request. A partitioned cookie might distinguish two embedding contexts, but the server still needs a mapping between the embedding context and the authorized tenant.&lt;/p&gt;

&lt;p&gt;Use &lt;code&gt;__Host-&lt;/code&gt; prefixes where they fit the deployment and help prevent domain and path surprises. Avoid storing personal data or access tokens in cookie values. A random session identifier is easier to revoke and rotate. Set a bounded lifetime, rotate after privilege changes, and invalidate the server session on logout.&lt;/p&gt;

&lt;p&gt;Monitor missing-cookie rates by embedding site and browser. A change in partitioning policy can look like a login failure, a session loop, or an unauthorized request. Record the top-level site only when the privacy policy permits it, and aggregate the signal. Do not build a cross-site identifier from partitioned session records.&lt;/p&gt;

&lt;h2&gt;
  
  
  Treat partitioning as one control
&lt;/h2&gt;

&lt;p&gt;CHIPS is useful when a service needs a cookie in a third-party context and wants to reduce cross-site tracking and cookie leakage. It is not a complete same-origin policy for application data, a substitute for CSRF protection, or a reason to trust an iframe's origin. The application still needs origin checks, CSRF defenses where cookies are used, and server-side object authorization.&lt;/p&gt;

&lt;p&gt;The practical goal is to make the browser boundary explicit and keep the security boundary on the server. A partitioned cookie can be a reliable session container when the deployment accounts for compatibility, logout, tenancy, and token theft. It cannot manufacture those properties by itself.&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;MDN Web Docs, &lt;a href="https://developer.mozilla.org/en-US/docs/Web/Privacy/Guides/Third-party_cookies/Partitioned_cookies" rel="noopener noreferrer"&gt;Cookies Having Independent Partitioned State (CHIPS)&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;MDN Web Docs, &lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Set-Cookie" rel="noopener noreferrer"&gt;Set-Cookie header&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;IETF, &lt;a href="https://www.rfc-editor.org/info/rfc6265/" rel="noopener noreferrer"&gt;RFC 6265: HTTP State Management Mechanism&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>cookies</category>
      <category>chips</category>
      <category>sessionsecurity</category>
    </item>
    <item>
      <title>OpenProject: compare title and app counts before mapping project servers</title>
      <dc:creator>facilishz</dc:creator>
      <pubDate>Tue, 03 Nov 2026 05:30:25 +0000</pubDate>
      <link>https://dev.to/facilishz/openproject-compare-title-and-app-counts-before-mapping-project-servers-16l1</link>
      <guid>https://dev.to/facilishz/openproject-compare-title-and-app-counts-before-mapping-project-servers-16l1</guid>
      <description>&lt;h1&gt;
  
  
  OpenProject: compare title and app counts before mapping project servers
&lt;/h1&gt;

&lt;p&gt;OpenProject supports project planning, work packages, wikis, meetings, and integrations. A public instance can expose project names, timelines, attachments, and user identities. The security question is not whether a page mentions OpenProject. It is whether the instance is owned, whether project data is meant to be public, and whether the administrative layer is separated from the collaboration layer.&lt;/p&gt;

&lt;h2&gt;
  
  
  What ZoomEye returned
&lt;/h2&gt;

&lt;p&gt;On 2026-11-03T04:15:32Z, with &lt;code&gt;page=1&lt;/code&gt;, &lt;code&gt;pagesize=1&lt;/code&gt;, and &lt;code&gt;sub_type=all&lt;/code&gt;, ZoomEye returned 12,444 total matches for &lt;code&gt;title="OpenProject"&lt;/code&gt;. At 2026-11-03T04:15:33Z, the corresponding &lt;code&gt;app="OpenProject"&lt;/code&gt; query returned 11,684. The two counts are close enough to support a consistent discovery signal, but they still do not prove ownership, version, or public data access.&lt;/p&gt;

&lt;p&gt;The app result is a useful primary fingerprint because it is specific to the application and close to the title population. The title result is useful for finding branded or partially fingerprinted deployments. Record both observations with their timestamps instead of choosing a single global count.&lt;/p&gt;

&lt;h2&gt;
  
  
  Understand the deployment surface
&lt;/h2&gt;

&lt;p&gt;OpenProject's official configuration guidance covers TLS termination, reverse proxy headers, authentication providers, and external SSL. A deployment behind a proxy must tell the application that the original request used HTTPS. Otherwise generated links and secure-cookie behavior can be wrong even though the public URL looks correct.&lt;/p&gt;

&lt;p&gt;Authentication can be local or delegated to an identity provider. Review whether local login remains enabled after SSO, how administrators are provisioned, and what happens when an account is removed from the directory. Two-factor authentication can be available, but availability is not enforcement. Check the policy for administrator and project-owner accounts.&lt;/p&gt;

&lt;p&gt;Map the project and administrative roles. A project member may read work packages, attachments, and meeting notes. A project owner may change membership or visibility. An instance administrator can reach global settings, integrations, and user data. These roles should not share one broad group.&lt;/p&gt;

&lt;h2&gt;
  
  
  Review public sharing and integrations
&lt;/h2&gt;

&lt;p&gt;Look for public projects, anonymous access, shared links, and API tokens. A project that is private in the web interface may still have an automation token or an external integration with broader access. Review the token owner, scope, expiry, and last use.&lt;/p&gt;

&lt;p&gt;Inspect outbound connectors and incoming webhooks. A repository integration can reveal issue titles to another system. A webhook endpoint can accept data that the application later displays. Validate the receiver's authentication, replay protection, and size limits.&lt;/p&gt;

&lt;p&gt;Check file attachments separately from page text. A public project may show metadata while attachments remain protected, or the reverse. Review the storage backend, upload limit, malware scanning policy, and access-control behavior for direct file URLs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Use the counts as an inventory filter
&lt;/h2&gt;

&lt;p&gt;Join the ZoomEye matches to organization-owned domains and certificate records. For each host, confirm the deployment from an authenticated administrative source. Record the version, authentication mode, public-project policy, and owner. Do not use a count as evidence that a host is vulnerable.&lt;/p&gt;

&lt;p&gt;Use a change in app or title count as a discovery trigger. A new match under an owned domain may indicate a new project server or a proxy change. A disappearing match may indicate a rebrand, a new WAF, or a service retirement. Correlate with change records before escalating.&lt;/p&gt;

&lt;p&gt;OpenProject is designed to make project information easy to share. That makes the ownership context essential. ZoomEye can show that many pages identify themselves as OpenProject, and the app query gives a tighter starting set. The organization still has to decide which projects are public, which identities may administer them, and which integrations can move their data.&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;OpenProject, &lt;a href="https://www.openproject.org/docs/installation-and-operations/configuration/ssl/" rel="noopener noreferrer"&gt;Configuring SSL&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;OpenProject, &lt;a href="https://www.openproject.org/docs/system-admin-guide/authentication/" rel="noopener noreferrer"&gt;Authentication&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;OpenProject, &lt;a href="https://www.openproject.org/docs/installation-and-operations/installation/docker-compose/" rel="noopener noreferrer"&gt;Installation with Docker Compose&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>zoomeye</category>
      <category>openproject</category>
      <category>projectsecurity</category>
    </item>
    <item>
      <title>CVE-2026-108452 remediation brief for SharePoint Subscription Edition</title>
      <dc:creator>facilishz</dc:creator>
      <pubDate>Tue, 03 Nov 2026 03:24:07 +0000</pubDate>
      <link>https://dev.to/facilishz/cve-2026-108452-remediation-brief-for-sharepoint-subscription-edition-4l52</link>
      <guid>https://dev.to/facilishz/cve-2026-108452-remediation-brief-for-sharepoint-subscription-edition-4l52</guid>
      <description>&lt;h1&gt;
  
  
  CVE-2026-108452 remediation brief for SharePoint Subscription Edition
&lt;/h1&gt;

&lt;p&gt;The decision for CVE-2026-108452 is straightforward at the policy level: identify affected SharePoint Server Subscription Edition farms, apply KB5002927, verify build 16.0.20326.20190, and record any access restrictions used while patching. The technical details still matter because the vulnerability requires an authorized attacker and can lead to code execution.&lt;/p&gt;

&lt;h2&gt;
  
  
  Executive summary
&lt;/h2&gt;

&lt;p&gt;Microsoft rates CVE-2026-108452 High with a CVSS 3.1 score of 8.8. It is a CWE-22 path traversal in Microsoft Office SharePoint. An authorized network attacker can execute code, and the vector requires low privileges with no user interaction. Confidentiality and integrity impacts are High.&lt;/p&gt;

&lt;p&gt;The affected range is version 16.0.0 through builds below 16.0.20326.20190 on x64 SharePoint Server Subscription Edition. KB5002927, released October 13, 2026, reaches the fixed build. Microsoft Support says farms running SharePoint Workflow Manager must install KB5002799 before the security update and that classic installations need an additional documented debug flag step.&lt;/p&gt;

&lt;h2&gt;
  
  
  Business risk
&lt;/h2&gt;

&lt;p&gt;SharePoint is often a repository for sensitive documents and a hub for collaboration, workflows, and connected applications. Code execution on the server can affect data confidentiality and integrity, with consequences beyond website availability. The requirement for low privileges lowers the initial access barrier for an attacker who already has a user account or delegated application identity.&lt;/p&gt;

&lt;p&gt;The available public record does not establish that the flaw is unauthenticated or that exploitation is widespread. It does establish a network-reachable, low-complexity path to code execution on vulnerable builds. That is enough to place the update ahead of routine maintenance.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ownership and actions
&lt;/h2&gt;

&lt;p&gt;The SharePoint platform owner should provide the server inventory and confirm farm topology, prerequisites, and final build state. The security operations team should review external exposure, low-privileged and partner access, and monitoring coverage for unusual authenticated activity. The change owner should document maintenance results and exceptions.&lt;/p&gt;

&lt;p&gt;Completion requires evidence from every relevant server. A single successful installer log is not sufficient. Capture the build, workflow component state, and date of verification. If a server remains on the exception list, assign an owner, an expiry date, and a network restriction.&lt;/p&gt;

&lt;h2&gt;
  
  
  Exposure interpretation
&lt;/h2&gt;

&lt;p&gt;ZoomEye returned 163,243 product-fingerprint matches for &lt;code&gt;app="Microsoft SharePoint"&lt;/code&gt; on November 3, 2026. The CVE-specific filter returned 0. The broad result is a discovery signal, not a victim count. It cannot prove the installed edition, build, identity exposure, or exploitability of any host.&lt;/p&gt;

&lt;p&gt;Use the product count to challenge the internal inventory. Investigate internet-visible SharePoint services that are absent from asset management or cannot produce build evidence. Do not close the item because the CVE filter was zero.&lt;/p&gt;

&lt;h2&gt;
  
  
  Residual risk
&lt;/h2&gt;

&lt;p&gt;Even after patching, review delegated permissions and application identities. Limit administrative and authoring interfaces to the networks and roles that need them. Monitor for unexpected server-side file changes and unusual requests from low-privileged accounts. The sources do not identify a tested workaround, so these controls should be described as risk reduction while the vendor fix is deployed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reporting metrics
&lt;/h2&gt;

&lt;p&gt;Track applicable farms, verified fixed builds, open exceptions, and externally visible candidates awaiting reconciliation. A useful status statement is: "All applicable SharePoint Subscription Edition servers report build 16.0.20326.20190 or later, except these named hosts with restricted reach and dated owners." This is more precise than a percentage based on an uncertain product population.&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Microsoft Security Update Guide, &lt;a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-108452" rel="noopener noreferrer"&gt;CVE-2026-108452&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Microsoft Support, &lt;a href="https://support.microsoft.com/en-us/servicing/office/hotfix/sharepoint/5002927" rel="noopener noreferrer"&gt;KB5002927&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Microsoft Learn, &lt;a href="https://learn.microsoft.com/en-us/officeupdates/sharepoint-updates" rel="noopener noreferrer"&gt;SharePoint updates&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;CVE Program, &lt;a href="https://www.cve.org/CVERecord?id=CVE-2026-108452" rel="noopener noreferrer"&gt;CVE-2026-108452&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>cybersecurity</category>
      <category>infosec</category>
      <category>microsoft</category>
      <category>security</category>
    </item>
  </channel>
</rss>
