ክፍል 11 / 12

የኮድ ማረጋገጫ፣ ተጋላጭነቶች እና የ AI ውፅዓት ስጋቶች

ትርፍ፡

  • የ AI ውፅዓት በሶስት ንብርብሮች የማረጋገጥ ችሎታ: ትክክለኛነት, ደህንነት እና ምንጭ / ፍቃድ
  • እንደ መርፌ፣ የቅዠት ፓኬጆች እና የተቀበሩ ምስጢሮችን በአስተማማኝ ሻጋታዎች እና መሳሪያዎች የመሸፈን ችሎታ
  • የደህንነት-ወሳኝ ኮድ ብቃት ላለው መሐንዲስ ማፅደቅ እና የኃላፊነት ማስተላለፍ አለመቻልን የመረዳት ችሎታ

የ AI ኮድ መፍጠር ቀላል ነው; እሱን ማመን ውድ ነው። የዚህ ክፍል ብቸኛ ዓላማ በሁሉም ቀደም ባሉት ክፍሎች ደጋግመን የወጣውን የ"ማረጋገጫ" መርህ ወደ ስልታዊ የምህንድስና ዲሲፕሊን መቀየር ነው። ምክንያቱም በ AI የተዘጋጀው ኮድ በመጀመሪያ እይታ ትክክል ቢመስልም ሶስት የተለያዩ አደጋዎችን ይይዛል፡- የማይሰራ/የተሳሳተ (ቅዠት)፣ ደህንነቱ ያልተጠበቀ መሆን (የተጋላጭነት) እና የህግ/የፍቃድ አደጋዎችን መሸከም። እነዚህን ሶስቱን ማወቅ እና ለእያንዳንዳቸው በር መመስረት ባለሙያ ያደርጋችኋል።

እዚህ ላይ “ማረጋገጫ”ን በሶስት እርከኖች እንመለከታለን፡ ትክክለኛነት (ኮዱ በትክክል ስራውን ይሰራል?)፣ ደህንነት (ተንኮል አዘል ግብአትን ይቋቋማል?) እና ፕሮቨንስ/ፍቃድ (ይህን ኮድ የመጠቀም መብት አለኝ?)። እያንዳንዱ ሽፋን የራሱ የሆነ የቁጥጥር ዘዴ አለው, እና አንዳቸውም ቢሆኑ "አይአይ እንደተናገረው" ሊታለፍ አይችልም.

ሶስት የአደጋ ሽፋን

1. የትክክለኛነት አደጋ (ቅዠት). ሞዴሉ የሌለ ተግባር ሊጠራ፣ ኤፒአይን አላግባብ መጠቀም፣ የጠርዝ መያዣን በፀጥታ ሊያልፍ ይችላል። ኮዱ "ምክንያታዊ" ይመስላል ነገር ግን የተሳሳተ ነው. ፀረ-መድሃኒት፡ ማጠናቀር፣ ሙከራ፣ የማይንቀሳቀስ ትንተና እና የእይታ ምርመራ።

2. የደህንነት ስጋት. AI በስልጠና ውሂብ ውስጥ ደህንነቱ ያልተጠበቁ ንድፎችን ሊደግም ይችላል፡ ለ SQL መርፌ የተጋለጠ መጠይቅ፣ ያልተረጋገጠ የተጠቃሚ ግብዓት፣ ደካማ ምስጠራ፣ ደህንነቱ ያልተጠበቀ መገለል፣ ክፍት አቅጣጫ። ኮዱ ይሰራል ነገር ግን ለጥቃት የተጋለጠ ነው። ጸረ-አልባነት፡ ደህንነት ላይ ያተኮረ ግምገማ፣ አውቶሜትድ ስካነሮች (SAST) እና የታወቁ ደህንነታቸው የተጠበቁ ቅጦችን መጫን።

3. ምንጭ/ፍቃድ ስጋት። AI የቅጂ መብት ያለው ወይም የተገደበ ፍቃድ ኮድን የሚመስል ውፅዓት ሊያመጣ ይችላል ወይም አግባብ ያልሆነ ፍቃድ ያለው ጥገኝነት ሊጠቁም ይችላል። መድሀኒት፡ ጥገኝነት እና የፈቃድ ማጣራት፣ የመነሻነት ማረጋገጫ፣ የድርጅት ፖሊሲ።

