Skip to content

Security Review Log

This page records the security reviews SetFN has performed, newest first. Each entry lists the scope of the review, the issues found, and their remediation status. The status labels are the same as in Vulnerability Status.

To avoid revealing how an issue could be exploited, each entry describes the impact and the fix rather than the steps to reproduce it.


2026-10-24 AI cross-review and follow-up actions

OpenAI Codex re-reviewed, read-only, the fixes Claude made in review rounds 1 to 3. The review covered both whether the code was fixed as intended and the usability of the screens (UI/UX). Each finding was confirmed in the code, only actual defects were fixed, and Codex re-reviewed the fixes repeatedly, five rounds in all, until no blocking issue remained. The items left open after the third round (administrator two-factor authentication, length-based password rules, and TinyMCE) were also handled on this day.

Issues found and actions taken

AreaDescriptionStatus
AuthenticationAdded authenticator app two-factor authentication (with recovery codes) for administrator accounts, and added the Require two-factor authentication for administrators policy, which every administrator must comply with, to Security Settings. See Set up administrator two-factor authentication.Fixed (pending release)
AuthenticationSetting up or turning off two-factor authentication ends the account's other sessions. The required policy also applies to live connections that are already open and to MCP tasks in progress, and changing the password invalidates a pending sign-in step.Fixed (pending release)
AuthenticationChanged the default password rules for newly installed servers to at least 12 characters with no required mix of character types (NIST SP 800-63B-4). The setup wizard and the command-line tool follow the same rule, and the rules of existing servers do not change.Fixed (pending release)
EditorsReplaced the bulk notice mail editor with Tiptap and removed the visual editor (TinyMCE) for HTML files. The unfixed vulnerabilities remaining in TinyMCE 6 no longer have any effect. HTML files are edited as source code only.Fixed (pending release)
PermissionsThe requesting user's permission is now checked for images inserted by presentations, sheets, and automatic conversion, and for the content of similar-image search and AI answer sources. Office preview results can be received only by the person who created them.Fixed (pending release)
Document conversionTeX formulas inside a document could be used to read files outside the working folder. Files outside the working folder can no longer be read.Fixed (pending release)
Server stabilityDocument structure is now read in parts during conversion, and the read size of password-protected documents is limited. External conversion tools are marked before they run so that they are terminated first when memory runs low.Fixed (pending release)
LoggingImproved the handling of partially successful unblock operations and added missing items to the audit records of settings changes.Fixed (pending release)
Web UIA confirmation dialog is now shown when leaving with an unsent bulk mail draft and when leaving without saving recovery codes, and keyboard and screen reader accessibility was improved.Fixed (pending release)
AuthenticationEach account now has a credential generation. After all sessions are ended, the password is changed, or two-factor authentication is changed, earlier sessions and the token refreshes and app sign-ins derived from them can no longer be used, even if deleting the sessions failed.Fixed (pending release)
AuthenticationEnding all sessions also disconnects MCP OAuth connections made through the sign-in and consent screen. API keys the user created themselves are kept.Fixed (pending release)
Server stabilityBlocking live connections no longer waits on slow connections, and password-protected document processing now has limits on concurrent runs and waiting requests.Fixed (pending release)
AuthenticationIf the server temporarily cannot verify the sign-in state, the client is no longer signed out and retries instead.Fixed (pending release)

Remaining limitations

  • Because the browser sends the password as a hash, the server cannot enforce the password length rule itself. Length and composition rules are checked in the UI, and common-password blocking is done on the server.
  • The policy enforcement state and the pending two-factor authentication state are kept in server memory. After a server restart, a sign-in in progress must be started over.

2026-10-23 Third-round follow-up review

We addressed the follow-up items left from the second-round re-review and the recommendations of international standards documents (the NIST SP 800-63B-4 password guidelines and OWASP Top 10:2025 A09 security logging). Permission issues were first confirmed with a test that fails on the code before the fix, then fixed, and the fixed version was rebuilt and tested from freshly fetched source.

Issues found and actions taken

