If-So Dynamic Content Personalization

if-so · by ifso · wordpress.org ↗ · SVN ↗
Active installs
8k+
Current version
1.9.8
Added
2017-03-23
Last updated
2026-04-26 (6d ago)
First seen by beacon
11d ago
Total downloads
303,420

Alerts (0)

No open alerts.

Show 1 resolved alert
Medium code_pattern Resolved · fp:vendor_premium_update_channel 2026-04-30 20:41:12 (1d ago)
Slugif-so
Patternpuc_update_hijack
Kindbuiltin
Version1.9.8
Hit count1
First hit
File
extensions/extension-base/extension-initializer-base.class.php
Line
16
Snippet
$myUpdateChecker = PucFactory::buildUpdateChecker( //Check for updates
Explanationplugin calls `::buildUpdateChecker()` — the factory entry point of the Yahnis Elsts Plugin Update Checker library. A plugin distributed through wordpress.org that registers its own update source is bypassing the Plugin Review Team: every install polls the non-wp.org URL on cron and installs whatever JSON + zip it returns, with full plugin-author permissions. This is the mechanism behind the `anadnet`/quick-pagepost-redirect-plugin compromise (2021) where the author seeded 70,000+ installs through tagged releases and then removed the library from trunk to hide the persistence. Any URL argument pointing away from `downloads.wordpress.org`/`api.wordpress.org` is the hijack signal.
Shapeunparseable
Url
Url host
Slug arg
View raw JSON
{
    "slug": "if-so",
    "pattern": "puc_update_hijack",
    "kind": "builtin",
    "version": "1.9.8",
    "hit_count": 1,
    "first_hit": {
        "file": "extensions/extension-base/extension-initializer-base.class.php",
        "line": 16,
        "snippet": "$myUpdateChecker = PucFactory::buildUpdateChecker(      //Check for updates"
    },
    "explanation": "plugin calls `::buildUpdateChecker()` \u2014 the factory entry point of the Yahnis Elsts Plugin Update Checker library. A plugin distributed through wordpress.org that registers its own update source is bypassing the Plugin Review Team: every install polls the non-wp.org URL on cron and installs whatever JSON + zip it returns, with full plugin-author permissions. This is the mechanism behind the `anadnet`/quick-pagepost-redirect-plugin compromise (2021) where the author seeded 70,000+ installs through tagged releases and then removed the library from trunk to hide the persistence. Any URL argument pointing away from `downloads.wordpress.org`/`api.wordpress.org` is the hijack signal.",
    "shape": "unparseable",
    "url": null,
    "url_host": null,
    "slug_arg": null
}

SVN committers (1)

Accounts with actual commit access to if-so on plugins.svn.wordpress.org, reconstructed from svn log. This is the list that matters for ownership changes — not the readme contributors.

Committer Member since Commits First commit Latest commit
If-So Dynamic Content Young account 2017-03-23 3 2017-04-16 · r1638685 2026-04-26 · r3515809

Readme contributors (1)

Names the plugin's readme declares as contributors. A soft signal — anyone can be listed. The SVN access column is the ground-truth cross-reference: does this contributor actually commit code?

Contributor Member since SVN access Status
If-So Dynamic Content 2017-03-23 3 commits Active

Versions (95 most recent)

Version Released Download
1.9.8 2026-04-26 · 6d ago zip
1.9.7 2026-03-09 · 1mo ago zip
1.9.6 2026-01-12 · 3mo ago zip
1.9.5.1 2025-12-11 · 4mo ago zip
1.9.5 2025-10-28 · 6mo ago zip
1.9.4.1 2025-08-25 · 8mo ago zip
1.9.4 2025-07-22 · 9mo ago zip
1.9.3.2 2025-06-03 · 11mo ago zip
1.9.3.1 2025-04-27 · 1y ago zip
1.9.3 2024-12-10 · 1y ago zip
1.9.2.2 2024-11-14 · 1y ago zip
1.9.2 2024-11-13 · 1y ago zip
1.9.2.1 2024-11-13 · 1y ago zip
1.9.1 2024-11-09 · 1y ago zip
1.9 2024-08-28 · 1y ago zip
1.8.0.4 2024-08-14 · 1y ago zip
1.8.1 2024-08-12 · 1y ago zip
1.8.0.3 2024-06-04 · 1y ago zip
1.8.0.2 2024-03-28 · 2y ago zip
1.8.0.1 2024-03-26 · 2y ago zip
1.8 2024-02-28 · 2y ago zip
1.7.1.1 2024-01-28 · 2y ago zip
1.7.1 2023-12-27 · 2y ago zip
1.7 2023-12-13 · 2y ago zip
1.6.3.1 2023-11-17 · 2y ago zip
1.6.3 2023-09-18 · 2y ago zip
1.6.2 2023-08-15 · 2y ago zip
1.6.1.2 2023-06-08 · 2y ago zip
1.6.1.1 2023-05-14 · 2y ago zip
1.6.1 2023-03-28 · 3y ago zip
1.6.0 2023-03-05 · 3y ago zip
1.5.9 2022-11-08 · 3y ago zip
1.5.8 2022-09-08 · 3y ago zip
1.5.7.2 2022-06-30 · 3y ago zip
1.5.7.1 2022-06-13 · 3y ago zip
1.5.7 2022-06-08 · 3y ago zip
1.5.6.2 2022-05-26 · 3y ago zip
1.5.6.1 2022-02-22 · 4y ago zip
1.5.6 2022-02-03 · 4y ago zip
1.5.5.1 2022-01-26 · 4y ago zip
1.5.5 2021-09-14 · 4y ago zip
1.5.4.2 2021-08-02 · 4y ago zip
1.5.4.1 2021-06-03 · 4y ago zip
1.5.3.2 2021-03-14 · 5y ago zip
1.5.3.1 2021-01-23 · 5y ago zip
1.5.2.4 2020-12-18 · 5y ago zip
1.5.2.2 2020-12-09 · 5y ago zip
1.5.2.1 2020-11-17 · 5y ago zip
1.5.2 2020-11-06 · 5y ago zip
1.5.1 2020-10-05 · 5y ago zip
1.5.0.1 2020-09-13 · 5y ago zip
1.4.9.1 2020-05-08 · 5y ago zip
1.4.9 2020-05-03 · 5y ago zip
1.4.8 2020-04-23 · 6y ago zip
1.4.7 2020-04-21 · 6y ago zip
1.4.6.1 2020-04-05 · 6y ago zip
1.4.6 2020-03-24 · 6y ago zip
1.4.5 2020-02-09 · 6y ago zip
1.0.6 2020-02-04 · 6y ago zip
1.1.4 2020-02-04 · 6y ago zip
1.2.0 2020-02-04 · 6y ago zip
1.3.2 2020-02-04 · 6y ago zip
1.3.3 2020-02-04 · 6y ago zip
1.4.0 2020-02-04 · 6y ago zip
1.4.3 2020-02-04 · 6y ago zip
1.4.4 2020-01-14 · 6y ago zip
1.4.2 2019-11-05 · 6y ago zip
1.4.1 2019-11-03 · 6y ago zip
1.3.1 2018-09-25 · 7y ago zip
1.3.0 2018-08-12 · 7y ago zip
1.2.9 2018-06-12 · 7y ago zip
1.2.8 2018-05-19 · 7y ago zip
1.2.7 2018-04-11 · 8y ago zip
1.2.6 2017-08-22 · 8y ago zip
1.2.5 2017-08-02 · 8y ago zip
1.2.3 2017-05-31 · 8y ago zip
1.2.2 2017-05-31 · 8y ago zip
1.2.1 2017-05-31 · 8y ago zip
1.1.9 2017-05-31 · 8y ago zip
1.1.8 2017-05-31 · 8y ago zip
1.1.7 2017-05-31 · 8y ago zip
1.1.6 2017-05-31 · 8y ago zip
1.1.5 2017-05-31 · 8y ago zip
1.1.3 2017-05-07 · 8y ago zip
1.1.1 2017-04-20 · 9y ago zip
1.1.0 2017-04-19 · 9y ago zip
1.0.9 2017-04-19 · 9y ago zip
1.0.8 2017-04-18 · 9y ago zip
1.0.7 2017-04-16 · 9y ago zip
1.0.2 2017-04-16 · 9y ago zip
1.0.5 2017-04-16 · 9y ago zip
1.0.3 2017-03-27 · 9y ago zip
1.0.1 2017-03-27 · 9y ago zip
1.0 2017-03-27 · 9y ago zip
0.1 2017-03-27 · 9y ago zip