GiveWP, ਜੋ ਕਿ ਮਿਲੀਅਨਾਂ ਚੈਰੀਟੇਬਲ ਸਾਈਟਾਂ ਨੂੰ ਚਲਾਉਣ ਵਾਲਾ WordPress donation plugin ਹੈ, ਅਚਾਨਕ ਇੱਕ ਗੰਭੀਰ remote-code-execution flaw (ਰਿਮੋਟ-ਕੋਡ-ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਖ਼ਰਾਬੀ) ਦਾ ਸਾਹਮਣਾ ਕਰ ਰਿਹਾ ਹੈ। CVE-2026-82222 ਨੇ CVSS 'ਤੇ ਪੂਰੇ 10.0 ਅੰਕ ਪ੍ਰਾਪਤ ਕੀਤੇ ਹਨ ਅਤੇ ਇਹ ਇੰਟਰਨੈੱਟ 'ਤੇ ਕਿਸੇ ਵੀ ਵਿਅਕਤੀ ਨੂੰ ਕਮਜ਼ੋਰ ਸਰਵਰ 'ਤੇ ਮਨਮੋਗੇ commands ਚਲਾਉਣ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ। ਇਸਦਾ ਹੱਲ version 4.16.7.2 ਵਿੱਚ ਆ ਗਿਆ ਹੈ।

ਇਹ ਬੱਗ ਕਿਉਂ ਮਹੱਤਵਪੂਰਨ ਹੈ

GiveWP ਅਣਗਿਣਤ ਫੰਡ ਇਕੱਠੇ ਕਰਨ ਵਾਲੇ (fundraising) ਪੇਜਾਂ ਦੇ ਕੇਂਦਰ ਵਿੱਚ ਹੈ। ਸਾਈਟ ਮਾਲਕ ਦਾਨਦਾਤਾਵਾਂ ਦਾ ਡੇਟਾ ਸੰਭਾਲਣ, ਭੁਗਤਾਨ ਪ੍ਰੋਸੈਸ ਕਰਨ ਅਤੇ ਸੈਸ਼ਨ ਜਾਣਕਾਰੀ ਸਟੋਰ ਕਰਨ ਲਈ ਇਸ 'ਤੇ ਭਰੋਸਾ ਕਰਦੇ ਹਨ। ਇੱਕ ਹਮਲਾਵਰ ਜੋ ਅੰਡਰਲਾਈਂਗ ਸਰਵਰ 'ਤੇ ਕੋਡ ਚਲਾ ਸਕਦਾ ਹੈ, ਉਹ ਕ੍ਰੈਡੈਂਸ਼ੀਅਲ ਚੋਰੀ ਕਰ ਸਕਦਾ ਹੈ, ਸਾਈਟ ਨੂੰ ਵਿਗਾੜ (deface) ਸਕਦਾ ਹੈ, ਜਾਂ ਨੈੱਟਵਰਕ ਦੇ ਹੋਰ ਹਿੱਸਿਆਂ ਤੱਕ ਪਹੁੰਚ ਸਕਦਾ ਹੈ। ਕਿਉਂਕਿ ਇਹ ਕਮਜ਼ੋਰੀ ਬਿਨਾਂ ਕਿਸੇ ਲੌਗਇਨ ਦੇ ਕੰਮ ਕਰਦੀ ਹੈ, ਇਸ ਲਈ ਪੂਰਾ ਜਨਤਕ ਇੰਟਰਨੈੱਟ ਹਮਲੇ ਦਾ ਖ਼ਤਰਾ (attack surface) ਬਣ ਜਾਂਦਾ ਹੈ।

ਐਕਸਪਲੋਇਟ (exploit) ਕਿਵੇਂ ਕੰਮ ਕਰਦਾ ਹੈ

ਇਹ ਖ਼ਰਾਬੀ ਕੋਈ ਇੱਕ ਸਿੰਗਲ ਕੋਡਿੰਗ ਗਲਤੀ ਨਹੀਂ ਹੈ; ਇਹ ਤਿੰਨ ਵੱਖ-ਵੱਖ ਸਮੱਸਿਆਵਾਂ ਦੀ ਇੱਕ ਲੜੀ ਹੈ ਜੋ ਮਿਲ ਕੇ ਇੱਕ ਬੈਕ ਡੋਰ (back door) ਖੋਲ੍ਹਦੀਆਂ ਹਨ।

  1. Unsafe deserialization – ਪਲੱਗਇਨ ਦਾ ਹੈਲਪਰ safeUnserialize ਸੀਰੀਅਲਾਈਜ਼ਡ ਆਬਜੈਕਟਾਂ ਨੂੰ ਹਟਾਉਣ ਦੀ ਬਜਾਏ ਉਹਨਾਂ ਨੂੰ placeholders ਵਿੱਚ ਬਦਲ ਦਿੰਦਾ ਹੈ, ਜਿਸ ਨਾਲ ਅਸਲ ਆਬਜੈਕਟ ਡੇਟਾ ਅਜੇ ਵੀ ਉੱਥੇ ਹੀ ਰਹਿੰਦਾ ਹੈ।
  2. Blind re-deserialization – ਡੇਟਾਬੇਸ ਤੋਂ ਲਿਆ ਗਿਆ ਡੇਟਾ ਬਿਨਾਂ ਕਿਸੇ ਵੈਲੀਡੇਸ਼ਨ ਦੇ ਵਾਪਸ unserialize ਵਿੱਚ ਭੇਜ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ, ਜਿਸ ਨਾਲ ਬਣਾਏ ਗਏ (crafted) ਆਬਜੈਕਟਾਂ ਨੂੰ ਮੁੜ ਸੁਰਜੀਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।
  3. TCPDF gadget chain – GiveWP ਵਿੱਚ TCPDF PDF-generation ਲਾਇਬ੍ਰੇਰੀ ਸ਼ਾਮਲ ਹੈ, ਜਿਸ ਵਿੱਚ ਇੱਕ ਕਲਾਸ ਚੇਨ ਹੈ ਜੋ ਕਿਸੇ ਮਾਲੀਸ਼ੀਅਸ (malicious) ਆਬਜੈਕਟ ਦੇ unserialize ਹੋਣ ਤੋਂ ਬਾਅਦ ਸਿਸਟਮ ਕਮਾਂਡਾਂ ਨੂੰ ਕਾਲ ਕਰ ਸਕਦੀ ਹੈ।

