ඒකකය 11 / 12

කේත සත්‍යාපනය, දුර්වලතා සහ AI ප්‍රතිදානයේ අවදානම්

ලාභ:

  • AI ප්‍රතිදානය ස්ථර තුනකින් සත්‍යාපනය කිරීමේ හැකියාව: නිරවද්‍යතාවය, ආරක්ෂාව සහ මූලාශ්‍රය/බලපත්‍රය
  • ආරක්ෂිත අච්චු සහ මෙවලම් සමඟ එන්නත් කිරීම, මායාවන් පැකේජ සහ වළලන ලද රහස් වැනි අවදානම් ආවරණය කිරීමේ හැකියාව
  • දක්‍ෂ ඉංජිනේරුවෙකුගේ අනුමැතිය සඳහා ආරක්‍ෂක-විවේචනාත්මක කේතය ඉදිරිපත් කිරීමේ හැකියාව සහ වගකීම් පැවරීමේ නොහැකියාව අවබෝධ කර ගැනීමේ හැකියාව

AI කේතය ජනනය කිරීම පහසුය; ඔහුව විශ්වාස කිරීම මිල අධිකයි. මෙම ඒකකයේ එකම පරමාර්ථය වන්නේ අප පෙර පැවති සියලුම ඒකකවල නැවත නැවතත් කළ "සත්‍යාපනය" මූලධර්මය ක්‍රමානුකූල ඉංජිනේරු විෂයයක් බවට පරිවර්තනය කිරීමයි. AI විසින් නිපදවන ලද කේතය, බැලූ බැල්මට නිවැරදි යැයි පෙනුනද, වෙනම අනතුරු තුනක් දරයි: වැඩ නොකරන/වැරදි (මායාව), අනාරක්ෂිත වීම (අවදානම) සහ නෛතික/බලපත්‍ර අවදානම්. මේ ත්‍රිත්වය දැනගෙන ඒ ඒ එකකට දොරක් ස්ථාපිත කිරීමෙන් ඔබව වෘත්තිකයෙක් වෙනවා.

මෙහිදී අපි ස්ථර තුනකින් "වලංගු කිරීම" සලකා බලමු: නිවැරදි බව (කේතය ඇත්ත වශයෙන්ම කාර්යය ඉටු කරයිද?), ආරක්ෂාව (එය අනිෂ්ට ආදානයට ඔරොත්තු දෙනවාද?), සහ ප්‍රභව/බලපත්‍රය (මෙම කේතය භාවිතා කිරීමට මට අයිතියක් තිබේද?). සෑම ස්ථරයකටම එයටම ආවේණික පාලන ක්‍රමයක් ඇති අතර, ඒවායින් කිසිවක් "AI කීවේ එයයි" යන්නෙන් මඟ හැරිය නොහැක.

අවදානම් ස්ථර තුනක්

1. නිරවද්‍යතාවයේ අවදානම (මායාව). ආකෘතිය නොපවතින ශ්‍රිතයක් ඇමතීමට, API අනිසි ලෙස භාවිතා කිරීමට, නිශ්ශබ්දව එජ් කේස් මඟ හැරිය හැක. කේතය "සාධාරණ" ලෙස පෙනෙන නමුත් වැරදියි. ප්රතිවිරෝධය: සම්පාදනය, පරීක්ෂා කිරීම, ස්ථිතික විශ්ලේෂණය සහ දෘශ්ය පරීක්ෂාව.

2. ආරක්ෂක අවදානම. AI හට පුහුණු දත්තවල අනාරක්ෂිත රටා පුනරාවර්තනය කළ හැක: SQL එන්නත් කිරීමට අවදානමට ලක්විය හැකි විමසුම, සත්‍යාපනය නොකළ පරිශීලක ආදානය, දුර්වල සංකේතනය, අනාරක්ෂිත deserialization, විවෘත යළි-යොමුවීම්. කේතය ක්‍රියාත්මක වන නමුත් ප්‍රහාරයට ගොදුරු වේ. ප්‍රතිවිරෝධය: ආරක්‍ෂාව කේන්ද්‍ර කරගත් සමාලෝචනය, ස්වයංක්‍රීය ස්කෑනර් (SAST) සහ දන්නා ආරක්‍ෂිත රටා පැනවීම.

3. මූලාශ්‍ර/බලපත්‍ර අවදානම. AI විසින් ප්‍රකාශන හිමිකම් ඇති හෝ සීමා සහිත බලපත්‍රලාභී කේතයකට සමීපව සමාන වන ප්‍රතිදානයක් නිපදවිය හැක, නැතහොත් එය නුසුදුසු බලපත්‍ර සහිත යැපීමක් යෝජනා කළ හැක. ප්රතිවිරෝධය: යැපීම සහ බලපත්ර පරීක්ෂා කිරීම, මුල් පිටපත පරීක්ෂා කිරීම, ආයතනික ප්රතිපත්තිය.

