Skip to content
Snippets Groups Projects
  • Eugen Rochko's avatar
    Improve signature verification safeguards (#8959) · 1787704e
    Eugen Rochko authored
    * Downcase signed_headers string before building the signed string
    
    The HTTP Signatures draft does not mandate the “headers” field to be downcased,
    but mandates the header field names to be downcased in the signed string, which
    means that prior to this patch, Mastodon could fail to process signatures from
    some compliant clients. It also means that it would not actually check the
    Digest of non-compliant clients that wouldn't use a lowercased Digest field
    name.
    
    Thankfully, I don't know of any such client.
    
    * Revert "Remove dead code (#8919)"
    
    This reverts commit a00ce8c9.
    
    * Restore time window checking, change it to 12 hours
    
    By checking the Date header, we can prevent replaying old vulnerable
    signatures. The focus is to prevent replaying old vulnerable requests
    from software that has been fixed in the meantime, so a somewhat long
    window should be fine and accounts for timezone misconfiguration.
    
    * Escape users' URLs when formatting them
    
    Fixes possible HTML injection
    
    * Escape all string interpolations in Formatter class
    
    Slightly improve performance by reducing class allocations
    from repeated Formatter#encode calls
    
    * Fix code style issues
    1787704e