ਇੱਕ ਹਮਲਾਵਰ ਚਾਰ-ਪੜਾਵਾਂ ਵਾਲੇ ਪ੍ਰਕਿਰਿਆ (flow) ਦੀ ਪਾਲਣਾ ਕਰਦਾ ਹੈ ਜਿਸ ਲਈ ਪਹਿਲਾਂ ਤੋਂ ਕਿਸੇ ਖਾਤੇ ਦੀ ਲੋੜ ਨਹੀਂ ਹੁੰਦੀ:

  • Registrationuser_register ਐਕਸ਼ਨ ਨਾਲ ਜੁੜ ਕੇ, ਹਮਲਾਵਰ ਇੱਕ WordPress ਯੂਜ਼ਰ ਬਣਾ ਲੈਂਦਾ ਹੈ, ਭਾਵੇਂ ਸਾਈਟ ਰਜਿਸਟ੍ਰੇਸ਼ਨ ਬੰਦ ਵੀ ਹੋਵੇ।
  • Planting – ਹਮਲਾਵਰ ਨਵੇਂ ਪ੍ਰੋਫਾਈਲ ਦੇ last_name ਫੀਲਡ ਵਿੱਚ ਇੱਕ ਸੀਰੀਅਲਾਈਜ਼ਡ ਪੇਲੋਡ (payload) ਸਟੋਰ ਕਰਦਾ ਹੈ।
  • Poisoning – ਇੱਕ ਡੋਨੇਸ਼ਨ ਸਬਮਿਸ਼ਨ ਪਲੱਗਇਨ ਨੂੰ ਉਸ ਪੇਲੋਡ ਨੂੰ wp_give_sessions ਟੇਬਲ ਵਿੱਚ ਲਿਖਣ ਲਈ ਮਜਬੂਰ ਕਰਦੀ ਹੈ।
  • Execution – ਜਦੋਂ ਕੋਈ ਵੀ ਜਨਤਕ ਪੇਜ ਬਾਅਦ ਵਿੱਚ ਸੈਸ਼ਨ ਨੂੰ ਪੜ੍ਹਦਾ ਹੈ, ਤਾਂ ਮਾਲੀਸ਼ੀਅਸ ਆਬਜੈਕਟ unserialize ਹੋ ਜਾਂਦਾ ਹੈ, TCPDF gadget chain ਚਾਲੂ ਹੋ ਜਾਂਦੀ ਹੈ, ਅਤੇ ਹਮਲਾਵਰ ਦੁਆਰਾ ਦਿੱਤੀ ਗਈ ਕਮਾਂਡ ਸਰਵਰ 'ਤੇ ਚੱਲਦੀ ਹੈ।

ਪੈਚ (The patch)

