AI ਕੋਡ ਅਸਿਸਟੈਂਟ ਅਜਿਹੇ ਪੈਕੇਜ ਨਾਮ ਦੱਸ ਰਹੇ ਹਨ ਜੋ ਮੌਜੂਦ ਨਹੀਂ ਹਨ, ਅਤੇ ਹਮਲਾਵਰ ਇਹਨਾਂ ਭਰਮਾਂ (hallucinations) ਨੂੰ ਅਸਲ ਸਪਲਾਈ-ਚੇਨ ਜੋਖਮਾਂ ਵਿੱਚ ਬਦਲ ਰਹੇ ਹਨ।
ਜਦੋਂ Lasso Security ਦੇ ਸੁਰੱਖਿਆ ਖੋਜਕਰਤਾ Bar Lanyado ਨੇ ਇੱਕ AI-ਅਧਾਰਿਤ ਕੋਡਿੰਗ ਟੂਲ ਤੋਂ Python ਕਲਾਇੰਟ ਲਈ ਪੁੱਛਿਆ, ਤਾਂ ਮਾਡਲ ਨੇ huggingface-cli ਇੰਸਟਾਲ ਕਰਨ ਦਾ ਸੁਝਾਅ ਦਿੱਤਾ। ਇਹ ਪੈਕੇਜ ਇੱਕ ਭਰਮ (phantom) ਹੈ; ਅਸਲੀ ਲਾਇਬ੍ਰੇਰੀ huggingface_hub ਨਾਮ ਦੇ ਤਹਿਤ ਮੌਜੂਦ ਹੈ। ਖ਼ਤਰੇ ਨੂੰ ਸਾਬਤ ਕਰਨ ਲਈ, Lanyado ਨੇ Python Package Index (PyPI) 'ਤੇ ਇਸ ਬਨਾਵਟੀ ਨਾਮ ਨੂੰ ਇੱਕ ਖਾਲੀ ਪਲੇਸਹੋਲਡਰ ਵਜੋਂ ਰਜਿਸਟਰ ਕਰ ਦਿੱਤਾ। ਤਿੰਨ ਮਹੀਨਿਆਂ ਦੇ ਅੰਦਰ, ਇਸ ਪਲੇਸਹੋਲਡਰ ਨੇ 30,000 ਤੋਂ ਵੱਧ ਡਾਊਨਲੋਡ ਇਕੱਠੇ ਕਰ ਲਏ, ਜਨਤਕ ਦਸਤਾਵੇਜ਼ਾਂ ਵਿੱਚ ਦਿਖਾਈ ਦਿੱਤਾ ਅਤੇ Alibaba ਦੀਆਂ ਰੈਪੋਜ਼ਟਰੀਆਂ (repositories) ਤੋਂ ਇਕੱਠੇ ਕੀਤੇ ਗਏ ਕੋਡ ਨਮੂਨਿਆਂ ਵਿੱਚ ਵੀ ਪ੍ਰਗਟ ਹੋਇਆ।
ਇੱਕ ਭਰਮ ਪੈਕੇਜ ਅਸਲ ਖ਼ਤਰਾ ਕਿਵੇਂ ਬਣ ਜਾਂਦਾ ਹੈ
- Prompt → hallucination – ਇੱਕ ਡਿਵੈਲਪਰ AI ਤੋਂ ਮਦਦ ਮੰਗਦਾ ਹੈ। ਨੌਇਜ਼ੀ (noisy) ਇੰਟਰਨੈਟ ਡੇਟਾ 'ਤੇ ਟ੍ਰੇਨ ਕੀਤਾ ਗਿਆ ਮਾਡਲ, ਇੱਕ ਸੁਣਨ ਵਿੱਚ ਸਹੀ ਲੱਗਣ ਵਾਲਾ ਪੈਕੇਜ ਨਾਮ ਘੜ ਲੈਂਦਾ ਹੈ।
- Copy-paste → documentation – ਇਹ ਸੁਝਾਅ ਕਿਸੇ README, Stack Overflow ਦੇ ਜਵਾਬ, ਜਾਂ ਕਿਸੇ ਅੰਦਰੂਨੀ ਵਿਕੀ (wiki) ਵਿੱਚ ਆ ਜਾਂਦਾ ਹੈ। ਇੱਕ ਵਾਰ ਲਿਖੇ ਜਾਣ ਤੋਂ ਬਾਅਦ, ਇਹ ਨਾਮ ਕਮਿਊਨਿਟੀ ਵਿੱਚ ਫੈਲ ਜਾਂਦਾ ਹੈ।
- Code integration – ਡਿਵੈਲਪਰ, AI 'ਤੇ ਭਰੋਸਾ ਕਰਦੇ ਹੋਏ, ਇਸ ਨਾਮ ਨੂੰ requirements ਫਾਈਲ ਵਿੱਚ ਜੋੜ ਦਿੰਦਾ ਹੈ ਅਤੇ ਇਸਨੂੰ production ਵਿੱਚ ਭੇਜ ਦਿੰਦਾ ਹੈ।
ਮੌਜੂਦਾ ਰੱਖਿਆ ਪ੍ਰਣਾਲੀਆਂ ਇਸ ਸਮੱਸਿਆ ਨੂੰ ਕਿਉਂ ਨਹੀਂ ਫੜ ਪਾਉਂਦੀਆਂ
Static analysis ਟੂਲ ਅਤੇ vulnerability ਸਕੈਨਰ ਜਾਣੇ-ਪਛਾਣੇ CVEs ਅਤੇ ਰਿਲੀਜ਼ ਇਤਿਹਾਸ ਵਾਲੀਆਂ ਲਾਇਬ੍ਰੇਰੀਆਂ ਦੀ ਭਾਲ ਕਰਦੇ ਹਨ। AI ਦੇ ਸੁਝਾਅ ਤੋਂ ਪਹਿਲਾਂ ਜ਼ੀਰੋ ਡਾਊਨਲੋਡਾਂ ਵਾਲਾ ਇੱਕ ਨਵਾਂ ਪ੍ਰਕਾਸ਼ਿਤ ਪੈਕੇਜ ਕੋਲ ਕੋਈ CVE ਨਹੀਂ ਹੁੰਦਾ, ਕੋਈ ਸਾਖ (reputation) ਨਹੀਂ ਹੁੰਦੀ, ਅਤੇ ਇਸ ਲਈ ਇਹ ਸਾਫ਼ ਦਿਖਾਈ ਦਿੰਦਾ ਹੈ। ਮਿਆਰੀ “ਕੀ ਇਹ ਵਰਜ਼ਨ ਕਮਜ਼ੋਰ ਹੈ?” ਚੈੱਕ 'false' ਦੱਸਦਾ ਹੈ, ਜਿਸ ਨਾਲ ਡਿਵੈਲਪਰਾਂ ਨੂੰ ਸੁਰੱਖਿਆ ਦਾ ਇੱਕ ਝੂਠਾ ਅਹਿਸਾਸ ਹੁੰਦਾ ਹੈ।
ਇਹ ਪ੍ਰਯੋਗ ਕੀ ਸਾਬਤ ਕਰਦਾ ਹੈ
- AI-ਵੱਲੋਂ ਘੜੇ ਗਏ ਨਾਮ production ਤੱਕ ਪਹੁੰਚਦੇ ਹਨ – 30,000 ਤੋਂ ਵੱਧ ਡਾਊਨਲੋਡ ਇਹ ਦਿਖਾਉਂਦੇ ਹਨ ਕਿ ਡਿਵੈਲਪਰ ਅਸਲ ਵਿੱਚ ਇਹਨਾਂ ਭਰਮ ਪੈਕੇਜਾਂ ਨੂੰ ਡਾਊਨਲੋਡ ਕਰ ਰਹੇ ਹਨ।
- Hallucinations ਦਸਤਾਵੇਜ਼ ਬਣ ਜਾਂਦੇ ਹਨ – ਇੱਕ ਵਾਰ ਜਦੋਂ ਕੋਈ ਫਰਜ਼ੀ ਨਾਮ ਜਨਤਕ ਗਾਈਡ ਵਿੱਚ ਆ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਇਹ ਅਣਮਿੱਟ ਰਹਿ ਸਕਦਾ ਹੈ, ਜਿਸ ਨਾਲ ਗਲਤੀ ਫੈਲਦੀ ਰਹਿੰਦੀ ਹੈ।
- ਰਜਿਸਟ੍ਰੇਸ਼ਨ ਬਹੁਤ ਸੌਖੀ ਹੈ – PyPI 'ਤੇ ਪੈਕੇਜ ਪ੍ਰਕਾਸ਼ਿਤ ਕਰਨ ਦੀ ਕੋਈ ਲਾਗਤ ਨਹੀਂ ਆਉਂਦੀ ਅਤੇ ਇਸ ਵਿੱਚ ਕੁਝ ਮਿੰਟ ਲੱਗਦੇ ਹਨ, ਜੋ ਸਪਲਾਈ-ਚੇਨ ਦੀ ਦੁਰਵਰਤੋਂ ਲਈ ਰੁਕਾਵਟਾਂ ਨੂੰ ਘਟਾ ਦਿੰਦਾ ਹੈ।
ਰੱਖਿਆਤਮਕ ਕਦਮ ਜੋ ਅਸਲ ਵਿੱਚ ਕੰਮ ਕਰਦੇ ਹਨ
- ਹਰ dependency ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ – ਨਵੀਂ requirement ਜੋੜਨ ਤੋਂ ਪਹਿਲਾਂ, ਪੈਕੇਜ ਇੰਡੈਕਸ ਵਿੱਚ ਖੋਜ ਕਰੋ ਅਤੇ ਪੁਸ਼ਟੀ ਕਰੋ ਕਿ ਨਾਮ ਮੌਜੂਦਾ, ਦਸਤਾਵੇਜ਼ੀ ਲਾਇਬ੍ਰੇਰੀ ਨਾਲ ਮੇਲ ਖਾਂਦਾ ਹੈ।
- ਅਧਿਕਾਰਤ ਸਰੋਤਾਂ ਨਾਲ ਚੈੱਕ ਕਰੋ – ਸੁਝਾਏ ਗਏ ਨਾਮ ਦੀ ਤੁਲਨਾ ਵੈਂਡਰ ਦੀ ਰੈਪੋਜ਼ਟਰੀ ਜਾਂ ਅਧਿਕਾਰਤ ਇੰਸਟਾਲੇਸ਼ਨ ਗਾਈਡ ਨਾਲ ਕਰੋ।
- ਨਵੇਂ, ਘੱਟ ਵਰਤੇ ਜਾਣ ਵਾਲੇ ਪੈਕੇਜਾਂ ਨੂੰ ਉੱਚ ਜੋਖਮ ਮੰਨੋ – ਕਿਸੇ ਵੀ ਅਜਿਹੀ dependency ਨੂੰ ਮੈਨੂਅਲ ਰਿਵਿਊ ਲਈ ਫਲੈਗ ਕਰੋ ਜਿਸ ਦੇ ਡਾਊਨਲੋਡਾਂ ਦੀ ਗਿਣਤੀ ਬਹੁਤ ਘੱਟ ਹੋਵੇ ਜਾਂ ਜਿਸ ਦੀ ਰਿਲੀਜ਼ ਤਾਰੀਖ ਬਹੁਤ ਹਾਲੀਆ ਹੋਵੇ।
ਅੱਗੇ ਕਿਸ ਚੀਜ਼ 'ਤੇ ਨਜ਼ਰ ਰੱਖਣੀ ਹੈ
ਸਿੱਖਿਆ ਸਧਾਰਨ ਹੈ: AI ਦਾ ਸੁਝਾਅ ਕੋਈ ਗਾਰੰਟੀ ਨਹੀਂ ਹੈ। ਹਰ ਨਵੀਂ dependency ਨੂੰ ਇੱਕ ਅਣ-ਪਰਖੇ (unvetted) ਤੀਜੀ-ਪਾਰਟੀ ਕੰਪੋਨੈਂਟ ਵਜੋਂ ਮੰਨੋ, ਇਸ ਦੇ ਸਰੋਤ (provenance) ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ, ਅਤੇ ਕਿਸੇ ਭਰਮ ਪੈਕੇਜ ਨੂੰ production ਵਿੱਚ ਜਾਣ ਦੇਣ ਤੋਂ ਪਹਿਲਾਂ ਸਪਲਾਈ ਚੇਨ 'ਤੇ ਨਜ਼ਰ ਰੱਖੋ।
