<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:webfeeds="http://webfeeds.org/rss/1.0"><channel><title>OpnForm - CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/vendors/opnform/</link><description>Trending threats, MITRE ATT&amp;CK coverage, and detection metadata. Fed continuously.</description><generator>Hugo</generator><language>en</language><managingEditor>hello@craftedsignal.io</managingEditor><webMaster>hello@craftedsignal.io</webMaster><lastBuildDate>Mon, 17 Aug 2026 22:50:53 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/vendors/opnform/feed.xml" rel="self" type="application/rss+xml"/><image><url>https://feed.craftedsignal.io/favicon-32x32.png</url><title>CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/</link><width>32</width><height>32</height></image><webfeeds:icon>https://feed.craftedsignal.io/favicon.svg</webfeeds:icon><item><title>OpnForm Editable Submission Secret Predictability Vulnerability</title><link>https://feed.craftedsignal.io/briefs/2026-08-opnform-vulnerability/</link><pubDate>Mon, 17 Aug 2026 22:50:53 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-08-opnform-vulnerability/</guid><description>OpnForm versions prior to 2.0.2 allow unauthenticated attackers to predict submission secrets, leading to unauthorized access and modification of form data.</description><content:encoded><![CDATA[<p>OpnForm versions prior to 2.0.2 contain a critical vulnerability where submission secrets are derived from sequential row identifiers using the Hashids library with an empty default salt. This implementation makes the secrets predictable. An unauthenticated attacker can compute the hash corresponding to any arbitrary submission ID, enabling them to bypass authentication mechanisms intended to protect individual responses. This allows attackers to exfiltrate sensitive submission data via the submission-fetch endpoint or modify respondent answers by interacting with the answer endpoint. This vulnerability poses a high risk to data confidentiality and integrity for organizations relying on OpnForm to collect sensitive information. Users should upgrade to version 2.0.2 or later immediately to mitigate this risk.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>Attacker identifies a target instance of OpnForm (v &lt; 2.0.2).</li>
<li>Attacker observes the predictable structure of the submission-fetch or answer endpoint URLs.</li>
<li>Attacker identifies that submission identifiers are sequential integers.</li>
<li>Attacker utilizes the Hashids library with an empty salt string to generate the expected secret hash for specific sequential integers.</li>
<li>Attacker makes an unauthenticated HTTP GET request to the submission-fetch endpoint using the calculated hash to retrieve sensitive respondent data.</li>
<li>Attacker makes an unauthenticated HTTP POST request to the answer endpoint using the calculated hash to overwrite or alter the submitted data.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>The vulnerability allows for mass data exfiltration of all form submissions and the unauthorized modification of existing responses. Depending on the type of information collected via the forms, this could result in significant data breaches involving personally identifiable information (PII) or sensitive business intelligence.</p>
<h2 id="recommendation">Recommendation</h2>
<p>Prioritized actions for security teams:</p>
<ul>
<li>Update all OpnForm instances to version 2.0.2 or higher immediately to address the insecure hash generation logic.</li>
<li>Review web server access logs for anomalous, high-frequency requests to submission-fetch or answer endpoints originating from single source IPs.</li>
<li>Implement rate limiting on form submission and retrieval endpoints to hinder automated attempts to enumerate submission IDs.</li>
</ul>
]]></content:encoded><category domain="severity">critical</category><category domain="type">advisory</category></item></channel></rss>