AI એજન્ટ Pull Requests દ્વારા સુરક્ષા સુધારાઓ (Security Fixes) સૂચવે છે

એક સુરક્ષા એલર્ટ (security alert) ટ્રિગર થાય છે. એક LLM સંદર્ભ વાંચે છે. તે કોન્ફિગરેશન ફિક્સ લખે છે. તે GitHub Pull Request ખોલે છે. બીજું LLM કામની સમીક્ષા કરે છે. એક માણસ તે ફિક્સને મર્જ (merge) કરે છે.

એજન્ટ ક્યારેય પ્રોડક્શન (production) ને સ્પર્શ કરતો નથી. તે ક્યારેય જાતે મર્જ કરતો નથી.

સામાન્ય Kubernetes કંટ્રોલર્સ ફક્ત ફરીથી પ્રયાસ (retry) કરે છે. જો ખરાબ કોન્ફિગરેશનને કારણે કોઈ pod ક્રેશ થાય છે, તો કંટ્રોલર તેને અનંતકાળ સુધી રિસ્ટાર્ટ કરતું રહે છે. તે મૂળ કારણ (root cause) ને સુધારે છે નહીં. સુરક્ષામાં પણ આવી જ સમસ્યા છે. એક SIEM એલર્ટ આપે છે. માણસે તેને વાંચવું પડે છે અને ફિક્સ લખવું પડે છે. આ પ્રક્રિયા ધીમી છે.

અમે આ સમસ્યાના ઉકેલ માટે એક એજન્ટ બનાવ્યો છે. તે સુરક્ષા એલર્ટ્સ વાંચે છે અને ડ્રાફ્ટ લખવા માટે ઇન્ફ્રાસ્ટ્રક્ચર તપાસે છે. આ ઓટોપાયલોટ નથી. તે ડ્રાફ્ટ જનરેટર છે. બાકી બધું માનવ અને GitOps ના નિયંત્રણ હેઠળ રહે છે.

તે કેવી રીતે કામ કરે છે:

• Wazuh હુમલાઓ શોધી કાઢે છે અને એલર્ટ્સને ડેટાબેઝમાં સેવ કરે છે. • એક બ્રિજ નવા એલર્ટ્સ ખેંચે છે (pulls) અને એજન્ટ શરૂ કરે છે. • એજન્ટ મર્યાદિત સાધનોનો ઉપયોગ કરે છે. તે ફાઇલો વાંચી/લખી શકે છે, બ્રાન્ચ બનાવી શકે છે અને GitHub API નો ઉપયોગ કરી શકે છે. તે ફક્ત કોન્ફિગરેશન ફાઇલોમાં જ ફેરફાર કરે છે. • ArgoCD રિપો (repo) પર નજર રાખે છે. જ્યાં સુધી માણસ PR મર્જ ન કરે ત્યાં સુધી કંઈપણ ડિપ્લોય (deploy) થતું નથી.

અમે સુરક્ષાના બે સ્તરો (safety layers) નો ઉપયોગ કરીએ છીએ:

  1. કોડ ચેક્સ. Non-LLM નિયમો diff ની ચકાસણી કરે છે. અમે તપાસીએ છીએ કે ફેરફાર કોન્ફિગરેશન ફાઇલોની અંદર જ છે કે નહીં. અમે તપાસીએ છીએ કે સર્વર પાથ એલર્ટ સાથે મેળ ખાય છે કે નહીં. અમે diff ના કદની તપાસ કરીએ છીએ. જો તે નિષ્ફળ જાય, તો PR અટકી જાય છે.

  2. બીજું LLM રિવ્યુ. એક અલગ મોડલ ફેમિલી PR વાંચે છે. તે અભિપ્રાય આપે છે. અમે અલગ મોડલનો ઉપયોગ કરીએ છીએ કારણ કે મોડલ્સ ઘણીવાર પોતાની સાથે જ સહમત થઈ જાય છે. અમે મોડલને PR ટેક્સ્ટ પર વિશ્વાસ ન કરવા માટે પણ કહીએ છીએ. આનાથી હુમલાખોરો એલર્ટમાં કમાન્ડ્સ છુપાવી શકતા નથી.

ડેવલપમેન્ટ દરમિયાન અમે શું બદલ્યું:

• અમે Cloud LLMs થી Ollama નો ઉપયોગ કરીને અમારા પોતાના સર્વર પર શિફ્ટ થયા છીએ. આ ડેટાને ખાનગી રાખે છે અને સર્વિસમાં અવરોધ આવતા અટકાવે છે. • અમે "ToolCalling" એજન્ટોને બદલે "CodeAgent" નો ઉપયોગ કર્યો છે. નાના મોડલ્સ ચોખ્ખું JSON મોકલવામાં મુશ્કેલી અનુભવે છે. CodeAgent તેના બદલે Python લખે છે. આનાથી ભૂલો અને સ્ટેપ્સ 20+ થી ઘટીને 3-8 થઈ ગયા. • અમે "run_shell" સાધનોને બદલે ચોક્કસ Git સાધનોનો ઉપયોગ કર્યો છે. આ "rm -rf" જેવા જોખમી કમાન્ડ્સને અટકાવે છે. • વધુ સારી નેટવર્ક સ્થિરતા માટે અમે "push" સેટઅપથી "pull" સેટઅપ પર શિફ્ટ થયા છીએ.

અમે LLM ને એક ઝડપી જુનિયર ડેવલપરની જેમ ગણીએ છીએ. તેના ડ્રાફ્ટ્સ ઉપયોગી છે કારણ કે એજન્ટ અને તમારા પ્રોડક્શન એન્વાયરમેન્ટની વચ્ચે માણસો અને સેકન્ડરી ચેક્સ હોય છે.

Source: https://dev.to/aisecops/an-ai-agent-that-proposes-security-fixes-as-pull-requests-2hjj

Optional learning community: https://t.me/GyaanSetuAi