Vulnerability Summary
HackerOne disclosed report --> https://hackerone.com/reports/3590586 by nullcathedral
When sanitizing CSS, Roundcube's sanitize_css_block() in rcube_utils.php converts position: fixed to position: absolute to prevent overlay attacks (L555-557).
However, the check uses strcasecmp($value, 'fixed') === 0, which requires the entire trimmed value to be exactly "fixed". The value "fixed !important" fails this comparison. The value then flows through the generic token-based validation path, where explode_css_property_block() splits it into tokens ['fixed', '!important'] that both individually pass the allowlist, reassembling as position: fixed !important in the output.
Step 1: Send an HTML email with the following body:
<!DOCTYPE html>
No comments yet.
Be the first to share your thoughts
Log in to join the discussion.
Sign In