ਲੁਕਾਉਣਾ ਸੁਰੱਖਿਅਤ ਕਰਨ ਦੇ ਬਰਾਬਰ ਨਹੀਂ ਹੈ
ਇੱਕ ਗੈਰ-ਇੰਜੀਨੀਅਰ ਕਾਰਜਕਾਰੀ (executive) ਨੇ ਹਾਲ ਹੀ ਵਿੱਚ ਦੋ ਦਿਨਾਂ ਵਿੱਚ ਇੱਕ B2B SaaS ਬਣਾਇਆ। ਉਨ੍ਹਾਂ ਨੇ ਸਭ ਕੁਝ ਲਿਖਣ ਲਈ AI ਦੀ ਵਰਤੋਂ ਕੀਤੀ। ਉਤਪਾਦ ਕੰਮ ਕਰਦਾ ਹੈ। ਗਾਹਕ ਇਸਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਨ। ਫੀਚਰ ਤੇਜ਼ੀ ਨਾਲ ਲਾਂਚ ਹੁੰਦੇ ਹਨ।
ਫਿਰ ਮੈਨੂੰ ਇਨਫਰਾਸਟ੍ਰਕਚਰ (infrastructure) ਦੀ ਜ਼ਿੰਮੇਵਾਰੀ ਮਿਲੀ। ਮੇਰਾ ਕੰਮ ਉਸ ਕੋਡ ਵਿੱਚ ਜੋਖਮਾਂ ਨੂੰ ਲੱਭਣਾ ਹੈ ਜੋ ਪਹਿਲਾਂ ਹੀ ਪ੍ਰੋਡਕਸ਼ਨ (production) ਵਿੱਚ ਚੱਲ ਰਿਹਾ ਹੈ।
ਮੈਨੂੰ ਇੱਕ ਵੱਡੀ ਸੁਰੱਖਿਆ ਕਮੀ (security flaw) ਮਿਲੀ। API key ਸਿੱਧੇ ਤੌਰ 'ਤੇ ਸੋਰਸ ਕੋਡ (source code) ਵਿੱਚ ਹਾਰਡਕੋਡ ਕੀਤੀ ਗਈ ਸੀ।
ਮੈਂ ਕਾਰਜਕਾਰੀ ਨੂੰ ਦੱਸਿਆ ਕਿ ਇਹ ਖ਼ਤਰਨਾਕ ਸੀ। ਉਨ੍ਹਾਂ ਨੇ ਇਸਨੂੰ ਤੁਰੰਤ ਠੀਕ ਕਰ ਦਿੱਤਾ।
ਕੀ (key) ਕੋਡ ਵਿੱਚੋਂ ਤਾਂ ਚਲੀ ਗਈ ਸੀ, ਪਰ ਹੁਣ ਇਹ ਸੈੱਟਅੱਪ ਸਟੈਪ ਵਜੋਂ README ਫਾਈਲ ਵਿੱਚ ਸੀ। ਉਹ ਗੁਪਤ ਜਾਣਕਾਰੀ (secret) ਕੋਡ ਤੋਂ ਦਸਤਾਵੇਜ਼ (documentation) ਵਿੱਚ ਚਲੀ ਗਈ ਸੀ। ਇਹ ਅਜੇ ਵੀ ਰਿਪੋਜ਼ਟਰੀ (repository) ਦੇ ਅੰਦਰ ਸੀ। ਅਸਲ ਵਿੱਚ ਹੁਣ ਇਸਨੂੰ ਲੱਭਣਾ ਹੋਰ ਵੀ ਸੌਖਾ ਸੀ।
ਮੈਂ ਦੁਬਾਰਾ ਸਮੱਸਿਆ ਸਮਝਾਈ। ਇਸ ਵਾਰ, ਉਨ੍ਹਾਂ ਨੇ ਕੀ (key) ਨੂੰ ਡਾਟਾਬੇਸ (database) ਵਿੱਚ ਭੇਜ ਦਿੱਤਾ।
ਇਹ ਤਰੱਕੀ ਵਾਂਗ ਲੱਗਿਆ। ਕੀ (key) ਰਿਪੋਜ਼ਟਰੀ ਤੋਂ ਬਾਹਰ ਸੀ। ਪਰ ਜਦੋਂ ਮੈਂ ਡਾਟਾਬੇਸ ਦੀ ਜਾਂਚ ਕੀਤੀ, ਤਾਂ ਕੀ (key) ਉੱਥੇ ਪਲੇਨਟੈਕਸਟ (plaintext) ਵਿੱਚ ਸੀ। ਕੋਈ ਐਨਕ੍ਰਿਪਸ਼ਨ (encryption) ਨਹੀਂ ਸੀ। ਡਾਟਾਬੇਸ ਤੱਕ ਪਹੁੰਚ ਰੱਖਣ ਵਾਲਾ ਕੋਈ ਵੀ ਇਸਨੂੰ ਪੜ੍ਹ ਸਕਦਾ ਸੀ।
ਕੀ (key) ਤਿੰਨ ਵਾਰ ਬਦਲੀ:
- ਸੋਰਸ ਕੋਡ ਤੋਂ
- README ਤੱਕ
- ਡਾਟਾਬੇਸ ਤੱਕ
ਸਥਾਨ ਬਦਲ ਗਿਆ ਸੀ, ਪਰ ਸੁਰੱਖਿਆ ਵਿੱਚ ਕੋਈ ਸੁਧਾਰ ਨਹੀਂ ਹੋਇਆ। ਉਹ ਗੁਪਤ ਜਾਣਕਾਰੀ ਨੂੰ ਲੁਕਾ ਰਹੇ ਸਨ, ਉਸਨੂੰ ਸੁਰੱਖਿਅਤ (conceal) ਨਹੀਂ ਕਰ ਰਹੇ ਸਨ।
ਲੁਕਾਉਣ (Hiding) ਦਾ ਮਤਲਬ ਹੈ ਕਿਸੇ ਚੀਜ਼ ਨੂੰ ਨਜ਼ਰਾਂ ਤੋਂ ਦੂਰ ਰੱਖਣਾ। ਛੁਪਾਉਣ (Concealing) ਦਾ ਮਤਲਬ ਹੈ ਇਸਨੂੰ ਹਮਲਾਵਰ ਲਈ ਬੇਕਾਰ ਬਣਾ ਦੇਣਾ।
ਸਾਫਟਵੇਅਰ ਵਿੱਚ, ਤੁਹਾਨੂੰ ਇਹ ਨਿਯਮਾਂ ਦੀ ਪਾਲਣਾ ਕਰਨੀ ਚਾਹੀਦੀ ਹੈ:
- ਕਦੇ ਵੀ ਆਪਣੀ ਰਿਪੋਜ਼ਟਰੀ ਵਿੱਚ ਗੁਪਤ ਜਾਣਕਾਰੀ ਨਾ ਰੱਖੋ। ਇਸ ਵਿੱਚ ਕੋਡ, README ਫਾਈਲਾਂ, ਜਾਂ ਕਨਫਿਗ ਫਾਈਲਾਂ ਸ਼ਾਮਲ ਹਨ।
- ਐਨਵਾਇਰਨਮੈਂਟ ਵੇਰੀਏਬਲਜ਼ (environment variables) ਜਾਂ ਸੀਕਰੇਟ ਮੈਨੇਜਰ (secret manager) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਰਨਟਾਈਮ (runtime) ਤੋਂ ਬਾਹਰੋਂ ਮੁੱਲ (values) ਇੰਜੈਕਟ ਕਰੋ।
- ਜੇਕਰ ਤੁਸੀਂ ਡਾਟਾਬੇਸ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋ, ਤਾਂ ਮੁੱਲ ਨੂੰ ਐਨਕ੍ਰਿਪਟ ਕਰੋ। ਪਲੇਨਟੈਕਸਟ (plaintext) ਇੱਕ ਖ਼ਤਰਾ ਹੈ।
- ਕਿਸੇ ਵੀ ਕੀ (key) ਨੂੰ ਰੋਟੇਟ (rotate) ਕਰੋ ਜੋ ਕਦੇ ਵੀ ਪਲੇਨਟੈਕਸਟ ਵਿੱਚ ਪ੍ਰਗਟ ਹੋਈ ਹੋਵੇ।
ਇਹ ਉਦੋਂ ਵੀ ਹੋਇਆ ਜਦੋਂ ਕਾਰਜਕਾਰੀ ਨੇ ਉਪਲਬਧ ਸਭ ਤੋਂ ਉੱਨਤ AI ਮਾਡਲਾਂ ਦੀ ਵਰਤੋਂ ਕੀਤੀ।
AI ਤੁਹਾਨੂੰ ਅਜਿਹਾ ਕੋਡ ਦੇਣ ਲਈ ਬਣਾਇਆ ਗਿਆ ਹੈ ਜੋ ਚੱਲਦਾ ਹੈ। ਜੇਕਰ ਤੁਸੀਂ ਇਸਨੂੰ ਕੁਝ ਹੋਰ ਨਹੀਂ ਦੱਸਦੇ, ਤਾਂ ਇਹ ਖੁਸ਼ੀ-ਖੁਸ਼ੀ ਅਜਿਹਾ ਕੋਡ ਲਿਖ ਦੇਵੇਗਾ ਜਿਸ ਵਿੱਚ ਪਲੇਨਟੈਕਸਟ ਸੀਕਰੇਟ ਹੋਵੇਗਾ। AI ਸਮਰੱਥਾ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ, ਪਰ ਇਹ ਆਪਣੇ ਆਪ ਸੁਰੱਖਿਆ ਪ੍ਰਦਾਨ ਨਹੀਂ ਕਰਦਾ।
ਬੁੱਧੀ (Intelligence) ਉਦੋਂ ਹੀ ਸੁਰੱਖਿਆ ਬਣਦੀ ਹੈ ਜਦੋਂ ਤੁਸੀਂ ਜਾਣਦੇ ਹੋ ਕਿ ਕਿਸ ਚੀਜ਼ ਦੀ ਰੱਖਿਆ ਕਰਨੀ ਹੈ।
ਜੇਕਰ ਤੁਹਾਨੂੰ ਲੱਗਦਾ ਹੈ ਕਿ ਤੁਸੀਂ ਸਿਰਫ ਇਸ ਲਈ ਸੁਰੱਖਿਆ ਦੇ ਛੇਦ (security hole) ਨੂੰ ਠੀਕ ਕਰ ਦਿੱਤਾ ਹੈ ਕਿਉਂਕਿ ਤੁਸੀਂ ਇਸਨੂੰ ਹਿਲਾ ਦਿੱਤਾ ਹੈ, ਤਾਂ ਰੁਕ ਜਾਓ। ਆਪਣੇ ਆਪ ਨੂੰ ਪੁੱਛੋ:
- ਕੀ ਇਹ ਅਜੇ ਵੀ ਰਿਪੋਜ਼ਟਰੀ ਵਿੱਚ ਹੈ?
- ਕੀ ਪਹੁੰਚ (access) ਸਿਰਫ ਉਹਨਾਂ ਲੋਕਾਂ ਤੱਕ ਸੀਮਤ ਹੈ ਜਿਨ੍ਹਾਂ ਨੂੰ ਇਸਦੀ ਲੋੜ ਹੈ?
- ਕੀ ਡਾਟਾ ਐਨਕ੍ਰਿਪਟਡ ਹੈ?
ਇੱਕ ਗੁਪਤ ਜਾਣਕਾਰੀ ਸਹੀ ਜਗ੍ਹਾ 'ਤੇ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ, ਨਾ ਕਿ ਸਿਰਫ ਇੱਕ ਅਦਿੱਖ ਜਗ੍ਹਾ 'ਤੇ।
Source: https://dev.to/jun_uen0/playing-hide-and-seek-with-an-api-key-our-cfos-claude-code-kept-hiding-job
Optional learning community: https://t.me/GyaanSetuAi