Commit graph

129209 commits

Author SHA1 Message Date
SomeRandomDeveloper
45ebd1ba63 Update git submodules
* Update skins/Vector from branch 'REL1_43'
  to c49fab7557ab0f2478e1053a54e47dfd0e9ec6df
  - SECURITY: Insert sticky header labels as text instead of HTML
    
    CVE-2025-61657
    
    Assigning to.innerHTML to from.textContent essentially unescapes
    any characters inside the labels.
    This fixes a stored XSS vulnerability through system messages.
    
    Bug: T398636
    Change-Id: Ib78c3113a3d7b195bf348e8a52f29058eaf9a59f
2025-10-02 20:25:49 +00:00
Dreamy Jazz
49907788ab SECURITY: Use ManualLogEntry::getDeleted in ::getRecentChange
CVE-2025-61639

Why:
* ManualLogEntry::getRecentChange creates the RecentChange object
  for the ManualLogEntry instance.
** This does not currently include the deleted flags set in the
   ManualLogEntry
** Without this, the RecentChange that is created will not be
   marked as deleted and published as public.
* Therefore, this means that any code which hides a log entry
  from the creation of the entry will cause a unintentionally
  public recent change entry.
** The AbuseFilter extension attempts to suppress the log entry
   for the block on it's creation, which therefore hits this
   security bug.

What:
* Update RecentChange::newLogEntry to accept a $deleted field
  which is set by default as 0 which is used as the value of
  rc_deleted.
* Update ManualLogEntry::getRecentChange to pass the value of
  ManualLogEntry::getDeleted to RecentChange::newLogEntry.
* Test that this fix worked.

Bug: T280413
Change-Id: I681a49ac7d7b22ffe259b976ad5315490dda467b
2025-10-02 19:38:49 +00:00
Dillon Hardy
2a0451f75d SECURITY: Prevent leaking hidden usernames in Watchlist/RecentChanges
CVE-2025-61646

If an individual editor makes consecutive revisions on a single page,
and only some are marked as hidden username, the non-hidden ones will
reveal the (username hidden) true identity.

Enable the "Group changes by page in recent changes and watchlist" and
"Use non-JavaScript interface" preferences to reproduce the issue. See
the referenced Phabricator tasks for more details.

The solution here is to separate hidden and visible editors from the
grouping on the frontend side, using existing helper functions.

Bug: T398706
Change-Id: I1408fe7712ffef3ba76294d8483c7b7624a0d11c
2025-10-02 19:38:49 +00:00
Dreamy Jazz
f7c717b09a SECURITY: Don't send suppressed recent changes to RCFeeds
CVE-2025-61643

Why:
* Some RecentChange objects being processed by
  RecentChangeRCFeedNotifier::notifyRCFeeds can be already
  deleted / suppressed
** This can happen for log entries which are deleted or suppressed
   when they are created such as described by T280413
* RecentChanges feeds are often not equipped to handle appropriate
  redaction of deleted or suppressed recent change entries
** Therefore, sending them suppressed recentchanges entries will
   likely publicly expose the suppressed information
* As a short-term fix we can stop sending any defined RCFeed
  instances RecentChange objects which are suppressed
** We may want to consider making RCFeeds capable of suppressing
   information before publishing the data, but that would need a
   more considered approach.

What:
* Update RecentChangeRCFeedNotifier::notifyRCFeeds to return early
  if the rc_deleted attribute on the provided RecentChange object
  isn't zero (0 means not deleted).
* Add a PHPUnit test to check for this

Bug: T403757
Change-Id: Ic5e553bab8e82e7faee323a46ed6704043c5163b
2025-10-02 19:38:49 +00:00
Roan Kattouw
71ebf1a1cf SECURITY: Escape submit button label for Codex-based HTMLForms
CVE-2025-61642

HTMLButtonField::buildCodexComponent() expects raw HTML for its button
label parameter, and this makes sense in the context of that class. But
it was also being used to build the submit button, where we were passing
in a plain text button label.

Escape the button label before passing it in, and more clearly document
that this parameter expects raw HTML.

