<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>window.name</title><subtitle>Personal security-research blog by David Vieira-Kurz</subtitle><link href="https://window.name/"/><link rel="self" href="https://window.name/feed.xml"/><id>https://window.name/</id><updated>2026-10-13T11:29:31Z</updated><author><name>David Vieira-Kurz</name></author><entry><title>Write-up: Stored XSS in TinyMCE via media plugin data-mce-object serialization (High, GHSA-mf2p-h6hf-fcwm)</title><link href="https://window.name/posts/tinymce-media-plugin-xss-data-mce-html.html"/><id>https://window.name/posts/tinymce-media-plugin-xss-data-mce-html.html</id><updated>2026-10-13T12:00:00Z</updated><summary>In short. The TinyMCE media plugin builds a preview element by assigning attacker-controlled data-mce-html to innerHTML on a live element, and it does this before the sanitizer runs. An &amp;lt;img onerror=...&amp;gt; placed in…</summary><category term="XSS"/><category term="GHSA"/><category term="Disclosure"/></entry><entry><title>Write-up: Stored XSS in the Jodit editor via a cleanHTML sanitizer bypass (GHSA-jhhp-r3r7-v2cg)</title><link href="https://window.name/posts/jodit-stored-xss-clean-html-bypass.html"/><id>https://window.name/posts/jodit-stored-xss-clean-html-bypass.html</id><updated>2026-10-10T12:00:00Z</updated><summary>Summary. Jodit, a widely used open-source WYSIWYG editor, shipped a clean-html sanitizer whose asynchronous background pass did not honour the cleanHTML.removeEventAttributes setting. On that path the sanitizer…</summary><category term="XSS"/><category term="GHSA"/><category term="Disclosure"/></entry><entry><title>Write-up: Stored XSS in phpMyFAQ via an html_entity_decode() sanitizer bypass (High, SA-2026-10-03)</title><link href="https://window.name/posts/phpmyfaq-stored-xss-html-entity-decode-bypass.html"/><id>https://window.name/posts/phpmyfaq-stored-xss-html-entity-decode-bypass.html</id><updated>2026-10-04T12:00:00Z</updated><summary>In short. phpMyFAQ sanitized a guest-submitted FAQ answer by encoding the dangerous characters and then, on the very next line, decoded them again with nothing to clean up afterwards. The raw markup is stored and runs…</summary><category term="XSS"/><category term="Disclosure"/></entry><entry><title>Write-up: Pre-authentication username enumeration in Keycloak via a login timing side-channel</title><link href="https://window.name/posts/keycloak-user-enumeration-timing-side-channel.html"/><id>https://window.name/posts/keycloak-user-enumeration-timing-side-channel.html</id><updated>2026-08-08T12:00:00Z</updated><summary>In short. Keycloak 26.6.1 shows the same &quot;Invalid username or password&quot; message whether or not an account exists, yet it answers a valid username noticeably faster than one that does not. That timing gap alone lets an…</summary><category term="Side-Channel"/><category term="Hardening"/><category term="Disclosure"/></entry><entry><title>Write-up: Access-control bypass to Slack&#x27;s mission control</title><link href="https://window.name/posts/slack-bug-bounty-journey.html"/><id>https://window.name/posts/slack-bug-bounty-journey.html</id><updated>2016-10-20T12:00:00Z</updated><summary>Summary. During a black-box test under the Slack bug bounty program, an access-control filter in front of the Apache mod_status handler could be bypassed by prefixing the path with several forward slashes. The filter…</summary><category term="Bug Bounty"/><category term="Access Control"/></entry><entry><title>Write-up: Remote code execution in Spring Security OAuth (CVE-2016-4977)</title><link href="https://window.name/posts/cve-2016-4977-spring-security-oauth-rce.html"/><id>https://window.name/posts/cve-2016-4977-spring-security-oauth-rce.html</id><updated>2016-10-13T12:00:00Z</updated><summary>Summary. Spring Security OAuth shipped a default Whitelabel Error Page that evaluated user-controlled input as a Spring Expression Language (SpEL) expression. An unauthenticated attacker could turn a single crafted…</summary><category term="RCE"/><category term="CVE"/><category term="Java"/></entry><entry><title>Write-up: Source-code disclosure via an SOH byte in Tomcat routing</title><link href="https://window.name/posts/source-code-leak-using-soh.html"/><id>https://window.name/posts/source-code-leak-using-soh.html</id><updated>2016-03-27T12:00:00Z</updated><summary>Summary. A target running Apache httpd in front of Apache Tomcat could be tricked into disclosing the source of server-side files. By appending the SOH control character (start of heading, 0x01 ) to a.jsp or.inc URL…</summary><category term="Bug Bounty"/><category term="Information Disclosure"/></entry><entry><title>Write-up: From virtual assistant to remote code execution</title><link href="https://window.name/posts/from-va-2-rce.html"/><id>https://window.name/posts/from-va-2-rce.html</id><updated>2013-12-16T12:00:00Z</updated><summary>Summary. During a black-box penetration test for a German financial institution, a customer-facing virtual assistant turned out to fetch a PHP file from a user-controlled URL and run the result through eval(). That made…</summary><category term="RCE"/><category term="PHP"/><category term="Pentest"/></entry><entry><title>Write-up: Remote code execution in eBay&#x27;s search (preg_replace /e)</title><link href="https://window.name/posts/ebay-remote-code-execution.html"/><id>https://window.name/posts/ebay-remote-code-execution.html</id><updated>2013-12-13T12:00:00Z</updated><summary>Summary. eBay&#x27;s search on sea.ebay.com ran query values through a server-side keyword filter that was built on preg_replace() with the /e modifier. That modifier evaluates the replacement as PHP, so a crafted value…</summary><category term="RCE"/><category term="PHP"/></entry><entry><title>Write-up: SQL injection in eBay&#x27;s news.php</title><link href="https://window.name/posts/exploitable-sqli-on-ebay-dot-com-analysis.html"/><id>https://window.name/posts/exploitable-sqli-on-ebay-dot-com-analysis.html</id><updated>2012-11-18T12:00:00Z</updated><summary>Summary. A news endpoint on eBay&#x27;s sea.ebay.com was vulnerable to error-based SQL injection through the checkbox array POST parameter. User input was concatenated into the SQL statement, which allowed extracting data…</summary><category term="SQL Injection"/></entry><entry><title>Write-up: Reflected XSS across Red Hat subdomains</title><link href="https://window.name/posts/xss-on-redhat-dot-com-analytics-script.html"/><id>https://window.name/posts/xss-on-redhat-dot-com-analytics-script.html</id><updated>2012-11-17T12:00:00Z</updated><summary>Summary. An Omniture analytics script deployed across *.redhat.com built its page-name variable from window.location and wrote it into an inline script block without escaping. A path crafted to close the string and open…</summary><category term="XSS"/><category term="Information Disclosure"/></entry><entry><title>Write-up: Reflected XSS in SAP.com&#x27;s tracking script</title><link href="https://window.name/posts/xss-on-sap-dot-com-analysis.html"/><id>https://window.name/posts/xss-on-sap-dot-com-analysis.html</id><updated>2012-11-11T12:00:00Z</updated><summary>Summary. SAP&#x27;s main website used a client-side tracking script, trackinghelper.js, that read values from window.location and wrote them into the page without escaping. A server-side filter blocked the obvious payloads…</summary><category term="XSS"/></entry><entry><title>Write-up: Origin confusion in Firefox via data: URL redirects</title><link href="https://window.name/posts/window-dot-location-dot-assign-flaw-in-firefox-15-dot-0-1.html"/><id>https://window.name/posts/window-dot-location-dot-assign-flaw-in-firefox-15-dot-0-1.html</id><updated>2012-10-08T12:00:00Z</updated><summary>Summary. Firefox 15.0.1 handled window.location.assign() with a data: URL differently from WebKit browsers and Internet Explorer. After assigning a data: location that had been reached through a redirect…</summary><category term="Browser"/></entry><entry><title>Write-up: DOM-based XSS and open redirect on Twitter.com</title><link href="https://window.name/posts/xss-via-hashtag-on-twitter-dot-com.html"/><id>https://window.name/posts/xss-via-hashtag-on-twitter-dot-com.html</id><updated>2012-10-07T12:00:00Z</updated><summary>Summary. A client-side redirect helper on twitter.com, twttr.griffin.redirectOnHash(), took the location hash and used it to navigate without validating the scheme. A hash beginning with #! followed by a javascript: URI…</summary><category term="XSS"/></entry><entry><title>Write-up: Open redirect to XSS in PayPal&#x27;s profile form</title><link href="https://window.name/posts/paypal-dot-com-cancel-button-xss-analysis.html"/><id>https://window.name/posts/paypal-dot-com-cancel-button-xss-analysis.html</id><updated>2012-10-07T12:00:00Z</updated><summary>Summary. Two buttons on PayPal&#x27;s developer profile form drove navigation from a returl parameter. The &quot;cancel&quot; button passed the value straight into location.href with no validation, giving open redirection and…</summary><category term="XSS"/><category term="Bug Bounty"/></entry><entry><title>Write-up: Address bar spoofing in Mobile Safari (CVE-2012-0674)</title><link href="https://window.name/posts/apple-safari-on-ios-5-dot-1-adressbar-spoofing-vulnerability.html"/><id>https://window.name/posts/apple-safari-on-ios-5-dot-1-adressbar-spoofing-vulnerability.html</id><updated>2012-05-08T12:00:00Z</updated><summary>Summary. Mobile Safari on iOS 5.1 (AppleWebKit/534.46) mishandled URLs opened with JavaScript&#x27;s window.open(), so the address bar could show one URL while the content came from a different origin. That made convincing…</summary><category term="Mobile"/><category term="Browser"/><category term="CVE"/></entry><entry><title>Write-up: Session cookie exposure in the Apple Store</title><link href="https://window.name/posts/apple-store-xss-via-missing-frame-protection.html"/><id>https://window.name/posts/apple-store-xss-via-missing-frame-protection.html</id><updated>2012-01-19T12:00:00Z</updated><summary>Summary. The Apple Store at store.apple.com was vulnerable to a cross-site scripting issue that allowed reading the session cookie and, as a result, acting in the context of another logged-in user. The absence of any…</summary><category term="XSS"/><category term="Hardening"/></entry><entry><title>Write-up: Session hijacking in the Skype client via Facebook integration</title><link href="https://window.name/posts/skype-client-remote-session-hijacking-over-facebook-integration.html"/><id>https://window.name/posts/skype-client-remote-session-hijacking-over-facebook-integration.html</id><updated>2011-07-29T12:00:00Z</updated><summary>Summary. A Facebook integration added to the Skype Windows client rendered content pulled from Facebook wall posts and comments inside the client without sanitizing it. A crafted wall comment was parsed and executed in…</summary><category term="Desktop-Clients"/></entry><entry><title>Write-up: Stored and reflected XSS in Google (VRP 2011)</title><link href="https://window.name/posts/google-bug-bounty-google-voice-xss.html"/><id>https://window.name/posts/google-bug-bounty-google-voice-xss.html</id><updated>2011-07-18T12:00:00Z</updated><summary>Summary. Looking at Google&#x27;s most widely used products in 2011, I found three cross-site scripting issues: a reflected XSS in the Google Voice calling-rate lookup, a stored XSS in Google Translate&#x27;s file upload, and a…</summary><category term="XSS"/><category term="Bug Bounty"/></entry><entry><title>Write-up: Reflected XSS on DENIC.de</title><link href="https://window.name/posts/denic-de-xss-via-custom-parameter.html"/><id>https://window.name/posts/denic-de-xss-via-custom-parameter.html</id><updated>2011-07-08T12:00:00Z</updated><summary>Summary. DENIC eG runs the central registry for the.de top-level domain. Its website at denic.de was vulnerable to reflected cross-site scripting through a parameter that was not part of the application&#x27;s normal URL…</summary><category term="XSS"/><category term="Disclosure"/></entry><entry><title>Write-up: Script execution on Apple.com via an XML ATTLIST declaration</title><link href="https://window.name/posts/apple-dot-com-attlist-declaration-causing-script-execution.html"/><id>https://window.name/posts/apple-dot-com-attlist-declaration-causing-script-execution.html</id><updated>2011-07-03T12:00:00Z</updated><summary>Summary. A page on apple.com inserted user-generated content into an HTML comment through an XML parsing path that mishandled declarations. By injecting an XML ATTLIST declaration inside the DOCTYPE, with the right…</summary><category term="XSS"/></entry><entry><title>Guidance: Reserved mailbox aliases that help prevent phishing</title><link href="https://window.name/posts/reserved-mailbox-aliases-prevent-phishing.html"/><id>https://window.name/posts/reserved-mailbox-aliases-prevent-phishing.html</id><updated>2011-06-15T12:00:00Z</updated><summary>Summary. Platforms that let users self-register mail addresses or aliases often have no blocklist of reserved names, so anyone can claim support@, security@, info@ or no-reply@ on the domain. That makes low-noise…</summary><category term="Privacy"/><category term="Hardening"/></entry><entry><title>Guidance: Why every company needs a published security contact</title><link href="https://window.name/posts/security-contact-addresses-rfc2142.html"/><id>https://window.name/posts/security-contact-addresses-rfc2142.html</id><updated>2011-06-13T12:00:00Z</updated><summary>Summary. Many organisations have no working way to receive a vulnerability report. The obvious addresses often bounce, and general contact forms rarely reach anyone who can act on a security issue. RFC 2142 has reserved…</summary><category term="Disclosure"/><category term="Essay"/></entry></feed>