GiveWP ਦੇ ਡਿਵੈਲਪਰਾਂ ਨੇ ਹਰ ਲਿੰਕ 'ਤੇ ਇਸ ਚੇਨ ਨੂੰ ਤੋੜਨ ਲਈ version 4.16.7.2 ਜਾਰੀ ਕੀਤਾ ਹੈ:

  • ਉਹ ਡੋਨੇਸ਼ਨਾਂ ਜਿਨ੍ਹਾਂ ਵਿੱਚ ਸੀਰੀਅਲਾਈਜ਼ਡ ਡੇਟਾ ਹੁੰਦਾ ਹੈ, ਉਹਨਾਂ ਨੂੰ ਸਿੱਧੇ ਤੌਰ 'ਤੇ ਰੱਦ ਕਰ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ।
  • ਸਾਰੇ ਡੇਟਾ-ਪੜ੍ਹਨ ਵਾਲੇ ਫੰਕਸ਼ਨ ਹੁਣ ਸਖ਼ਤ ਟਾਈਪ ਅਤੇ ਸਮੱਗਰੀ ਚੈੱਕ (content checks) ਲਾਗੂ ਕਰਦੇ ਹਨ।
  • TCPDF gadget chain ਨੂੰ ਸਪੱਸ਼ਟ ਤੌਰ 'ਤੇ ਰੋਕ ਦਿੱਤਾ ਗਿਆ ਹੈ, ਜਿਸ ਨਾਲ ਅਣਅਧਿਕਾਰਤ ਮੈਥਡ ਕਾਲਾਂ ਨੂੰ ਰੋਕਿਆ ਜਾ ਸਕਦਾ ਹੈ।
  • ਸਟੋਰੇਜ ਤੋਂ ਪਹਿਲਾਂ last_name ਸਮੇਤ ਮੈਟਾ ਫੀਲਡਾਂ ਨੂੰ ਸੈਨੀਟਾਈਜ਼ (sanitize) ਕੀਤਾ ਜਾਂਦਾ ਹੈ।
  • ਮੌਜੂਦਾ ਮਾਲੀਸ਼ੀਅਸ ਪੇਲੋਡਾਂ ਨੂੰ ਸਾਫ਼ ਕਰਨ ਲਈ ਇੱਕ ਡੇਟਾਬੇਸ ਮਾਈਗ੍ਰੇਸ਼ਨ ਆਪਣੇ ਆਪ ਚੱਲਦੀ ਹੈ।

ਪਲੱਗਇਨ ਨੂੰ ਅੱਪਡੇਟ ਕਰਨਾ ਪਹਿਲਾ ਕਦਮ ਹੈ; ਤੁਹਾਨੂੰ ਇਹ ਪੁਸ਼ਟੀ ਕਰਨੀ ਚਾਹੀਦੀ ਹੈ ਕਿ ਤੁਹਾਡੇ ਡੇਟਾਬੇਸ ਵਿੱਚ ਪਹਿਲਾਂ ਤੋਂ ਮੌਜੂਦ ਪੇਲੋਡਾਂ ਨੂੰ ਹਟਾਉਣ ਲਈ ਸੈਨੀਟਾਈਜ਼ੇਸ਼ਨ ਮਾਈਗ੍ਰੇਸ਼ਨ ਚੱਲ ਗਈ ਹੈ।

ਕੌਣ ਖ਼ਤਰੇ ਵਿੱਚ ਹੈ

ਕੋਈ ਵੀ WordPress ਸਾਈਟ ਜੋ GiveWP version 4.16.7.1 ਜਾਂ ਇਸ ਤੋਂ ਪੁਰਾਣਾ ਵਰਤ ਰਹੀ ਹੈ, ਉਹ ਖ਼ਤਰੇ ਵਿੱਚ ਹੈ, ਚਾਹੇ ਰਜਿਸਟ੍ਰੇਸ਼ਨ ਚਾਲੂ ਹੋਵੇ ਜਾਂ ਨਹੀਂ। ਵੱਡੀਆਂ ਗੈਰ-ਲਾਭਕਾਰੀ ਸੰਸਥਾਵਾਂ, ਛੋਟੀਆਂ ਚੈਰੀਟੀਆਂ, ਅਤੇ ਨਿੱਜੀ ਫੰਡ ਇਕੱਠੇ ਕਰਨ ਵਾਲੇ ਪੇਜ ਸਾਰੇ ਪ੍ਰਭਾਵਿਤ ਹੋ ਸਕਦੇ ਹਨ। ਇਹ ਹਮਲਾ ਕਿਸੇ ਖਾਸ ਸਰਵਰ ਕੌਂਫਿਗਰੇਸ਼ਨ 'ਤੇ ਨਿਰਭਰ ਨਹੀਂ ਕਰਦਾ; ਕੋਈ ਵੀ PHP ਵਾਤਾਵਰਣ ਜੋ ਬੰਡਲ ਕੀਤੀ ਗਈ TCPDF ਲਾਇਬ੍ਰੇਰੀ ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ, ਉਹ ਇਸ ਦੇ ਪ੍ਰਭਾਵ ਹੇਠ ਆ ਸਕਦਾ ਹੈ।

ਵਿਰੋਧੀ ਪੱਖ (Counter-point)

ਕੁਝ ਸਾਈਟ ਮਾਲਕਾਂ ਦਾ ਤਰਕ ਹੈ ਕਿ ਐਕਸਪਲੋਇਟ ਲਈ ਕਿਸੇ ਦਾਨਦਾਤਾ ਦੁਆਰਾ ਭੁਗਤਾਨ ਕਰਨਾ ਜ਼ਰੂਰੀ ਹੈ, ਜਿਸ ਨੂੰ ਉਹ ਘੱਟ ਸੰਭਾਵਨਾ ਵਾਲੀ ਘਟਨਾ ਮੰਨਦੇ ਹਨ। ਇਹ ਕਮਜ਼ੋਰੀ ਉਸ ਵਿਚਾਰ ਨੂੰ ਗਲਤ ਸਾਬਤ ਕਰਦੀ ਹੈ: ਮਾਲੀਸ਼ੀਅਸ ਪੇਲੋਡ ਡੋਨੇਸ਼ਨ ਸਟੈਪ ਦੌਰਾਨ