අවවාදයයි: මෙම අවදානම් තුනෙන් වඩාත්ම ද්‍රෝහී වන්නේ ආරක්ෂාවයි; මක්නිසාද යත් කේතයට පරීක්ෂණ සමත් විය හැකි අතර, නිෂ්පාදනයේ සුමටව ක්‍රියාත්මක විය හැකි අතර, අවදානම හෙළි වන්නේ ප්‍රහාරකයෙකු එය සොයාගත් විට පමණි. "වැඩ කිරීම" "සුරක්ෂිත" හා සමාන නොවේ.

පියවරෙන් පියවර: ස්ථර සත්‍යාපන දොරටුව

  1. අවබෝධයෙන් කියවන්න. කේතය පිළිගැනීමට පෙර එය සැබවින්ම තේරුම් ගන්න; ඔබට නොතේරෙන කේතය ඒකාබද්ධ නොකරන්න. ඔබට "එය ක්‍රියා කරන්නේ ඇයි" යන්න පැහැදිලි කළ නොහැකි නම්, එය තවමත් වලංගු කර නොමැත.
  2. එය පවතින බව තහවුරු කරන්න. භාවිතා කරන සෑම ශ්‍රිතයක්ම, API සහ පැකේජයක් ඇත්ත වශයෙන්ම පවතින බව සහ නිවැරදිව භාවිතා කරන බව තහවුරු කරන්න (හලුසිනේෂන් ගේට්).
  3. ස්වයංක්‍රීය මෙවලම් ධාවනය කරන්න. සම්පාදකය, ලින්ටර් (ශෛලිය/දෝෂ ස්කෑනරය), ටයිප් පරීක්ෂක, ඒකක පරීක්ෂණ, සහ හැකි නම් SAST (ස්ථිතික යෙදුම් ආරක්ෂණ පරීක්ෂණය - අවදානම් සඳහා මූල කේතය පරිලෝකනය කරන මෙවලම).
  4. ආරක්ෂක දෘෂ්ටිකෝණයකින් එය දෙස බලන්න. ආදානය වලංගුද? විමසුම පරාමිතිකරණය කර තිබේද? රහස වැළලී තිබේද? අවසර පාලනයක් තිබේද?
  5. මූලාශ්රය සහ බලපත්රය පරීක්ෂා කරන්න. නව පරායත්තතා බලපත්‍ර ලබා තිබේද? ප්‍රතිදානය දන්නා කේත පදනමකට ඕනෑවට වඩා සමානද?
  6. එය ආරක්ෂක-විවේචනාත්මක නම්, විශේෂඥ අනුමැතිය ඉල්ලා සිටින්න. සත්‍යාපනය, ගෙවීම, ගුප්තකේතනය, ප්‍රවේශ පාලනය වැනි ක්ෂේත්‍රවල දක්ෂ ඉංජිනේරුවෙකුගේ ස්වාධීන සමාලෝචනය අනිවාර්ය වේ.

කුඩා නඩු තුනක්

නඩුව 1 - SQL එන්නත් කිරීම පරීක්‍ෂණ ගේට්ටුවේදී අල්ලා ගන්නා ලදී. සෙවුම් අන්ත ලක්ෂ්‍යයක් සඳහා පරිශීලක ආදානය සෘජුවම SQL විමසුමට සම්බන්ධ කරන AI ජනනය කරන ලද කේතය ("... WHERE name = '" + q + "'"). කේතය ක්‍රියාත්මක වූ අතර පරීක්ෂණය සමත් විය. ආරක්‍ෂාව කේන්ද්‍ර කරගත් පරීක්‍ෂණය සහ SAST ස්කෑනිං මගින් මෙය අල්ලා ගන්නා ලදී; එය පරාමිතික විමසුමක් (සකසන ලද ප්‍රකාශයක්) බවට පරිවර්තනය කරන ලදී. එය හසු නොවූයේ නම්, එය සම්භාව්‍ය දත්ත කාන්දු වීමේ අවදානමක් වනු ඇත.