ጥንቃቄ: ከእነዚህ ሦስት አደጋዎች ውስጥ በጣም ተንኮለኛው ደህንነት ነው; ምክንያቱም ኮዱ ፍተሻን ማለፍ ይችላል፣ በምርት ላይ ያለ ችግር ይሰራል፣ እና ተጋላጭነቱ የሚገለጠው አጥቂ ሲያገኘው ብቻ ነው። “መስራት” ከ “ደህንነቱ የተጠበቀ” ጋር አንድ አይነት አይደለም።

ደረጃ በደረጃ፡ የተነባበረ የማረጋገጫ በር

  1. በማስተዋል አንብብ። ከመቀበልዎ በፊት ኮዱን በትክክል ይረዱ; የማትረዱትን ኮድ አታዋህድ። "ለምን እንደሚሰራ" ማስረዳት ካልቻሉ እስካሁን አልተረጋገጠም።
  2. መኖሩን ያረጋግጡ። እያንዳንዱ ተግባር፣ ኤፒአይ እና ጥቅም ላይ የዋለው ጥቅል በትክክል መኖራቸውን እና በትክክል ጥቅም ላይ መዋላቸውን ያረጋግጡ (የቅዠት በር)።
  3. አውቶማቲክ መሳሪያዎችን ያሂዱ. ማጠናቀቂያ፣ ሊንተር (ስታይል/ስህተት ስካነር)፣ አራሚ ይተይቡ፣ የአሃድ ሙከራዎች፣ እና ከተቻለ SAST (ስታቲክ የመተግበሪያ ደህንነት ሙከራ — ለተጋላጭነት ምንጭ ኮድ የሚቃኝ መሳሪያ)።
  4. ከደህንነት አንፃር ይመልከቱት። ግብአቱ የተረጋገጠ ነው? መጠይቁ ተስተካክሏል? ሚስጥሩ የተቀበረ ነው? የፍቃድ ቁጥጥር አለ?
  5. ምንጭ እና ፍቃድ ያረጋግጡ. አዲስ ጥገኞች ፈቃድ አላቸው? ውጤቱ ከሚታወቅ ኮድ ቤዝ ጋር ከመጠን በላይ ይመሳሰላል?
  6. ለደህንነት-ወሳኝ ከሆነ የባለሙያዎችን ፍቃድ ይጠይቁ። እንደ ማረጋገጫ፣ ክፍያ፣ ክሪፕቶግራፊ፣ የመዳረሻ ቁጥጥር ባሉ አካባቢዎች ብቃት ባለው መሐንዲስ ገለልተኛ ግምገማ የግዴታ ነው።

ሶስት ሚኒ ጉዳዮች

ጉዳይ 1 - በፍተሻ በር ላይ የ SQL መርፌ ተይዟል። ለፍለጋ የመጨረሻ ነጥብ ("... WHERE name = '" + q + "'") የተጠቃሚውን ግቤት በቀጥታ ወደ SQL ጥያቄ የሚያገናኝ AI የመነጨ ኮድ። ኮዱ እየሰራ ነበር እና ፈተናውን አልፏል. በደህንነት ላይ ያተኮረ ፍተሻ እና SAST ቅኝት ይህን ያዘ። ወደ ተለጣፊ መጠይቅ (የተዘጋጀ መግለጫ) ተለወጠ። ባይያዝ ኖሮ ክላሲክ የውሂብ መፍሰስ ተጋላጭነት ነበር።

ጉዳይ 2 - የሃሉሲኔሽን ጥቅል. AI ለአንድ ተግባር የማይኖር የ npm ጥቅል (ፈጣን-አስተማማኝ-ተተነተነ) ጠቁሟል። ገንቢው ሊጭነው ሲሞክር ጥቅሉ አልተገኘም። የከፋው: በአንዳንድ ሁኔታዎች, አጥቂዎች እንደዚህ ያሉ "የ ghost" ጥቅል ስሞችን በእውነተኛ, ተንኮል አዘል ፓኬጆች (ጥገኛ ግራ መጋባት) መሙላት ይችላሉ. ትምህርት፡ እያንዳንዱ የሚመከረው ጥቅል ከኦፊሴላዊው መዝገብ ቤት እና የማውረድ/የጥገና ታሪክ ጋር ያረጋግጡ።