Bug: T402313
Change-Id: I7fe42df7b9a3fd97eaf89515b7c1afb5ae3e688c
2025-10-02 19:36:28 +00:00
Amir Sarabadani
199aab790a SECURITY: api: Disable maxsize in QueryAllPages in miser mode
CVE-2025-61641

This triggers slow queries and is a DDoS vector

Bug: T298690
Change-Id: Id80f166633a5085378c687551bd54056bc723c09
2025-10-02 19:21:42 +00:00
SomeRandomDeveloper
d2d60515fb SECURITY: Parse messages instead of inserting them as HTML
CVE-2025-61640

This fixes a stored i18n XSS vulnerability in
Special:RecentChangesLinked.

Bug: T402075
Change-Id: I94d89e3f14920122cfd2f949850027122d1e2b6b
2025-10-02 19:21:42 +00:00
C. Scott Ananian
5f21cc528e SECURITY: Sanitize data- attributes
CVE-2025-61638

Previously, if you managed to get data- attributes with e.g spaces or
slashes in the name into validateAttributes(), then the rest of the
attribute name would not be validated and get concatenated into HTML
that would eventually be parsed as separate attributes (or even tag
contents and new markup, if you had a > in the name). I don’t think this
was possible via regular <p> parsing, as decodeTagAttributes() would
decode the attributes differently in that case, but it was possible via
various wikitext constructs, including {{#tag:}}.

Tighten the regex to throw out such invalid attributes, and add a few
tests in this direction. More refactoring, and especially more tests,
can happen later, once this chaneg is public and we can benefit from CI.

Bug: T401099
Change-Id: Id095a3278083dbedba083d5aa3c1cbaa379a682f
Co-Authored-By: Lucas Werkmeister <lucas.werkmeister@wikimedia.de>
2025-10-02 19:21:42 +00:00
SomeRandomDeveloper
37cc73d931 SECURITY: Escape three system messages used by live preview
CVE-2025-61637

This addresses three stored XSS vulnerabilities that allowed
injecting scripts into the DOM by editing the 'preview',
'editlink' and 'viewsourcelink' system messages.

Bug: T394856
Change-Id: I8e5a234d647ce5559a052f86d1b2ad61812764b9
2025-10-02 19:21:42 +00:00
Dayllan Maza
596c2615de SECURITY: Escape rawElement $content
CVE-2025-61636

Bug: T394396
Change-Id: I1ed54e4f063ec10d412c0db95b1bfed4a084b1d4
2025-10-02 19:18:18 +00:00
bpirkle
7c233a1670 SECURITY: REST: Set cache-control value of max-age=60 for redirects
CVE-2025-61634

Indirect redirect loops can cause a series of 307 redirects
that overwhelm the servers. Caching the redirect allows
this to resolve.

Bug: T387478
Change-Id: Ibfde4e5ece3d58a1f573c37b46b568a5847fca01
2025-10-02 11:12:19 +01:00
Taavi Väänänen
b5a171c33c COPYING: Do not reference old FSF postal address
As Debian's Lintian tool points out, the FSF has actually moved offices
and this address is no longer valid.

All updates are directly copy-pasted from
https://www.gnu.org/licenses/old-licenses/gpl-2.0.txt

Bug: T400642
Change-Id: Idb9af3119641b614d810843730fb73aebd30318c
(cherry picked from commit 8b215b44a03712b260fb71a4934fda2f89b458ae)
2025-10-02 09:32:10 +00:00
Reedy
0494d077f7 RELEASE-NOTES-1.43: Update
Change-Id: I6137566b18b768d9b424c9a44801cea030e4fe37
2025-09-30 19:54:45 +00:00
Translation updater bot
118fddb3f2 Update git submodules
* Update skins/MinervaNeue from branch 'REL1_43'
  to f9c39a05ed0cb795330e9225ed56b85a5821a69d
  - Localisation updates from https://translatewiki.net.
    
    Change-Id: I2b8c84a69e41b257c9e0b31ed6a19b36d5522e2e
2025-09-30 06:49:52 +00:00
Translation updater bot
0416eb57f8 Update git submodules
* Update skins/Vector from branch 'REL1_43'
  to 2c348ec4b81c0d2bb13520e2e0a2013604ff06f2
  - Localisation updates from https://translatewiki.net.
    
    Change-Id: I4bfe0275ced60421a60de37b6dab7f6a985beaea
2025-09-30 06:49:51 +00:00
Translation updater bot
31c89836a0 Update git submodules
* Update skins/MonoBook from branch 'REL1_43'
  to 91a719b94ec03964eff71ff1ba9cfb4cae4a84df
  - Localisation updates from https://translatewiki.net.
    
    Change-Id: Id19aa9b699b3f0480588913d06c63bcd2de5e2ea
2025-09-30 06:49:49 +00:00
Translation updater bot
5d7238a363 Update git submodules
* Update extensions/VisualEditor from branch 'REL1_43'
  to 79f3eeb4931194e61caf25a3b6d5a0448653f2d6
  - Localisation updates from https://translatewiki.net.
    
    Change-Id: I808fc1ca5f2aa4429e3d99a6ef362090d8864d27
2025-09-30 06:48:10 +00:00
Translation updater bot
d0da819481 Update git submodules
* Update extensions/WikiEditor from branch 'REL1_43'
  to f1aaaed8f14d1e6a3aa01cebed27f5aca8eb21c5
  - Localisation updates from https://translatewiki.net.
    
    Change-Id: I808fc1ca5f2aa4429e3d99a6ef362090d8864d27
2025-09-30 06:48:01 +00:00
Translation updater bot
bd01517731 Update git submodules
* Update extensions/Thanks from branch 'REL1_43'
  to 8e23f487b4db9f45e53861ce6bdd9f3a7aa4a344
  - Localisation updates from https://translatewiki.net.
    
    Change-Id: Iceca1404ae33f55ac1231276e1c620a56fc6b962
2025-09-30 06:47:33 +00:00
Translation updater bot
4d92b3efac Update git submodules
* Update extensions/TemplateData from branch 'REL1_43'
  to 3e260da9cd287dc4b827aabdf5c2a46f83aafbc4
  - Localisation updates from https://translatewiki.net.
    
    Change-Id: I176411c9a26432a17f5a8b924ed852264e29dd9d
2025-09-30 06:47:32 +00:00
Translation updater bot
c42b828ec6 Update git submodules
* Update extensions/SpamBlacklist from branch 'REL1_43'
  to b6c3567c2991d342426ccc488f5eadadc2645ec3
  - Localisation updates from https://translatewiki.net.
    
    Change-Id: I82d5f2d4791d3c474c557dcd2befcf8f56a80865
2025-09-30 06:47:27 +00:00
Translation updater bot
f4e506615a Update git submodules
* Update extensions/Scribunto from branch 'REL1_43'
  to ddc54a3fca760823bd06ea0f0ebf045bf48a6ba8
  - Localisation updates from https://translatewiki.net.
    
    Change-Id: Id303f0893696fa5df174ae08973c5abef0296e59
2025-09-30 06:47:26 +00:00
Translation updater bot
de7b2eead2 Update git submodules
* Update extensions/OATHAuth from branch 'REL1_43'
  to a0efb41affd25c2f14e47ae1755307ee90e35b1e
  - Localisation updates from https://translatewiki.net.
    
    Change-Id: Ibb9d11fdf29b04f843eff9a61664dfff5bf3633d
2025-09-30 06:47:04 +00:00
Translation updater bot
a2c64e15e7 Update git submodules
* Update extensions/Nuke from branch 'REL1_43'
  to 79b168a74cdc379bd6099efb3a510d3d286305fb
  - Localisation updates from https://translatewiki.net.
    
    Change-Id: I4b98110b6e9bd29a9eacc66cc4e65b8127742d24
2025-09-30 06:46:59 +00:00
Translation updater bot
77df11ec2c Update git submodules
* Update extensions/Math from branch 'REL1_43'
  to 9bdf88a7a971d5b30b50c17a88f592320780f107
  - Localisation updates from https://translatewiki.net.
    
    Change-Id: Ic04f84810ca71410ca480fb9c16880b2d67a9085
2025-09-30 06:46:52 +00:00
Translation updater bot
128e4ed6c6 Update git submodules
* Update extensions/InputBox from branch 'REL1_43'
  to 0f9f87177b79490019650ae0e6965397d08ad299
  - Localisation updates from https://translatewiki.net.
    
    Change-Id: If91fedcac6475514972c5508bf43934fbd4d9cae
2025-09-30 06:46:40 +00:00
Translation updater bot
b530a1131c Update git submodules
* Update extensions/ConfirmEdit from branch 'REL1_43'
  to 54908a917b43cee8f3f473ad97f5d5b6758b4861
  - Localisation updates from https://translatewiki.net.
    
    Change-Id: I40be83cd67657a901944ed432cd84f3c046088d9
2025-09-30 06:46:19 +00:00
Translation updater bot
5a9258e5c4 Update git submodules
* Update extensions/DiscussionTools from branch 'REL1_43'
  to 3f25bcc823c0fa09a8d604fb436daa06ddb244df
  - Localisation updates from https://translatewiki.net.
    
    Change-Id: Ia98dc81c3ea460ab88339d9a22d8e7b19656a46a
2025-09-30 06:46:11 +00:00
Translation updater bot
3a04197639 Update git submodules
* Update extensions/Echo from branch 'REL1_43'
  to fb8fe7bf4096a40e7a000d9a25264ab4d101bdb3
  - Localisation updates from https://translatewiki.net.
    
    Change-Id: I419cfc9dcbe24416c384260668beff75b3563d0c
2025-09-30 06:46:10 +00:00
Translation updater bot
5ee481dbb7 Update git submodules
* Update extensions/CiteThisPage from branch 'REL1_43'
  to 8db01cb5b59cd647ddc178127bc0c365e609dbc6
  - Localisation updates from https://translatewiki.net.
    
    Change-Id: Ib2ba0e6671cb5ddce444c97b9d9ee842e881d998
2025-09-30 06:45:57 +00:00
Translation updater bot
6e27d24827 Update git submodules
* Update extensions/Cite from branch 'REL1_43'
  to 99f2c99c9d8a27cedfadc1d3e3ff71d9c73e0076
  - Localisation updates from https://translatewiki.net.
    
    Change-Id: Iee5b3446b8eb91e4ded2f1ea9e3d7dac66d817ed
2025-09-30 06:45:54 +00:00
Translation updater bot
1dd413a469 Update git submodules
* Update extensions/AbuseFilter from branch 'REL1_43'
  to 309c87a224ff278d57d4cb25420fec3bba8abe7a
  - Localisation updates from https://translatewiki.net.
    
    Change-Id: I9c22244bc450c78e5509fe1f223692b601dbbc98
2025-09-30 06:45:33 +00:00
Translation updater bot
9a98b28801
Localisation updates from https://translatewiki.net.
Change-Id: I144226431099aa89f3ae3bf3961cf7838f033388
2025-09-30 07:35:33 +02:00
Ammarpad
5015ea97ef Update git submodules
* Update extensions/DiscussionTools from branch 'REL1_43'
  to 9176fadd2b9abafff7dd6ec892f12dbfbf7c8b3b
  - ApiDiscussionToolsPageInfo: Show nice error for deleted revisions
    
    This is similar fix as b8a28d6cfc53e41aa04abe855818213f95df322d.
    
    Bug: T380351
    Change-Id: I1b03a00c5627e1fa9e48aee9e2ed3d8b1ea332f7
    (cherry picked from commit 6e17c85409a618303937382ab74850d16b60d26a)
2025-09-29 23:41:03 +00:00
Bartosz Dziewoński
0ae36261f8 Update git submodules
* Update extensions/DiscussionTools from branch 'REL1_43'
  to 8e770dce8ac8302f418a44ac50a7442fcacbce41
  - Remove cache compat code for content placeholders
    
    Follow-up to I563219f3298a8740e158d130492bf3d2897784d7.
    
    Bug: T396248
    Change-Id: I126203ab1d3ec8c1719cbb5460a887e4d0c2cc6d
    (cherry picked from commit 03939934677f167e34484c01ec4c7255c85a7de8)
    (cherry picked from commit afaa6d6369eb911fabd8d23496e5ffdcc079b1b3)
2025-09-29 23:05:26 +00:00
Ed Sanders
142b93787c Update git submodules
* Update extensions/DiscussionTools from branch 'REL1_43'
  to 7f68a99593ff4f10457d0aea9a5723f39c1264c6
  - Support placeholders mangled by MF's HtmlFormatter
    
    Bug: T396695
    Change-Id: Ie12e90639e13218b77c7d01d50196ff0c474a4c7
    (cherry picked from commit 2bce20e8e60a8bcd2eccc6cc4bff2ed150021a83)
    (cherry picked from commit a13737b884150e28aee65d04a91a2125126ed4cd)
2025-09-29 23:01:56 +00:00
Ed Sanders
a365492815 Update git submodules
* Update extensions/DiscussionTools from branch 'REL1_43'
  to 802e034f11376918636074ac16b0fdaa3f92068e
  - Remove placeholders when features disabled
    
    We should always be removing unused placeholders, but
    now that they are custom elements, it is more important
    as they can affect CSS selectors.
    
    Bug: T397011
    Change-Id: I7c337149aceeb237a836439456dc8e9b826b3799
    (cherry picked from commit b93d0d64b0647bc6055856bfe9d65283e48231f3)
    (cherry picked from commit a4686b050bc7342970f8757acfc9fbb468c2685e)
2025-09-29 22:58:42 +00:00
Ed Sanders
42945d5088 Update git submodules
* Update extensions/DiscussionTools from branch 'REL1_43'
  to 330e614a1506a63cae6af6fdd9338bb040d6000a
  - Post-process timestamp links whenever DT is available
    
    This matches the logic in ParserHooks which adds the
    timestamp link placeholders.
    
    Change-Id: Ia3116eb2d75f6034f131a53093fbf44bceb0d9d5
    (cherry picked from commit 2cb7b2f527d5a59cb3343a28b00f9ad74267808b)
    (cherry picked from commit f874b2145c2c7f44f1d914a5a4d34f80537a31d2)
2025-09-29 22:58:34 +00:00
Alexander Vorwerk
807513767a Update git submodules
* Update extensions/SecureLinkFixer from branch 'REL1_43'
  to d7ffecb943c6f43c992f29bce3977be6d1298b03
  - Updating domains.php from Mozilla
    
    Change-Id: I7966190849dec262e75906d4e1deb107125ee64a
2025-09-29 22:38:45 +00:00
Ed Sanders
0fee83ec30 Update git submodules
* Update extensions/DiscussionTools from branch 'REL1_43'
  to 7737d63e81f8fb5c9ca4accd288e9cc075374536
  - Use custom elements for content placeholders, with HtmlHelper::modifyElement
    
    Instead of comment nodes and complex regexes.
    
    Bug: T396248
    Change-Id: I563219f3298a8740e158d130492bf3d2897784d7
    (cherry picked from commit 37856941cffb646067c3df1a7ef639ffe65a475c)
2025-09-29 22:38:45 +00:00
Alexander Vorwerk
5bc79fb647 Regenerate patch-drop-page_restrictions-pr_user.sql for SQLite
Bug: T400505
Change-Id: Iff77877103e3a45d3b190f9129791d9a8de7e7ae
2025-09-29 22:19:19 +00:00
Bartosz Dziewoński
1bf9db0779 Re-apply "Use Remex for DeduplicateStyles transform"
This reverts commit 7f63d5250e,
re-applying commit 82da9cf14b.
It can be re-applied safely after T354361 was fixed.

Most of the incidental changes from the original patch are
no longer needed, as they were made unnecessary by other work,
or were applied in I4cb2f29cf890af90f295624c586d9e1eb1939b95.

Change-Id: I1ff9a7c94244bffffe5574c0b99379ed1121a86d
(cherry picked from commit 09703c2c774a65dd9ee57ec83154aa1eab5a9d03)
2025-09-29 22:01:15 +00:00
C. Scott Ananian
a6739e066e Use Remex/HtmlHelper to implement Parser::replaceTableOfContents
This is more robust and secure than the regular expression previously
used to extract the <meta> tag.

We also improve HtmlHelper slightly be adding the ability to replace
an element with an 'outerHTML' string.

Because our output is being run through Remex, there is a slightly
larger degree of HTML normalization in the output than previously,
which is visible in some small tweaks to test case outputs.

Bug: T381617
Depends-On: I2712e0fa9272106e8cd686980f847ee7f6385b6f
Change-Id: I4cb2f29cf890af90f295624c586d9e1eb1939b95
(cherry picked from commit 7ebd8034b54495f28f4c5583d4fa55071634b593)
2025-09-29 22:01:08 +00:00
Arlo Breault
1f51ebac15 OutputTransform: Fix double IDs on headings
Based on Ifeaaba1d0215e6f67f889a09c02879cc9079aa19

Bug: T366083
Co-Authored-by: Bartosz Dziewoński <dziewonski@fastmail.fm>
Change-Id: I2712e0fa9272106e8cd686980f847ee7f6385b6f
(cherry picked from commit 5757066096a0eac7f722e63aa3722e068915d33a)
2025-09-29 21:11:58 +00:00
Bartosz Dziewoński
a52cd4462c Update git submodules
* Update extensions/DiscussionTools from branch 'REL1_43'
  to 51f9e400a357159938cc83d62392dbdb447f5eed
  - CommentFormatter: Omit unused parameter for action=dtunsubscribe
    
    Change-Id: I109d41fa22a0fc7d4fb670b2d0afe702c4dbccef
    (cherry picked from commit 868be64d9a2731c5e1933097751685a1641d510b)
2025-09-29 20:08:38 +00:00
Ed Sanders
ab9412a7fa Update git submodules
* Update extensions/DiscussionTools from branch 'REL1_43'
  to 6229dc31e9222aaa70f6d6b98189b3c90f251a9a
  - CommentFormatter: Remove code supporting legacy HTML output
    
    Change-Id: I9ffbf8425f622d3045de794b039f8e2e72015fb1
    (cherry picked from commit 6bc40e769578d24642d33bb8bf5b50f3455887be)
2025-09-29 19:58:14 +00:00
Ed Sanders
f94e0d9c71 Update git submodules
* Update extensions/DiscussionTools from branch 'REL1_43'
  to 3af0166f131a8147c05c1045df3edfbc51690172
  - Add signature range markers to the DOM
    
    Without these, the client side code is unable to
    extract comment message bodies. In theory there can
    be multiple signatures in one comment, but in practice
    we only care about the last one.
    
    Change-Id: I515a2878eb5aef88d05d8b62462e91500907a73a
    (cherry picked from commit 7fb4369ae8c283caa2a41a27f809b091124c0b4b)
2025-09-29 19:51:59 +00:00
Derk-Jan Hartman
702c6a814c Metadata: ignore LocationCreated, similar to LocationShown
Bug: T394968
Change-Id: I413160a056625b2a4f21c69ffbbced5b42c67bb9
(cherry picked from commit f616017c7b718157096af3dfbc101692258fcae1)
2025-09-29 16:47:32 +00:00
Reedy
d0a06b88af Upgrading wikimedia/parsoid (v0.20.3 => v0.20.4)
Depends-On: I72f3f684dc3581d1260e9fea4a9e8a224008b6b3
Change-Id: I52a637de78dfbeb265ce3b0693db678a9fcd9db6
2025-09-29 16:47:11 +00:00
Reedy
84a13300b3 Update git submodules
* Update vendor from branch 'REL1_43'
  to d9b7761127561cb4c504a86925c2c2d04088b3d7
  - Upgrading wikimedia/parsoid (v0.20.3 => v0.20.4)
    
    Change-Id: I72f3f684dc3581d1260e9fea4a9e8a224008b6b3
2025-09-29 16:26:13 +00:00