නඩුව 2 - මායාවන් පැකේජය. AI විසින් කාර්යයක් සඳහා නොපවතින npm පැකේජයක් (වේගවත්-ආරක්ෂිත-විග්‍රහ කිරීම) යෝජනා කරන ලදී. සංවර්ධකයා එය ස්ථාපනය කිරීමට උත්සාහ කළ විට, පැකේජය සොයාගත නොහැකි විය. නරකයි: සමහර අවස්ථාවලදී, ප්‍රහාරකයන්ට එවැනි "අවතාර" පැකේජ නම් සැබෑ, ද්වේෂසහගත පැකේජ වලින් පිරවිය හැක (පරාධීන ව්‍යාකූලත්වය). පාඩම: එක් එක් නිර්දේශිත පැකේජය නිල රෙජිස්ට්‍රි සහ බාගැනීම්/නඩත්තු ඉතිහාසයට එරෙහිව තහවුරු කරන්න.

නඩුව 3 - බලපත්ර නොගැලපීම. AI විසින් යෝජනා කරන ලද nifty companion library ආයතනයේ නිෂ්පාදන බලපත්‍රය සමඟ නොගැලපෙන ශක්තිමත් Copyleft බලපත්‍රයක් තිබුණි. යැපුම් බලපත්‍ර පරිලෝකනය මෙය වාර්තා කළේය; කණ්ඩායම සුදුසු විකල්පයක් සමඟ බලපත්‍රය ප්‍රතිස්ථාපනය කළේය. සත්‍යාපනයකින් තොරව, නිෂ්පාදන බෙදා හැරීමේදී නීතිමය බරක් පැන නගී.

පිටපත් කළ හැකි සැකිලි හතරක්

ඇතුළත් වීමට පෙර ස්වයං පරීක්ෂාව:

පහත AI ජනනය කරන ලද කේතය පිළිගැනීමට පෙර, පරීක්ෂා කරන්න: 1) එය භාවිතා කරන සෑම ශ්‍රිතයක්ම/API/පැකේජයක්ම ඇත්ත වශයෙන්ම පවතීද? සැකකරුවන් සලකුණු කරන්න.2) වලංගු නොවන ආදානය, SQL/command concatenation, buried secret, දුර්වල crypto තිබේද?3) ආමන්ත්‍රණය නොකළ දෝෂ/දාර අවස්ථා මොනවාද? සෑම සොයාගැනීමක්ම "නිශ්චිත / සම්භාවිතාව" ලෙස ලේබල් කර නිවැරදි කිරීම් යෝජනා කරන්න.{{code}}

ආරක්ෂක කේන්ද්‍රීය සමාලෝචනය:

ආරක්ෂිත ඇසකින් මෙම කේතය පරීක්ෂා කරන්න. පොදු OWASP ශෛලියේ දුර්වලතා සොයන්න: එන්නත් කිරීම, කැඩුණු සත්‍යාපනය/අවසර දීම, සංවේදී දත්ත හෙළිදරව් කිරීම, අනාරක්ෂිත deserialization, unuthenticated redirection. එක් එක් සොයා ගැනීම සඳහා: අවදානම, සූරාකෑමේ අවස්ථාව, පිළියම්. මෙය පූර්ව නිරික්ෂණයකි; තීරණාත්මක සොයාගැනීම් මානව ආරක්ෂණ සමාලෝචනයට යොමු කරන්න.{{code}}

යැපීම සහ බලපත්‍ර පරීක්ෂා කිරීම:

මෙම කේතය මගින් එකතු කරන ලද/යෝජිත පරායත්තතා ලැයිස්තුගත කරන්න. එක් එක් සඳහා: පැකේජය ඇත්ත වශයෙන්ම පවතීද, එය නඩත්තු කරන්නේද, එහි සාමාන්‍ය බලපත්‍රය කුමක් විය යුතුද (සත්‍යාපනය කළ යුතුය), සහ එය ඇත්ත වශයෙන්ම ව්‍යාපෘතිය සඳහා අවශ්‍යද නැතහොත් පවතින මෙවලමකින් එය කළ හැකිද?{{කේතය හෝ පරායත්ත ලැයිස්තුව}}

ආරක්ෂිත ආකෘති පත්ර පැනවීම (නිෂ්පාදනයේ දී):

{{task}} සඳහා කේතය ලියන්න. අනිවාර්ය ආරක්‍ෂක නීති:- සියලුම බාහිර ආදාන වලංගු කිරීම/සනීප කරන්න.- දත්ත සමුදා ප්‍රවේශයේදී පරාමිතික විමසුම පමණක් භාවිතා කරන්න.- කේත තුළ රහස් ඇතුළත් නොකරන්න; පරිසර විචල්‍ය/රහස් කළමනාකරු උපකල්පනය කරන්න - දෝෂ ගිල දමන්න එපා; එය අර්ථවත් ලෙස සලකා බලන්න. අයිතම 3 කින් කේතය මෙම නීතිවලට අනුකූල වන ආකාරය පැහැදිලි කරන්න.