ጉዳይ 3 - የፍቃድ አለመጣጣም. በ AI የተጠቆመ በጣም ጥሩ ጓደኛ ቤተ-መጽሐፍት ከተቋሙ የምርት ፍቃድ ጋር የማይጣጣም ጠንካራ የቅጂ መብት ፍቃድ ነበረው። የጥገኝነት ፍቃድ ቅኝት ይህንን ሪፖርት አድርጓል; ቡድኑ ፈቃዱን በተመጣጣኝ አማራጭ ተክቷል። ያለ ማረጋገጫ በምርት ስርጭት ላይ ህጋዊ ሸክም ይፈጠራል።

አራት ሊገለበጡ የሚችሉ አብነቶች

ቅድመ-መግቢያ ራስን ማረጋገጥ;

የሚከተለውን AI የመነጨ ኮድ ከመቀበልዎ በፊት፣ ያረጋግጡ፡1) የሚጠቀመው እያንዳንዱ ተግባር/ኤፒአይ/ጥቅል በእርግጥ አለ? ተጠርጣሪዎችን ጠቁም።2) ያልተረጋገጠ ግብአት፣ SQL/የትእዛዝ ግንኙነት፣ የተቀበረ ሚስጥር፣ደካማ ክሪፕቶ?3)ያልተዳሰሱ ስህተቶች/ዳር ጉዳዮች ምንድን ናቸው?እያንዳንዱን ግኝት “የተወሰኑ/ይቻላል” ብለው ይሰይሙ እና ማስተካከያዎችን ይጠቁሙ።{{code}}

የደህንነት ትኩረት ግምገማ፡-

ይህንን ኮድ በደህንነት አይን ይፈትሹ። የተለመዱ የOWASP ዘይቤ ተጋላጭነቶችን ይፈልጉ፡ መርፌ፣ የተሰበረ ማረጋገጫ/ፈቃድ፣ ሚስጥራዊነት ያለው መረጃ ይፋ ማድረግ፣ ደህንነቱ ያልተጠበቀ ማሰናከል፣ ያልተረጋገጠ አቅጣጫ መቀየር። ለእያንዳንዱ ግኝት፡ አደጋ፣ የብዝበዛ ሁኔታ፣ ማሻሻያ። ይህ ቅድመ ማጣሪያ ነው; ወሳኝ ግኝቶችን ወደ የሰው ደህንነት ግምገማ ተመልከት።{{code}}

ጥገኝነት እና ፍቃድ ማረጋገጥ;

በዚህ ኮድ የተጨመሩ/የተጠቆሙትን ጥገኞች ይዘርዝሩ። ለእያንዳንዳቸው፡ ጥቅሉ በእርግጥ አለ፣ ተጠብቆ ነው፣ የተለመደው ፈቃዱ ምን ሊሆን ይችላል (መረጋገጥ አለበት) እና በእርግጥ ለፕሮጀክቱ የሚያስፈልገው ነው ወይንስ ባለው መሳሪያ ሊከናወን ይችላል?{{code or dependency list}}

ደህንነቱ የተጠበቀ የቅርጽ ስራ መጫን (በምርት ውስጥ)

ለ{{task}} ኮድ ይፃፉ። የግዴታ የደህንነት ደንቦች፡- ሁሉንም የውጪ ግብአት አጽድቅ/አጽዳ።- በመረጃ ቋት ተደራሽነት ውስጥ የተመጣጠነ መጠይቅን ብቻ ተጠቀም።- ምስጢሮችን በኮድ ውስጥ አታስገባ፤ የአካባቢ ተለዋዋጭ / ሚስጥራዊ አስተዳዳሪን መገመት - ስህተቶችን አይውጡ; ትርጉም ባለው መልኩ አስቡበት። ኮዱ እነዚህን ደንቦች እንዴት እንደሚያከብር በ3 ንጥሎች ያብራሩ።

