ਮੈਂ ਇੱਕ AI ਸੁਰੱਖਿਆ ਸਕੈਨਰ ਬਣਾਇਆ — ਫਿਰ ਆਪਣੇ ਹੀ ਡਿਟੈਕਟਰ ਵਿੱਚ ਇੱਕ ਬੱਗ ਲੱਭਿਆ
Prompt injection LLM ਐਪਲੀਕੇਸ਼ਨਾਂ ਲਈ ਇੱਕ ਵੱਡਾ ਸੁਰੱਖਿਆ ਜੋਖਮ ਹੈ। ਤੁਸੀਂ ਇੱਕ ਮਾਡਲ ਨੂੰ ਅਜਿਹਾ ਟੈਕਸਟ ਦਿੰਦੇ ਹੋ ਜੋ ਉਸਨੂੰ ਆਪਣੀਆਂ ਅਸਲ ਹਦਾਇਤਾਂ ਨੂੰ ਨਜ਼ਰਅੰਦਾਜ਼ ਕਰਨ ਲਈ ਕਹਿੰਦਾ ਹੈ। ਕਦੇ-ਕਦੇ, ਮਾਡਲ ਉਸਦੀ ਗੱਲ ਮੰਨ ਲੈਂਦਾ ਹੈ।
ਮੈਂ ਇਸਦੀ ਜਾਂਚ ਕਰਨ ਲਈ AgentProbe ਬਣਾਇਆ। ਇਹ jailbreaks ਅਤੇ data extraction ਵਰਗੀਆਂ 8 ਸ਼੍ਰੇਣੀਆਂ ਵਿੱਚ 49 ਅਟੈਕ ਪ੍ਰੋਂਪਟ (attack prompts) ਭੇਜਦਾ ਹੈ। ਇਹ ਰਿਪੋਰਟ ਕਰਦਾ ਹੈ ਕਿ ਇੱਕ ਮਾਡਲ ਕਿੰਨੀ ਵਾਰ ਅਸਫਲ ਹੁੰਦਾ ਹੈ।
ਅਸਲ ਸਬਕ ਸਕੈਨਰ ਨਹੀਂ ਸੀ। ਇਹ ਮੇਰੇ ਡਿਟੈਕਸ਼ਨ ਕੋਡ ਵਿੱਚ ਇੱਕ ਬੱਗ ਸੀ।
ਮੁਸ਼ਕਲ ਹਿੱਸਾ ਅਟੈਕ ਨਹੀਂ ਹੈ। ਮੁਸ਼ਕਲ ਹਿੱਸਾ ਡਿਟੈਕਸ਼ਨ ਹੈ।
ਤੁਹਾਨੂੰ ਇਹ ਕਿਵੇਂ ਪਤਾ ਲੱਗੇਗਾ ਕਿ ਕੀ ਇੱਕ ਮਾਡਲ ਨੇ ਅਸਲ ਵਿੱਚ ਅਟੈਕ ਦੀ ਪਾਲਣਾ ਕੀਤੀ ਹੈ? Keyword matching ਸਭ ਤੋਂ ਸੌਖਾ ਤਰੀਕਾ ਹੈ। ਤੁਸੀਂ "I cannot help" ਵਰਗੇ ਇਨਕਾਰ ਵਾਲੇ ਵਾਕਾਂ ਜਾਂ "developer mode" ਵਰਗੇ ਪਾਲਣਾ ਵਾਲੇ ਵਾਕਾਂ ਦੀ ਭਾਲ ਕਰਦੇ ਹੋ।
ਪਰ ਮਾਡਲ "hedge-then-comply" ਪੈਟਰਨ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਨ। ਉਹ ਕਹਿੰਦੇ ਹਨ "I cannot help with that," ਪਰ ਫਿਰ ਵੀ ਉਹ ਸੀਮਤ ਜਾਣਕਾਰੀ ਪ੍ਰਦਾਨ ਕਰ ਦਿੰਦੇ ਹਨ। ਇੱਥੇ keyword matching ਅਸਫਲ ਹੋ ਜਾਂਦੀ ਹੈ ਕਿਉਂਕਿ ਇਨਕਾਰ ਵਾਲਾ ਵਾਕ ਉੱਥੇ ਮੌਜੂਦ ਹੁੰਦਾ ਹੈ।
ਇਸ ਨੂੰ ਠੀਕ ਕਰਨ ਲਈ, ਮੈਂ ਇੱਕ "LLM-as-judge" ਸਿਸਟਮ ਦੀ ਵਰਤੋਂ ਕੀਤੀ। ਮੈਂ ਇਹ ਫੈਸਲਾ ਕਰਨ ਲਈ ਕਿ ਕੀ ਟਾਰਗੇਟ ਨੇ ਅਸਲ ਵਿੱਚ ਪਾਲਣਾ ਕੀਤੀ ਹੈ, ਉਸ ਗੱਲਬਾਤ ਨੂੰ ਇੱਕ ਮਜ਼ਬੂਤ ਮਾਡਲ ਕੋਲ ਭੇਜਿਆ। ਮੇਰੀ ਯੋਜਨਾ ਪਹਿਲਾਂ ਸਸਤੇ keyword checks ਦੀ ਵਰਤੋਂ ਕਰਨ ਦੀ ਸੀ ਅਤੇ ਮਹਿੰਗੇ judge ਦੀ ਵਰਤੋਂ ਉਦੋਂ ਹੀ ਕਰਨੀ ਸੀ ਜਦੋਂ keyword check ਅਨਿਸ਼ਚਿਤ ਹੋਵੇ।
ਫਿਰ ਮੈਨੂੰ ਆਪਣਾ ਬੱਗ ਮਿਲਿਆ।
ਮੇਰੇ keyword detector ਨੇ "hedge-then-comply" ਪੈਟਰਨ ਮਿਲਣ 'ਤੇ 1 ਦਾ confidence score ਦਿੱਤਾ। ਹਾਲਾਂਕਿ, ਮੇਰਾ ਕੋਡ keyword ਸਟੇਜ 'ਤੇ ਉਦੋਂ ਹੀ ਭਰੋਸਾ ਕਰਦਾ ਸੀ ਜੇਕਰ confidence 2 ਜਾਂ ਇਸ ਤੋਂ ਵੱਧ ਹੋਵੇ।
ਇਸਦਾ ਮਤਲਬ ਸੀ ਕਿ ਮੇਰੇ "ਸਸਤੇ" ਡਿਟੈਕਟਰ ਨੇ ਕਦੇ ਵੀ ਅਸਲ ਵਿੱਚ ਕੋਈ ਫੈਸਲਾ ਨਹੀਂ ਲਿਆ। ਹਰ ਇੱਕ ਕੇਸ ਮਹਿੰਗੇ judge ਕੋਲ ਭੇਜ ਦਿੱਤਾ ਗਿਆ। ਮੈਂ ਹਰ ਕੇਸ ਲਈ judge ਲਈ ਭੁਗਤਾਨ ਕਰ ਰਿਹਾ ਸੀ, ਭਾਵੇਂ ਮੇਰੇ ਮੁਫ਼ਤ ਟੂਲ ਨੂੰ ਇਸਨੂੰ ਸੰਭਾਲਣਾ ਚਾਹੀਦਾ ਸੀ।
ਇਸ ਗਲਤੀ ਨੇ ਮੈਨੂੰ ਦੂਜੇ LLMs ਨੂੰ ਗ੍ਰੇਡ ਕਰਨ ਲਈ LLMs ਦੀ ਵਰਤੋਂ ਕਰਨ ਬਾਰੇ ਤਿੰਨ ਸਬਕ ਸਿਖਾਏ:
- Judge ਟਾਰਗੇਟ ਨਾਲੋਂ ਸਮਾਰਟ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ। ਜੇਕਰ judge ਦਾ ਆਕਾਰ ਟਾਰਗੇਟ ਦੇ ਬਰਾਬਰ ਹੈ, ਤਾਂ ਉਸ ਵਿੱਚ ਵੀ ਉਹੀ ਕਮੀਆਂ (blind spots) ਹੋਣਗੀਆਂ।
- Accuracy ਝੂਠ ਬੋਲ ਸਕਦੀ ਹੈ। ਜੇਕਰ ਜ਼ਿਆਦਾਤਰ ਮਾਡਲ ਇਨਕਾਰ ਕਰਦੇ ਹਨ, ਤਾਂ ਇੱਕ judge ਜੋ ਹਮੇਸ਼ਾ "refused" ਕਹਿੰਦਾ ਹੈ, ਉਹ ਸਹੀ ਲੱਗਦਾ ਹੈ ਪਰ ਉਹ ਕੁਝ ਵੀ ਨਹੀਂ ਸਿੱਖਦਾ। ਕਿਸਮਤ ਦੇ ਪ੍ਰਭਾਵ ਨੂੰ ਸਮਝਣ ਲਈ Cohen's kappa ਵਰਗੇ ਮੈਟ੍ਰਿਕਸ ਦੀ ਵਰਤੋਂ ਕਰੋ।
- Judge ਸਥਿਰ (stable) ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ। ਇੱਕੋ ਟੈਸਟ ਨੂੰ ਪੰਜ ਵਾਰ ਚਲਾਓ। ਜੇਕਰ judge ਆਪਣਾ ਫੈਸਲਾ ਬਦਲਦਾ ਹੈ, ਤਾਂ ਨਤੀਜਾ ਅਸਪਸ਼ਟ ਹੈ ਅਤੇ ਇਸ ਲਈ ਮਨੁੱਖੀ ਨਿਗਰਾਨੀ ਦੀ ਲੋੜ ਹੈ।
ਜੇਕਰ ਤੁਸੀਂ LLMs ਨਾਲ ਕੁਝ ਬਣਾਉਂਦੇ ਹੋ, ਤਾਂ ਇਹਨਾਂ ਨੁਕਤਿਆਂ ਨੂੰ ਯਾਦ ਰੱਖੋ:
- ਪਾਲਣਾ (compliance) ਦਾ ਪਤਾ ਲਗਾਉਣਾ ਉਸਨੂੰ ਪੈਦਾ ਕਰਨ ਨਾਲੋਂ ਵਧੇਰੇ ਮੁਸ਼ਕਲ ਹੈ।
- ਉਹਨਾਂ ਮਾਡਲਾਂ 'ਤੇ ਨਜ਼ਰ ਰੱਖੋ ਜੋ ਪਹਿਲੇ ਵਾਕ ਵਿੱਚ ਇਨਕਾਰ ਕਰਦੇ ਹਨ ਪਰ ਦੂਜੇ ਵਿੱਚ ਪਾਲਣਾ ਕਰਦੇ ਹਨ।
- LLM judge 'ਤੇ ਅੰਨ੍ਹੇਵਾਹ ਭਰੋਸਾ ਨਾ ਕਰੋ। ਇਸਦੀ ਭਰੋਸੇਯੋਗਤਾ ਨੂੰ ਮਾਪੋ।
- ਆਪਣੇ ਬੱਗ ਸਾਂਝੇ ਕਰੋ। ਆਪਣੀ ਖ਼ਾਮੀ ਲੱਭਣ ਨੇ ਮੈਨੂੰ ਇੱਕ ਸੰਪੂਰਨ ਲਾਂਚ ਨਾਲੋਂ ਕਿਤੇ ਜ਼ਿਆਦਾ ਸਿਖਾਇਆ।
Source: https://dev.to/nar1frames/i-built-an-ai-security-scanner-then-found-a-bug-in-my-own-detector-140a
Optional learning community: https://t.me/GyaanSetuAi