දුර්වල ක්ෂණික / ශක්තිමත් විමසුම

දුර්වල: "පරිශීලක නාමයෙන් සොයන විමසුමක් ලියන්න." (එන්නත් කිරීමට අවදානමට ලක්විය හැකි කේතයක් ඇති විය හැක.)
ශක්තිමත්: "පරිශීලක නාමයෙන් සොයන ශ්‍රිතයක් ලියන්න. කිසිවිටක පරිශීලක ආදානය තන්තුවක් ලෙසට සම්බන්ධ නොකරන්න; පරාමිතික විමසුමක් (සූදානම් කළ ප්‍රකාශය) භාවිතා කරන්න. දිග සහ අක්ෂර සඳහා ආදානය වලංගු කරන්න. කේතය එන්නත් කිරීමට වසා ඇත්තේ මන්දැයි වාක්‍ය 2කින් පැහැදිලි කරන්න."

ශක්තිමත් අනුවාදය ආරම්භයේ සිට ආරක්ෂිත රටාව පනවයි; මේ අනුව, එය පසුව අල්ලා ගැනීමට වඩා, අවදානම කිසිසේත් සිදු නොවන බව සහතික කරයි. කෙසේ වෙතත්, ජනනය කරන ලද කේතය සත්‍යාපන දොරටු හරහා යැවීම අත්‍යවශ්‍ය වේ.

සත්යාපන ස්ථරය

මෙවලම/ක්‍රමය

"AI කිව්වා" ප්‍රමාණවත්ද?

නිරවද්යතාව

සම්පාදනය, පරීක්ෂා කිරීම, දෘශ්ය පරීක්ෂාව

නැත

API/පැකේජ යථාර්ථය

නිල ලේඛනය / වාර්තා පාලනය

නැත

ආරක්ෂාව

SAST, ආරක්ෂක සමාලෝචනය

නැත

බලපත්රය/මූලාශ්රය

යැපීම සහ බලපත්‍ර පරීක්ෂා කිරීම

නැත

ආරක්ෂක-විවේචනාත්මක තර්කනය

විශේෂඥ ඉංජිනේරු අනුමැතිය

කොහෙත්ම නැහැ

වගකීම පැවරිය නොහැක

AI මෙවලමක් මඟින් නිපදවන කේතයෙන් පැන නගින දෝෂ, දුර්වලතා හෝ උල්ලංඝනයන් සඳහා වගකීම අයිති වන්නේ එම කේතය එකලස් කර බෙදා හරින කණ්ඩායමට මිස මෙවලම් සපයන්නාට නොවේ. මෙය වෘත්තීයමය කරුණක් මෙන්ම නීතිමය කරුණකි: ඔබ අත්සන් කරන්න. එබැවින් "AI එය නිෂ්පාදනය කළේය" යනු නිදහසට කරුණක් නොව, අමතර අවවාදයක් සඳහා සාධාරණීකරණය කිරීමකි. විශේෂයෙන් ආරක්ෂිත-විවේචනාත්මක පද්ධතිවල, AI ප්‍රතිදානය කිසිදු තත්වයක් යටතේ සුදුසුකම් ලත් ඉංජිනේරුවෙකු විසින් සමාලෝචනය සහ අනුමැතිය සඳහා ආදේශකයක් නොවේ; වැඩිම වුණොත්, AI විසින් එම ඉංජිනේරුවරයාගේ වේගය වැඩි කරන සැලැස්මක් සපයයි.

ඉඟිය: ඔබ "AI-උත්පාදනය කරන ලද කේතය සඳහා වලංගු කිරීමේ ද්වාරය" ලෙස හඳුන්වන ඔබේ කණ්ඩායමෙහි කෙටි පිරික්සුම් ලැයිස්තුවක් සාදන්න (ඉදිකිරීම + පරීක්ෂණය + ආරක්ෂක ස්කෑන් + දෘශ්‍ය පරීක්ෂාව). මෙම ගේට්ටුව පුරුද්දක් බවට පත් වූ පසු, වේගය අහිමි වීම අවම වන අතර අවදානම අඩු කිරීම උපරිම වේ.