ደካማ ጥያቄ / ጠንካራ ጥያቄ

ደካማ፡ "በተጠቃሚ ስም የሚፈልግ ጥያቄ ይፃፉ።" (ለመወጋት የተጋለጠ ኮድ ሊከሰት ይችላል።)
ጠንካራ፡ "በተጠቃሚ ስም የሚፈልግ ተግባር ይፃፉ። የተጠቃሚውን ግቤት እንደ ህብረቁምፊ በጭራሽ አትቀላቀል፤ የተመጣጠነ መጠይቅን ተጠቀም (የተዘጋጀ መግለጫ)። ግቤቱን ለርዝመት እና ለቁምፊ አረጋግጥ። ኮዱ ለመርፌ የተዘጋበትን ምክንያት በ2 ዓረፍተ ነገሮች አብራራ።"

ጠንካራው ስሪት ከመጀመሪያው ጀምሮ አስተማማኝ ንድፍ ያስገድዳል; ስለዚህ, በኋላ ላይ ከመያዝ ይልቅ ተጋላጭነቱ በጭራሽ እንደማይከሰት ያረጋግጣል. ይሁን እንጂ የተፈጠረውን ኮድ በማረጋገጫ በሮች በኩል ማለፍ አስፈላጊ ነው.

የማረጋገጫ ንብርብር

መሳሪያ/ዘዴ

"AI አለ" በቂ ነው?

ትክክለኛነት

ማጠናቀር, ሙከራ, የእይታ ምርመራ

አይደለም

API/የጥቅል እውነታ

ኦፊሴላዊ ሰነድ / መዝገብ ቁጥጥር

አይደለም

ደህንነት

SAST፣ የደህንነት ግምገማ

አይደለም

ፍቃድ/ምንጭ

ጥገኝነት እና ፍቃድ ማረጋገጥ

አይደለም

ደህንነት-ወሳኝ አመክንዮ

የባለሙያ መሐንዲስ ይሁንታ

በፍጹም

ኃላፊነት ማስተላለፍ አይቻልም

በ AI መሳሪያ በተሰራው ኮድ ለሚፈጠሩ ስህተቶች፣ ተጋላጭነቶች ወይም ጥሰቶች ሀላፊነት የዚያን ኮድ ሰብስቦ የሚያሰራጨው ቡድን እንጂ የመሳሪያ አቅራቢው አይደለም። ይህ ሙያዊ እውነታ እና ህጋዊ ነው፡ እርስዎ ይፈርማሉ። ስለዚህ "AI ሰራው" ሰበብ ሳይሆን ለተጨማሪ ጥንቃቄ ማረጋገጫ ነው። በተለይም በደህንነት-ወሳኝ ስርዓቶች ውስጥ, AI ውፅዓት በማንኛውም ሁኔታ ውስጥ ብቃት ባለው መሐንዲስ ለመገምገም እና ለማፅደቅ ምትክ አይደለም; ቢበዛ፣ AI ያንን መሐንዲስ የሚያፋጥን ንድፍ ያቀርባል።

ጠቃሚ ምክር: በቡድንዎ ላይ "የማረጋገጫ በር ለ AI የመነጨ ኮድ" (የግንባታ + ሙከራ + የደህንነት ቅኝት + የእይታ ፍተሻ) ብለው የሚጠሩትን አጭር ዝርዝር ይፍጠሩ። አንዴ ይህ በር የተለመደ ከሆነ የፍጥነት መጥፋት በጣም አናሳ ነው እና የአደጋ ቅነሳው ከፍተኛ ነው።