AreaDescriptionStatus
PermissionsDocument conversion (the AI conversion tool, document conversion, and Office preview) pulled images from the entire source folder, so images in subfolders that the requesting user could not read could end up in the output file. It now includes only images the requesting user can read.Fixed (pending release)
PermissionsIn document conversion, stylesheet and cover paths written in a document could cause the contents of other files on the server to be included in the output file. Stylesheet references and unsafe paths are now removed before conversion. As a result, CSS styles specified in a document are not applied to the conversion output.Fixed (pending release)
PermissionsKnowledge search results and the sources cited in AI answers showed part of a document's body with view permission alone. The body is now shown only when the user has both view and download permission; with view permission alone, only the title and location are shown.Fixed (pending release)
PermissionsFavorites, Office preview and online editing, and edit history did not re-check the access boundary of team space system folders or the current permissions. They are now re-checked on every request, and earlier content in the edit history requires download permission.Fixed (pending release)
PermissionsAggregates such as sums and averages in website (webspace) tables reflected the values of columns with restricted read access, and row delete permission alone was enough to delete permanently. Unreadable columns are now excluded from aggregates, and permanent deletion is limited to administrators and deployment managers.Fixed (pending release)
AutomationAutomations and webhooks could run even when an action such as locking a document had been denied. They now run only when the action succeeds.Fixed (pending release)
SettingsApplying a folder settings bundle could clear the folder's knowledge usage settings. Existing settings are now kept.Fixed (pending release)
AuthenticationWhen a new password is set, about 20,000 commonly used or breached passwords are now blocked (NIST SP 800-63B-4). This applies to sign-up, password change and reset, account creation and password reset by administrators, the command-line tool, and the setup wizard. Signing in with your current password is unaffected.Fixed (pending release)
LoggingAdministrator changes to security and policy settings, blocking and unblocking, user permission changes, account creation and deletion, password resets, device approval and denial, and session and CAPTCHA policy changes are now recorded in the audit log. The administrator who made the change, the time, the client IP, and the changed items are recorded; secret values such as passwords and keys are not.Fixed (pending release)
External sharingThe UI was fixed so that, even when an administrator turns off external sharing, the person who created a link can still view and delete existing links. New links cannot be created.Fixed (pending release)
Web UINew server refusal reasons, such as the AI request limit and waiting for a compressed download, are now shown as messages in the user's language.Fixed (pending release)
Server stabilityOpening a large text file (such as a big CSV) loaded the entire file into memory, so when several people opened such files at the same time the server could run out of memory. Files larger than 16MB are now sent in parts.Fixed (pending release)
Server stabilityBranding logos and AI image summaries decoded images without checking their width and height. The dimensions are now checked first, and excessively large images are not decoded.Fixed (pending release)
Server stabilitySome code that handles mail with broken boundaries or very deep nesting (not currently in use) had no depth limit and could fail to finish. The nesting depth is now limited, and processing stops when an error occurs.Fixed (pending release)
Server stabilityIf the document conversion, image, or video processing programs used a lot of memory, the SetFN server itself could be terminated instead. These programs are now marked so that they are terminated first when memory runs low.Fixed (pending release)

Remaining items

  • The items left open in this review, namely administrator two-factor authentication, length-based password rules (as the default for new installations), and the replacement of TinyMCE, were handled in the 2026-10-24 AI cross-review.

2026-10-23 Second-round re-review

After the first round of fixes, we reviewed the whole system again on the same day. We re-examined the first-round fixes for gaps, and used AI (Claude) to review, in separate areas, what the first round had not covered: the scope of permission checks per feature, input handling, the permission boundaries of mail, webhook, and AI tools, the web UI, and secrets and settings. Each issue found was confirmed with a test that fails on the code before the fix, then fixed.

Issues found and actions taken