පොදු වැරදි

  • "වැඩ" "ආරක්ෂිත" සමඟ පටලවා ගැනීම. පරීක්ෂණ සමත් වන කේතය ප්‍රහාරයට ගොදුරු විය හැක.
  • එය සත්‍යාපනය නොකර පැකේජය/API භාවිතා කිරීම. මායාවන් ඇති කරන පැකට් දූෂිත වන අතර ආරක්ෂක අවදානමක් දරයි.
  • ස්වයංක්‍රීය මෙවලම් මග හැරීම. ලින්ටර්, ටයිප් පරීක්ෂක සහ SAST මිනිසුන්ට මග හැරෙන දේ අඩු මිලට අල්ලා ගනී.
  • බලපත්‍රය නොසලකා හැරීම. නුසුදුසු බලපත්‍රලාභී යැපීම බෙදා හැරීමේ නීතිමය බරක් ඇති කරයි.
  • වගකීම වාහනය මත පැටවීම. නිෂ්පාදනයේ කේතය සඳහා කණ්ඩායම වගකිව යුතුය; "AI එය කළා" යනු නිදහසට කරුණක් නොවේ.

සාරාංශයක් ලෙස

AI ප්‍රතිදානය පිළිගැනීමට සත්‍යාපන ස්ථර තුනක් අවශ්‍ය වේ: නිවැරදි බව (සම්පාදනය, පරීක්‍ෂණය, දෘශ්‍ය පරීක්‍ෂණය), ආරක්ෂාව (SAST සහ ආරක්‍ෂාව කේන්ද්‍ර කරගත් සමාලෝචනය), සහ මූලාශ්‍රය/බලපත්‍රය (පරාධීනතා පරීක්ෂා කිරීම). භාවිතා කරන සෑම පැකේජයක්ම සහ API ඇත්ත වශයෙන්ම පවතින බව තහවුරු කරන්න, ආරම්භයේ සිට ආරක්ෂිත රටා බලාත්මක කරන්න, සහ සුදුසුකම් ලත් ඉංජිනේරුවෙකුගේ අනුමැතිය සඳහා ආරක්ෂක විවේචනාත්මක කේතය ඉදිරිපත් කරන්න. "වැඩ" යන්නෙන් අදහස් වන්නේ ආරක්ෂිත නොවන අතර, "AI නිෂ්පාදනය" වගකීම ඉවත් නොකරයි. සත්‍යාපන ද්වාරය වෘත්තීයභාවයේ මිල මිස වේගය නොවේ.

යෙදුම් කාර්යය

හිතාමතාම AI හට ආරක්ෂිත-සංවේදී කාර්යයක් ලබා දෙන්න (උදා: "පරිශීලක ආදානය සමඟ දත්ත සමුදාය සොයන ශ්‍රිතයක්"), මෙවර ආරක්ෂිත රටාවක් පැනවීමකින් තොරව. “පූර්ව ඇතුළත් වීමේ ස්වයං-විගණනය” සහ “ආරක්ෂාව කේන්ද්‍ර කරගත් සමාලෝචන” සැකිලි හරහා එන කේතය ලබා දෙන්න: කිසියම් එන්නත් කිරීමක්, වළලන ලද රහසක්, ව්‍යාජ පැකට්ටුවක් හෝ සත්‍යාපනය නොකළ ආදානයක් තිබේද? ඉන්පසු "ආරක්ෂිත රටා පැනවීම" අච්චුව සමඟ එකම කාර්යය නැවත අසන්න සහ ප්‍රතිදානයන් දෙක සංසන්දනය කරන්න. හැකි නම්, linter/SAST මෙවලමක් ධාවනය කර සොයාගැනීම් AI හි ස්වයං-නියාමනය සමඟ සසඳන්න.

පිරික්සුම් ලැයිස්තුව

  • [ ] මම AI ප්‍රතිදානය ස්ථර තුනකින් සත්‍යාපනය කරමි: නිරවද්‍යතාවය, ආරක්ෂාව සහ බලපත්‍රය.
  • [ ] භාවිතා කරන සෑම ශ්‍රිතයක්ම, API සහ පැකේජයක් ඇත්ත වශයෙන්ම පවතින බව මම තහවුරු කරමි.
  • [ ] මම compile, test, linter සහ, හැකි නම්, SAST මෙවලම් ධාවනය කරමි.
  • [ ] මම ආරම්භයේ සිටම ආරක්ෂිත රටා (පරාමිතික විමසුම, ආදාන වලංගුකරණය, රහස් කළමනාකරණය) පනවන්නෙමි.
  • [ ] මම නව පරායත්තතා බලපත්‍ර සහ අවශ්‍යතා පරීක්ෂා කරමි.
  • [ ] මම දක්ෂ ඉංජිනේරුවෙකුගේ අනුමැතිය සඳහා ආරක්ෂක-විවේචනාත්මක කේතය ඉදිරිපත් කරන අතර මම වගකිව යුතු බව මට වැටහේ.