የተለመዱ ስህተቶች

  • ግራ የሚያጋባ "ከአስተማማኝ" ጋር "ይሰራል". ፈተናን የሚያልፍ ኮድ ለጥቃት የተጋለጠ ሊሆን ይችላል።
  • ጥቅሉን/ኤፒአይን ሳታረጋግጥ መጠቀም። የቅዠት እሽጎች የተበላሹ እና የደህንነት ስጋት ይፈጥራሉ።
  • አውቶማቲክ መሳሪያዎችን ማለፍ. ሊንተር፣ ቼክ ይተይቡ እና SAST ሰዎች የሚናፍቁትን በርካሽ ይያዛሉ።
  • ፈቃዱን ችላ ማለት. ተገቢ ያልሆነ ፈቃድ ያለው ጥገኝነት በስርጭት ላይ ህጋዊ ጫና ይፈጥራል።
  • በተሽከርካሪው ላይ ያለውን ሃላፊነት መጫን. ቡድኑ በምርት ውስጥ ያለውን ኮድ ተጠያቂ ነው; “AI አደረገው” ሰበብ አይሆንም።

በማጠቃለያው

የ AI ውፅዓት መቀበል ሶስት የማረጋገጫ ንብርብሮችን ይፈልጋል፡- ትክክለኛነት (ማጠናቀር፣ ሙከራ፣ የእይታ ቁጥጥር)፣ ደህንነት (SAST እና ደህንነት ላይ ያተኮረ ግምገማ) እና ምንጭ/ፍቃድ (ጥገኝነት ማረጋገጥ)። እያንዳንዱ ጥቅል እና ኤፒአይ ጥቅም ላይ የዋለ መሆኑን ያረጋግጡ፣ ደህንነታቸው የተጠበቁ ንድፎችን ከመጀመሪያው ጀምሮ ያስፈጽሙ፣ እና ለደህንነት-ወሳኝ ኮድ ብቃት ባለው መሐንዲስ ይሁንታ ያስገቡ። "ይሰራል" ማለት ደህንነቱ የተጠበቀ ማለት አይደለም፣ እና "AI የተሰራ" ተጠያቂነትን አያስወግድም። የማረጋገጫው በር የፕሮፌሽናልነት ዋጋ እንጂ ፍጥነት አይደለም።

የመተግበሪያ ተግባር

ሆን ብለህ ለ AI ደህንነትን የሚነካ ተግባር ስጠው (ለምሳሌ "ዳታቤዙን በተጠቃሚ ግብአት የሚፈልግ ተግባር") በዚህ ጊዜ ደህንነቱ የተጠበቀ ስርዓተ-ጥለት ሳይጫን። ገቢ ኮድ በ"ቅድመ-ቅበላ ራስን ኦዲት" እና "ደህንነት ላይ ያተኮረ ግምገማ" አብነቶችን ይለፉ፡ መርፌ፣ የተቀበረ ሚስጥር፣ የተቀበረ ፓኬት፣ ወይም ያልተረጋገጠ ግብአት አለ? ከዚያ ተመሳሳዩን ተግባር እንደገና በ “ደህንነቱ የተጠበቀ ስርዓተ ጥለት መጫን” አብነት ይጠይቁ እና ሁለቱን ውጤቶች ያወዳድሩ። ከተቻለ ሊንተር/SAST መሳሪያን ያሂዱ እና ግኝቶቹን ከ AI ራስን የመቆጣጠር ዘዴ ጋር ያወዳድሩ።

የማረጋገጫ ዝርዝር

  • [] የ AI ውፅዓትን በሶስት እርከኖች አረጋግጣለሁ፡ ትክክለኛነት፣ ደህንነት እና ፍቃድ።
  • [ ] እያንዳንዱ ተግባር፣ ኤፒአይ እና ጥቅም ላይ የዋለው ጥቅል በትክክል መኖራቸውን አረጋግጣለሁ።
  • [] ማጠናቀር፣ መፈተሽ፣ ሊንተር እና ከተቻለ SAST መሳሪያዎችን እሰራለሁ።
  • [] ደህንነታቸው የተጠበቁ ንድፎችን (የተመጣጣኝ መጠይቅ፣ የግቤት ማረጋገጫ፣ ሚስጥራዊ አስተዳደር) ከመጀመሪያው አስገባለሁ።
  • [ ] የአዳዲስ ጥገኞችን ፈቃድ እና መስፈርት አረጋግጣለሁ።
  • [ ] ብቃት ላለው መሐንዲስ ለማጽደቅ የደህንነት-ወሳኝ ኮድ እያስገባሁ ነው እና ተጠያቂ እንደሆንኩ ተረድቻለሁ።