AreaDescriptionStatus
PermissionsIn search, the folder tree, realtime files, and the AI file tools, a regular user could target the administrator area (every user's personal space). It can now be opened only by full administrators.Fixed (pending release)
PermissionsA file path could escape into the personal space of another user with a similar name. Added a boundary check to file access in all spaces.Fixed (pending release)
PermissionsThe feature that queries database files directly had no path permission check and could open other database files. Added a permission check and blocking of dangerous commands.Fixed (pending release)
PermissionsThe AI schedule tool did not check the owner of a schedule, and the AI file tool did not re-check permissions when it read a similarly named file instead.Fixed (pending release)
PermissionsReinforced the owner checks for personal space activity records, the source permission of copies between spaces, permission checks across differences in Korean jamo representation, favorites, conversion status, and task cancellation.Fixed (pending release)
PermissionsColumn read and write restrictions on website (Webspace) tables were not applied. Deleted rows and the author column are now protected as well.Fixed (pending release)
PermissionsIf the IP access restriction item was missing when settings were saved, the restriction could be turned off.Fixed (pending release)
Data isolationAnother user's personal schedule could appear in the team schedule list, the inbox, and notifications.Fixed (pending release)
Server stabilityConcurrent autocomplete requests could stop the server.Fixed (pending release)
Outbound requestsThe AI model connection forwarded regular user requests as far as management functions, and some features could send requests to internal server addresses. Sign-in information being passed to plugins has also been stopped.Fixed (pending release)
Content isolationReinforced website static files (XML and XHTML), document conversion previews, branding setting values, the PDF conversion engine, and the redirect address after sign-in.Fixed (pending release)
Overload defenseRequest size limits are now based on the feature path, slow request bodies have a time limit, concurrent uploads reserve their storage quota, and IPv6 request limits are grouped by address block.Fixed (pending release)
Data preservationThe original is no longer deleted when optical character recognition (OCR) produces no result.Fixed (pending release)
Web UIReplaced the mail composer's HTML sanitization with a standard sanitizer (DOMPurify) and protected links that open in a new window.Fixed (pending release)
MailEditing a contact could affect another user's contacts, and an external mail account could take over an internal company address. Access to inactive mailboxes and to the raw files of shared mailboxes stored in team spaces has also been blocked.Fixed (pending release)
Files and integrationsA file save lock could also block another user's file with the same name, and names inside a downloaded archive could be extracted into a different folder. Workflow integrations now re-verify the user every time, webhook tokens are masked in logs, and the signature-required setting also applies to existing webhooks.Fixed (pending release)
SharingExisting share links stayed open even after external sharing was turned off or the creator's sharing permission was revoked, and the usage limit could be exceeded by concurrent requests. Even with the feature off, creators can still view and revoke their own links.Fixed (pending release)
PermissionsAttachments in 1:1 and group chat rooms could be opened through the file features by other users on the same team. Only participants of that room and administrators can open them now.Fixed (pending release)
PermissionsThe response to a folder listing denied for lack of permission could still include information about the items inside the folder.Fixed (pending release)
PermissionsRequests to save a file or record an approval decision could still be carried out after a permission-denied response had been sent. They now stop as soon as access is denied.Fixed (pending release)
PermissionsAdded permission checks to the AI tools' folder settings read/write and to results built from file contents (research, similar images, folder analysis).Fixed (pending release)
Settings and secretsConfirmed that the repository contains no secret keys and that password hashing, token signing, and mail account encryption are appropriate. Stopped the API documentation page from being exposed through the reverse proxy, and removed an unused weak cryptographic function.Fixed (pending release)

Guidance for operators

  • If an external AI integration (AP bridge) uses /api/ai-proxy, the same SETFN_AI_PROXY_TOKEN value must be set on both the server and the integration side. Starting with this fix, local requests alone can no longer access it without the token.

2026-10-23 Full pre-release security review

Prompted by reports of an attack type that targets low-memory conditions, we reviewed the whole server again before release. The code was reviewed with AI (Claude) in five separate areas, and the issues found were confirmed in the code and with tests before being fixed.

Review scope

  • Request size and connection time of features that can be called without signing in
  • Paths where one user's request data could be mixed into another user's response
  • Paths where incomplete data could be saved as valid data
  • State that keeps accumulating in server memory as requests repeat
  • Known vulnerabilities in server and web UI libraries, and major vulnerabilities since 2025 in document processing programs
  • 463 KISA (KrCERT/CC) security notices (2025-01-01 to 2026-10-22)
  • OWASP Top 10:2025, OWASP ASVS 5.0, NIST SP 800-63B-4, and the KISA web vulnerability checklist

Issues found and actions taken

AreaDescriptionStatus
Data isolation between usersFile name autocomplete could show file names from other users' personal spaces. The index is now split by space and by user, and the administrator space is visible only to administrators.Fixed (pending release)
Data isolation between usersWhen team and personal schedules were queried at the same time, another user's personal schedule could appear mixed in. The schedule storage location is now fixed for each request.Fixed (pending release)
Data isolation between usersRestoring a file from the trash over a file with the same name could change the comments and change history of a different file.Fixed (pending release)
Server stabilityIf the connection dropped while search results were being streamed, a write was still attempted after the response had ended, which could stop the server.Fixed (pending release)
Server stabilityResolved a race where several tasks read and wrote the current screen information of a realtime connection at the same time.Fixed (pending release)
Overload defenseServer connections had no time limit, leaving the server vulnerable to attacks that hold many slow connections open. Added limits on header read time, idle connection time, and header size.Fixed (pending release)
Overload defenseSome features had no request body size limit. Added a default cap for the whole API and individual caps for the unauthenticated endpoints: app sign-in preparation, device registration check, and the setup page.Fixed (pending release)
Overload defenseSign-in failure records and pending app sign-in requests could grow without bound. Added caps on the total count and on the count per client location.Fixed (pending release)
Overload defenseMail deduplication records, website realtime subscriptions, concurrent AI requests, concurrent archive downloads, and the folder tree cache could grow without bound. Added a cap and periodic cleanup to each.Fixed (pending release)
Data preservationAn upload without a declared length could skip the storage quota check, and setting a document password overwrote the file in place, so a failure could damage the original. The quota is now checked while counting the bytes received, and setting a document password and saving conversion results now write to a temporary file first and then swap it in.Fixed (pending release)
Data preservationAn oversized patent XML file could be processed truncated and the original then deleted. Files over the size limit are now treated as failures, and a partially parsed original is never deleted.Fixed (pending release)
Document processing programsLibreOffice has a vulnerability (CVE-2026-63277) that is not yet fixed on Ubuntu 24.04. Java is now disabled in the LibreOffice profile used for document conversion.Fixed (pending release)
Document processing programsReinforcing the size limits applied when processing archive, image, and document files.In progress
DependenciesUpgraded 41 known vulnerabilities in Go server libraries to fixed versions, and replaced an archive library that is no longer maintained with an in-house module.Fixed (pending release)
DependenciesUpgraded 20 high-severity or higher vulnerabilities in web UI libraries (document editor, PDF viewer, Markdown viewer, and others) to fixed versions.Fixed (pending release)
DependenciesSome vulnerabilities in the HTML file editor (TinyMCE) are fixed only in a later major version, so a migration is under review. The mail editor is protected by input sanitization.In progress
Security headersPrevented the admin and account pages from being embedded in other sites, and restricted content type sniffing of API responses and the address information passed to external sites.Fixed (pending release)
AuthenticationPlanning to change the password policy to the NIST approach (length and blocking of common passwords instead of composition rules) and to add two-factor authentication for administrators.Planned improvement
External noticesNo KISA notice directly affected SetFN. The 32 notices that apply depending on the operating environment were compiled as items for operators to check.Operator action required

Verification of the fixes

Each fix comes with a test that fails on the code before the fix. After fixing, we started a separate test server isolated from production data, created an administrator account and a regular user account with the command-line tool, and confirmed the following with real requests.

  • File names from other users' personal spaces do not appear in autocomplete
  • While team and personal schedules are queried 40 times concurrently, no personal schedule is mixed into the team list
  • The server closes a slow connection that never finishes sending its headers once the time limit passes
  • Oversized requests and long inputs are rejected before the body is read
  • The clickjacking protection header is added to the admin pages and not to customer website pages

Guidance for operators

  • Added a new document, Checking Server Security Updates. It explains how to receive security fixes for Ubuntu universe packages and why MuPDF should not be installed.
  • Removed mupdf-tools from the recommended packages in the Linux and Windows installation documents.

2026-10-20 to 2026-10-22 Permission boundary re-review

The permission and sharing code was reviewed again in parallel with AI (OpenAI Codex). Each defect found was confirmed with a test that failed on the code before the fix, then fixed.

DescriptionStatus
The desktop sync listing included the names and file sizes of folders the user had no permission to listResolved
Permission handling defects in share links, trash restore, and document transfer, and permission denials that appeared as server errors (500)Resolved
An ordering issue that could let a revoked permission come back on a realtime connection, and the recipient scope of file notificationsResolved
AI responses that arrived late were visible in a chat room the user had already leftResolved
Added missing permission checks to the document conversion menu and to saving OCR resultsResolved

2026-10-19 Limiting raw request text in AI logs

Reduced what the diagnostic logs of AI features record so that raw request text is not kept excessively. Resolved

2026-10-13 Conversion and public web permission hardening

DescriptionStatus
The reprocess function for conversion folders had no path permission checkResolved
Changed the default for folders without conversion settings from deleting the original to keeping itResolved
Hardened public web read permissions and document history boundaries, and fixed a regression in realtime connection re-authenticationResolved

2026-09-25 Comprehensive security review

Reviewed permissions, sharing, authentication, cross-site scripting (XSS), server-side request forgery (SSRF), and AI and workflow tools. Issues were confirmed by sending real requests to an isolated test server before being fixed.

DescriptionStatus
Stricter validation of share link tokens by type, issuer, and path scopeResolved
Permissions are now evaluated after path normalization, and parent folder permissions apply to listing as wellResolved
Tightened CSRF exemption conditions, included the port in CORS origin comparison, and ended all sessions on password changeResolved
Applied path permissions and folder policies to Office document save and lockResolved
Prevented AI tools from receiving internal arguments, and applied permissions and edit locks to file creation and overwriteResolved
Required a token for workflow integration and applied permission checks to file toolsResolved
Stronger HTML sanitization when displaying mail, Markdown, and Word documents, and isolated responses for uploaded filesResolved
Added an exception for IPs with a recent successful sign-in so that account lockout cannot be abusedResolved
Stronger permission checks for administrator actions in realtime features (such as forced removal)Resolved