contrast-agent 3.8.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (500) hide show
  1. checksums.yaml +7 -0
  2. data/.clang-format +5 -0
  3. data/.dockerignore +10 -0
  4. data/.gitignore +58 -0
  5. data/.gitmodules +6 -0
  6. data/.rspec +6 -0
  7. data/.simplecov +4 -0
  8. data/Gemfile +7 -0
  9. data/LICENSE.txt +12 -0
  10. data/Rakefile +15 -0
  11. data/exe/contrast_service +29 -0
  12. data/ext/build_funchook.rb +48 -0
  13. data/ext/cs__assess_active_record_named/cs__active_record_named.c +47 -0
  14. data/ext/cs__assess_active_record_named/cs__active_record_named.h +10 -0
  15. data/ext/cs__assess_active_record_named/extconf.rb +2 -0
  16. data/ext/cs__assess_array/cs__assess_array.c +38 -0
  17. data/ext/cs__assess_array/cs__assess_array.h +9 -0
  18. data/ext/cs__assess_array/extconf.rb +2 -0
  19. data/ext/cs__assess_basic_object/cs__assess_basic_object.c +50 -0
  20. data/ext/cs__assess_basic_object/cs__assess_basic_object.h +17 -0
  21. data/ext/cs__assess_basic_object/extconf.rb +2 -0
  22. data/ext/cs__assess_fiber_track/cs__assess_fiber_track.c +86 -0
  23. data/ext/cs__assess_fiber_track/cs__assess_fiber_track.h +34 -0
  24. data/ext/cs__assess_fiber_track/extconf.rb +2 -0
  25. data/ext/cs__assess_hash/cs__assess_hash.c +64 -0
  26. data/ext/cs__assess_hash/cs__assess_hash.h +24 -0
  27. data/ext/cs__assess_hash/extconf.rb +2 -0
  28. data/ext/cs__assess_kernel/cs__assess_kernel.c +36 -0
  29. data/ext/cs__assess_kernel/cs__assess_kernel.h +10 -0
  30. data/ext/cs__assess_kernel/extconf.rb +2 -0
  31. data/ext/cs__assess_marshal_module/cs__assess_marshal_module.c +47 -0
  32. data/ext/cs__assess_marshal_module/cs__assess_marshal_module.h +18 -0
  33. data/ext/cs__assess_marshal_module/extconf.rb +2 -0
  34. data/ext/cs__assess_module/cs__assess_module.c +78 -0
  35. data/ext/cs__assess_module/cs__assess_module.h +25 -0
  36. data/ext/cs__assess_module/extconf.rb +2 -0
  37. data/ext/cs__assess_regexp/cs__assess_regexp.c +48 -0
  38. data/ext/cs__assess_regexp/cs__assess_regexp.h +22 -0
  39. data/ext/cs__assess_regexp/extconf.rb +2 -0
  40. data/ext/cs__assess_regexp_track/cs__assess_regexp_track.c +63 -0
  41. data/ext/cs__assess_regexp_track/cs__assess_regexp_track.h +29 -0
  42. data/ext/cs__assess_regexp_track/extconf.rb +2 -0
  43. data/ext/cs__assess_string/cs__assess_string.c +38 -0
  44. data/ext/cs__assess_string/cs__assess_string.h +19 -0
  45. data/ext/cs__assess_string/extconf.rb +2 -0
  46. data/ext/cs__assess_string_interpolation26/cs__assess_string_interpolation26.c +31 -0
  47. data/ext/cs__assess_string_interpolation26/cs__assess_string_interpolation26.h +13 -0
  48. data/ext/cs__assess_string_interpolation26/extconf.rb +2 -0
  49. data/ext/cs__common/cs__common.c +60 -0
  50. data/ext/cs__common/cs__common.h +28 -0
  51. data/ext/cs__common/extconf.rb +20 -0
  52. data/ext/cs__contrast_patch/cs__contrast_patch.c +445 -0
  53. data/ext/cs__contrast_patch/cs__contrast_patch.h +196 -0
  54. data/ext/cs__contrast_patch/extconf.rb +2 -0
  55. data/ext/cs__protect_kernel/cs__protect_kernel.c +37 -0
  56. data/ext/cs__protect_kernel/cs__protect_kernel.h +11 -0
  57. data/ext/cs__protect_kernel/extconf.rb +2 -0
  58. data/ext/cs__scope/cs__scope.c +96 -0
  59. data/ext/cs__scope/cs__scope.h +33 -0
  60. data/ext/cs__scope/extconf.rb +2 -0
  61. data/ext/extconf_common.rb +49 -0
  62. data/funchook/LICENSE +360 -0
  63. data/funchook/Makefile +29 -0
  64. data/funchook/Makefile.in +29 -0
  65. data/funchook/README.md +121 -0
  66. data/funchook/appveyor.yml +42 -0
  67. data/funchook/autogen.sh +3 -0
  68. data/funchook/autom4te.cache/output.0 +4976 -0
  69. data/funchook/autom4te.cache/requests +78 -0
  70. data/funchook/autom4te.cache/traces.0 +364 -0
  71. data/funchook/config.guess +1530 -0
  72. data/funchook/config.log +490 -0
  73. data/funchook/config.status +1016 -0
  74. data/funchook/config.sub +1773 -0
  75. data/funchook/configure +4976 -0
  76. data/funchook/configure.ac +59 -0
  77. data/funchook/distorm/COPYING +26 -0
  78. data/funchook/distorm/MANIFEST +25 -0
  79. data/funchook/distorm/MANIFEST.in +4 -0
  80. data/funchook/distorm/README.md +12 -0
  81. data/funchook/distorm/disOps/disOps.py +795 -0
  82. data/funchook/distorm/disOps/x86db.py +404 -0
  83. data/funchook/distorm/disOps/x86header.py +247 -0
  84. data/funchook/distorm/disOps/x86sets.py +1664 -0
  85. data/funchook/distorm/examples/cs/TestdiStorm/Program.cs +79 -0
  86. data/funchook/distorm/examples/cs/TestdiStorm/Properties/AssemblyInfo.cs +36 -0
  87. data/funchook/distorm/examples/cs/TestdiStorm/TestdiStorm.csproj +69 -0
  88. data/funchook/distorm/examples/cs/distorm-net.sln +26 -0
  89. data/funchook/distorm/examples/cs/distorm-net/CodeInfo.cs +23 -0
  90. data/funchook/distorm/examples/cs/distorm-net/DecodedInst.cs +15 -0
  91. data/funchook/distorm/examples/cs/distorm-net/DecodedResult.cs +14 -0
  92. data/funchook/distorm/examples/cs/distorm-net/DecomposedInst.cs +36 -0
  93. data/funchook/distorm/examples/cs/distorm-net/DecomposedResult.cs +14 -0
  94. data/funchook/distorm/examples/cs/distorm-net/Opcodes.cs +1268 -0
  95. data/funchook/distorm/examples/cs/distorm-net/Opcodes.tt +37 -0
  96. data/funchook/distorm/examples/cs/distorm-net/Operand.cs +25 -0
  97. data/funchook/distorm/examples/cs/distorm-net/Properties/AssemblyInfo.cs +36 -0
  98. data/funchook/distorm/examples/cs/distorm-net/diStorm3.cs +411 -0
  99. data/funchook/distorm/examples/cs/distorm-net/distorm-net.csproj +80 -0
  100. data/funchook/distorm/examples/cs/readme +3 -0
  101. data/funchook/distorm/examples/ddk/README +48 -0
  102. data/funchook/distorm/examples/ddk/distorm.ini +11 -0
  103. data/funchook/distorm/examples/ddk/dummy.c +15 -0
  104. data/funchook/distorm/examples/ddk/main.c +91 -0
  105. data/funchook/distorm/examples/ddk/makefile +1 -0
  106. data/funchook/distorm/examples/ddk/sources +10 -0
  107. data/funchook/distorm/examples/java/Makefile +23 -0
  108. data/funchook/distorm/examples/java/distorm/src/Main.java +43 -0
  109. data/funchook/distorm/examples/java/distorm/src/diStorm3/CodeInfo.java +27 -0
  110. data/funchook/distorm/examples/java/distorm/src/diStorm3/DecodedInst.java +32 -0
  111. data/funchook/distorm/examples/java/distorm/src/diStorm3/DecodedResult.java +11 -0
  112. data/funchook/distorm/examples/java/distorm/src/diStorm3/DecomposedInst.java +89 -0
  113. data/funchook/distorm/examples/java/distorm/src/diStorm3/DecomposedResult.java +11 -0
  114. data/funchook/distorm/examples/java/distorm/src/diStorm3/OpcodeEnum.java +131 -0
  115. data/funchook/distorm/examples/java/distorm/src/diStorm3/Opcodes.java +1123 -0
  116. data/funchook/distorm/examples/java/distorm/src/diStorm3/Operand.java +24 -0
  117. data/funchook/distorm/examples/java/distorm/src/diStorm3/distorm3.java +41 -0
  118. data/funchook/distorm/examples/java/jdistorm.c +405 -0
  119. data/funchook/distorm/examples/java/jdistorm.h +40 -0
  120. data/funchook/distorm/examples/java/jdistorm.sln +20 -0
  121. data/funchook/distorm/examples/java/jdistorm.vcproj +208 -0
  122. data/funchook/distorm/examples/linux/Makefile +15 -0
  123. data/funchook/distorm/examples/linux/main.c +181 -0
  124. data/funchook/distorm/examples/tests/Makefile +15 -0
  125. data/funchook/distorm/examples/tests/main.cpp +42 -0
  126. data/funchook/distorm/examples/tests/main.py +66 -0
  127. data/funchook/distorm/examples/tests/test_distorm3.py +1672 -0
  128. data/funchook/distorm/examples/tests/tests.sln +20 -0
  129. data/funchook/distorm/examples/tests/tests.vcxproj +82 -0
  130. data/funchook/distorm/examples/tests/tests.vcxproj.filters +22 -0
  131. data/funchook/distorm/examples/win32/disasm.sln +25 -0
  132. data/funchook/distorm/examples/win32/disasm.vcxproj +201 -0
  133. data/funchook/distorm/examples/win32/disasm.vcxproj.filters +14 -0
  134. data/funchook/distorm/examples/win32/main.cpp +163 -0
  135. data/funchook/distorm/include/distorm.h +482 -0
  136. data/funchook/distorm/include/mnemonics.h +301 -0
  137. data/funchook/distorm/make/linux/Makefile +28 -0
  138. data/funchook/distorm/make/mac/Makefile +24 -0
  139. data/funchook/distorm/make/win32/cdistorm.vcxproj +239 -0
  140. data/funchook/distorm/make/win32/cdistorm.vcxproj.filters +80 -0
  141. data/funchook/distorm/make/win32/distorm.sln +25 -0
  142. data/funchook/distorm/make/win32/resource.h +14 -0
  143. data/funchook/distorm/make/win32/resource.rc +99 -0
  144. data/funchook/distorm/python/distorm3/__init__.py +957 -0
  145. data/funchook/distorm/python/distorm3/sample.py +51 -0
  146. data/funchook/distorm/setup.cfg +10 -0
  147. data/funchook/distorm/setup.py +266 -0
  148. data/funchook/distorm/src/config.h +169 -0
  149. data/funchook/distorm/src/decoder.c +641 -0
  150. data/funchook/distorm/src/decoder.h +33 -0
  151. data/funchook/distorm/src/distorm.c +413 -0
  152. data/funchook/distorm/src/instructions.c +597 -0
  153. data/funchook/distorm/src/instructions.h +463 -0
  154. data/funchook/distorm/src/insts.c +7939 -0
  155. data/funchook/distorm/src/insts.h +64 -0
  156. data/funchook/distorm/src/mnemonics.c +284 -0
  157. data/funchook/distorm/src/operands.c +1290 -0
  158. data/funchook/distorm/src/operands.h +28 -0
  159. data/funchook/distorm/src/prefix.c +368 -0
  160. data/funchook/distorm/src/prefix.h +64 -0
  161. data/funchook/distorm/src/textdefs.c +172 -0
  162. data/funchook/distorm/src/textdefs.h +57 -0
  163. data/funchook/distorm/src/wstring.c +47 -0
  164. data/funchook/distorm/src/wstring.h +35 -0
  165. data/funchook/distorm/src/x86defs.h +82 -0
  166. data/funchook/include/funchook.h +123 -0
  167. data/funchook/install-sh +527 -0
  168. data/funchook/src/Makefile +70 -0
  169. data/funchook/src/Makefile.in +70 -0
  170. data/funchook/src/__strerror.h +109 -0
  171. data/funchook/src/config.h +101 -0
  172. data/funchook/src/config.h.in +100 -0
  173. data/funchook/src/decoder.o +0 -0
  174. data/funchook/src/distorm.o +0 -0
  175. data/funchook/src/funchook.c +440 -0
  176. data/funchook/src/funchook.o +0 -0
  177. data/funchook/src/funchook_internal.h +155 -0
  178. data/funchook/src/funchook_io.c +182 -0
  179. data/funchook/src/funchook_io.h +64 -0
  180. data/funchook/src/funchook_io.o +0 -0
  181. data/funchook/src/funchook_syscall.S +134 -0
  182. data/funchook/src/funchook_syscall.o +0 -0
  183. data/funchook/src/funchook_unix.c +480 -0
  184. data/funchook/src/funchook_unix.o +0 -0
  185. data/funchook/src/funchook_windows.c +397 -0
  186. data/funchook/src/funchook_x86.c +622 -0
  187. data/funchook/src/funchook_x86.o +0 -0
  188. data/funchook/src/instructions.o +0 -0
  189. data/funchook/src/insts.o +0 -0
  190. data/funchook/src/libfunchook.so +0 -0
  191. data/funchook/src/mnemonics.o +0 -0
  192. data/funchook/src/operands.o +0 -0
  193. data/funchook/src/os_func.c +115 -0
  194. data/funchook/src/os_func.h +75 -0
  195. data/funchook/src/os_func.o +0 -0
  196. data/funchook/src/os_func_unix.c +94 -0
  197. data/funchook/src/os_func_unix.o +0 -0
  198. data/funchook/src/os_func_windows.c +32 -0
  199. data/funchook/src/prefix.o +0 -0
  200. data/funchook/src/printf_base.c +1688 -0
  201. data/funchook/src/printf_base.h +46 -0
  202. data/funchook/src/printf_base.o +0 -0
  203. data/funchook/src/textdefs.o +0 -0
  204. data/funchook/src/wstring.o +0 -0
  205. data/funchook/test/Makefile +43 -0
  206. data/funchook/test/Makefile.in +43 -0
  207. data/funchook/test/funchook_test +0 -0
  208. data/funchook/test/libfunchook_test.c +25 -0
  209. data/funchook/test/libfunchook_test.so +0 -0
  210. data/funchook/test/libfunchook_test2.c +18 -0
  211. data/funchook/test/suffix.list +600 -0
  212. data/funchook/test/test_main.c +430 -0
  213. data/funchook/test/test_main.o +0 -0
  214. data/funchook/test/x86_64_test.S +10 -0
  215. data/funchook/test/x86_64_test.o +0 -0
  216. data/funchook/test/x86_test.S +339 -0
  217. data/funchook/win32/config.h +1 -0
  218. data/funchook/win32/funchook.sln +52 -0
  219. data/funchook/win32/funchook.vcxproj +188 -0
  220. data/funchook/win32/funchook.vcxproj.filters +84 -0
  221. data/funchook/win32/funchook_test.vcxproj +170 -0
  222. data/funchook/win32/funchook_test.vcxproj.filters +22 -0
  223. data/funchook/win32/funchook_test_dll.vcxproj +184 -0
  224. data/funchook/win32/funchook_test_dll.vcxproj.filters +30 -0
  225. data/funchook/win32/funchook_test_exe.def +3 -0
  226. data/lib/contrast-agent.rb +8 -0
  227. data/lib/contrast.rb +57 -0
  228. data/lib/contrast/agent.rb +80 -0
  229. data/lib/contrast/agent/assess.rb +45 -0
  230. data/lib/contrast/agent/assess/adjusted_span.rb +25 -0
  231. data/lib/contrast/agent/assess/class_reverter.rb +82 -0
  232. data/lib/contrast/agent/assess/contrast_event.rb +398 -0
  233. data/lib/contrast/agent/assess/frozen_properties.rb +41 -0
  234. data/lib/contrast/agent/assess/insulator.rb +53 -0
  235. data/lib/contrast/agent/assess/policy/dynamic_source_factory.rb +78 -0
  236. data/lib/contrast/agent/assess/policy/patcher.rb +85 -0
  237. data/lib/contrast/agent/assess/policy/policy.rb +116 -0
  238. data/lib/contrast/agent/assess/policy/policy_node.rb +289 -0
  239. data/lib/contrast/agent/assess/policy/policy_scanner.rb +44 -0
  240. data/lib/contrast/agent/assess/policy/preshift.rb +94 -0
  241. data/lib/contrast/agent/assess/policy/propagation_method.rb +260 -0
  242. data/lib/contrast/agent/assess/policy/propagation_node.rb +127 -0
  243. data/lib/contrast/agent/assess/policy/propagator.rb +35 -0
  244. data/lib/contrast/agent/assess/policy/propagator/append.rb +54 -0
  245. data/lib/contrast/agent/assess/policy/propagator/base.rb +37 -0
  246. data/lib/contrast/agent/assess/policy/propagator/center.rb +73 -0
  247. data/lib/contrast/agent/assess/policy/propagator/custom.rb +36 -0
  248. data/lib/contrast/agent/assess/policy/propagator/database_write.rb +62 -0
  249. data/lib/contrast/agent/assess/policy/propagator/insert.rb +55 -0
  250. data/lib/contrast/agent/assess/policy/propagator/keep.rb +26 -0
  251. data/lib/contrast/agent/assess/policy/propagator/next.rb +42 -0
  252. data/lib/contrast/agent/assess/policy/propagator/prepend.rb +50 -0
  253. data/lib/contrast/agent/assess/policy/propagator/remove.rb +76 -0
  254. data/lib/contrast/agent/assess/policy/propagator/replace.rb +27 -0
  255. data/lib/contrast/agent/assess/policy/propagator/reverse.rb +38 -0
  256. data/lib/contrast/agent/assess/policy/propagator/select.rb +86 -0
  257. data/lib/contrast/agent/assess/policy/propagator/splat.rb +60 -0
  258. data/lib/contrast/agent/assess/policy/propagator/split.rb +49 -0
  259. data/lib/contrast/agent/assess/policy/propagator/substitution.rb +169 -0
  260. data/lib/contrast/agent/assess/policy/propagator/trim.rb +81 -0
  261. data/lib/contrast/agent/assess/policy/rewriter_patch.rb +79 -0
  262. data/lib/contrast/agent/assess/policy/source_method.rb +209 -0
  263. data/lib/contrast/agent/assess/policy/source_node.rb +62 -0
  264. data/lib/contrast/agent/assess/policy/trigger_method.rb +209 -0
  265. data/lib/contrast/agent/assess/policy/trigger_node.rb +198 -0
  266. data/lib/contrast/agent/assess/policy/trigger_validation/ssrf_validator.rb +77 -0
  267. data/lib/contrast/agent/assess/policy/trigger_validation/trigger_validation.rb +31 -0
  268. data/lib/contrast/agent/assess/policy/trigger_validation/xss_validator.rb +40 -0
  269. data/lib/contrast/agent/assess/properties.rb +392 -0
  270. data/lib/contrast/agent/assess/rule.rb +18 -0
  271. data/lib/contrast/agent/assess/rule/base.rb +72 -0
  272. data/lib/contrast/agent/assess/rule/csrf.rb +66 -0
  273. data/lib/contrast/agent/assess/rule/csrf/csrf_action.rb +28 -0
  274. data/lib/contrast/agent/assess/rule/csrf/csrf_applicator.rb +69 -0
  275. data/lib/contrast/agent/assess/rule/csrf/csrf_watcher.rb +132 -0
  276. data/lib/contrast/agent/assess/rule/provider.rb +21 -0
  277. data/lib/contrast/agent/assess/rule/provider/hardcoded_key.rb +62 -0
  278. data/lib/contrast/agent/assess/rule/provider/hardcoded_password.rb +73 -0
  279. data/lib/contrast/agent/assess/rule/provider/hardcoded_value_rule.rb +121 -0
  280. data/lib/contrast/agent/assess/rule/redos.rb +68 -0
  281. data/lib/contrast/agent/assess/rule/response_scanning_rule.rb +47 -0
  282. data/lib/contrast/agent/assess/rule/response_watcher.rb +36 -0
  283. data/lib/contrast/agent/assess/rule/watcher.rb +36 -0
  284. data/lib/contrast/agent/assess/tag.rb +151 -0
  285. data/lib/contrast/agent/at_exit_hook.rb +33 -0
  286. data/lib/contrast/agent/class_reopener.rb +195 -0
  287. data/lib/contrast/agent/deadzone/policy/deadzone_node.rb +26 -0
  288. data/lib/contrast/agent/deadzone/policy/policy.rb +57 -0
  289. data/lib/contrast/agent/disable_reaction.rb +24 -0
  290. data/lib/contrast/agent/exclusion_matcher.rb +190 -0
  291. data/lib/contrast/agent/feature_state.rb +379 -0
  292. data/lib/contrast/agent/inventory/policy/policy.rb +32 -0
  293. data/lib/contrast/agent/inventory/policy/trigger_node.rb +22 -0
  294. data/lib/contrast/agent/logger_manager.rb +116 -0
  295. data/lib/contrast/agent/middleware.rb +352 -0
  296. data/lib/contrast/agent/module_data.rb +16 -0
  297. data/lib/contrast/agent/patching/policy/after_load_patch.rb +37 -0
  298. data/lib/contrast/agent/patching/policy/after_load_patcher.rb +58 -0
  299. data/lib/contrast/agent/patching/policy/method_policy.rb +94 -0
  300. data/lib/contrast/agent/patching/policy/module_policy.rb +116 -0
  301. data/lib/contrast/agent/patching/policy/patch.rb +312 -0
  302. data/lib/contrast/agent/patching/policy/patch_status.rb +192 -0
  303. data/lib/contrast/agent/patching/policy/patcher.rb +310 -0
  304. data/lib/contrast/agent/patching/policy/policy.rb +138 -0
  305. data/lib/contrast/agent/patching/policy/policy_node.rb +80 -0
  306. data/lib/contrast/agent/patching/policy/policy_unpatcher.rb +28 -0
  307. data/lib/contrast/agent/patching/policy/trigger_node.rb +81 -0
  308. data/lib/contrast/agent/protect/policy/policy.rb +37 -0
  309. data/lib/contrast/agent/protect/policy/trigger_node.rb +23 -0
  310. data/lib/contrast/agent/protect/rule.rb +58 -0
  311. data/lib/contrast/agent/protect/rule/base.rb +300 -0
  312. data/lib/contrast/agent/protect/rule/base_service.rb +88 -0
  313. data/lib/contrast/agent/protect/rule/cmd_injection.rb +156 -0
  314. data/lib/contrast/agent/protect/rule/csrf.rb +118 -0
  315. data/lib/contrast/agent/protect/rule/csrf/csrf_evaluator.rb +103 -0
  316. data/lib/contrast/agent/protect/rule/csrf/csrf_token_injector.rb +85 -0
  317. data/lib/contrast/agent/protect/rule/default_scanner.rb +300 -0
  318. data/lib/contrast/agent/protect/rule/deserialization.rb +193 -0
  319. data/lib/contrast/agent/protect/rule/http_method_tampering.rb +80 -0
  320. data/lib/contrast/agent/protect/rule/no_sqli.rb +101 -0
  321. data/lib/contrast/agent/protect/rule/no_sqli/mongo_no_sql_scanner.rb +40 -0
  322. data/lib/contrast/agent/protect/rule/path_traversal.rb +143 -0
  323. data/lib/contrast/agent/protect/rule/sqli.rb +101 -0
  324. data/lib/contrast/agent/protect/rule/sqli/default_sql_scanner.rb +16 -0
  325. data/lib/contrast/agent/protect/rule/sqli/mysql_sql_scanner.rb +38 -0
  326. data/lib/contrast/agent/protect/rule/sqli/postgres_sql_scanner.rb +22 -0
  327. data/lib/contrast/agent/protect/rule/sqli/sqlite_sql_scanner.rb +19 -0
  328. data/lib/contrast/agent/protect/rule/unsafe_file_upload.rb +20 -0
  329. data/lib/contrast/agent/protect/rule/xss.rb +24 -0
  330. data/lib/contrast/agent/protect/rule/xxe.rb +120 -0
  331. data/lib/contrast/agent/protect/rule/xxe/entity_wrapper.rb +82 -0
  332. data/lib/contrast/agent/railtie.rb +30 -0
  333. data/lib/contrast/agent/reaction_processor.rb +47 -0
  334. data/lib/contrast/agent/request.rb +493 -0
  335. data/lib/contrast/agent/request_context.rb +225 -0
  336. data/lib/contrast/agent/require_state.rb +61 -0
  337. data/lib/contrast/agent/response.rb +215 -0
  338. data/lib/contrast/agent/rewriter.rb +244 -0
  339. data/lib/contrast/agent/scope.rb +28 -0
  340. data/lib/contrast/agent/service_heartbeat.rb +37 -0
  341. data/lib/contrast/agent/settings_state.rb +148 -0
  342. data/lib/contrast/agent/socket_client.rb +125 -0
  343. data/lib/contrast/agent/thread.rb +26 -0
  344. data/lib/contrast/agent/tracepoint_hook.rb +51 -0
  345. data/lib/contrast/agent/version.rb +8 -0
  346. data/lib/contrast/api.rb +17 -0
  347. data/lib/contrast/api/.gitkeep +0 -0
  348. data/lib/contrast/api/connection_status.rb +49 -0
  349. data/lib/contrast/api/socket.rb +43 -0
  350. data/lib/contrast/api/speedracer.rb +206 -0
  351. data/lib/contrast/api/tcp_socket.rb +31 -0
  352. data/lib/contrast/api/unix_socket.rb +25 -0
  353. data/lib/contrast/common_agent_configuration.rb +86 -0
  354. data/lib/contrast/components/agent.rb +85 -0
  355. data/lib/contrast/components/app_context.rb +188 -0
  356. data/lib/contrast/components/assess.rb +67 -0
  357. data/lib/contrast/components/config.rb +135 -0
  358. data/lib/contrast/components/contrast_service.rb +113 -0
  359. data/lib/contrast/components/heap_dump.rb +34 -0
  360. data/lib/contrast/components/interface.rb +178 -0
  361. data/lib/contrast/components/inventory.rb +23 -0
  362. data/lib/contrast/components/logger.rb +92 -0
  363. data/lib/contrast/components/protect.rb +38 -0
  364. data/lib/contrast/components/sampling.rb +41 -0
  365. data/lib/contrast/components/scope.rb +106 -0
  366. data/lib/contrast/components/settings.rb +140 -0
  367. data/lib/contrast/config.rb +33 -0
  368. data/lib/contrast/config/agent_configuration.rb +24 -0
  369. data/lib/contrast/config/application_configuration.rb +27 -0
  370. data/lib/contrast/config/assess_configuration.rb +22 -0
  371. data/lib/contrast/config/assess_rules_configuration.rb +18 -0
  372. data/lib/contrast/config/base_configuration.rb +105 -0
  373. data/lib/contrast/config/default_value.rb +16 -0
  374. data/lib/contrast/config/exception_configuration.rb +21 -0
  375. data/lib/contrast/config/heap_dump_configuration.rb +23 -0
  376. data/lib/contrast/config/inventory_configuration.rb +20 -0
  377. data/lib/contrast/config/logger_configuration.rb +20 -0
  378. data/lib/contrast/config/protect_configuration.rb +20 -0
  379. data/lib/contrast/config/protect_rule_configuration.rb +37 -0
  380. data/lib/contrast/config/protect_rules_configuration.rb +30 -0
  381. data/lib/contrast/config/root_configuration.rb +26 -0
  382. data/lib/contrast/config/ruby_configuration.rb +39 -0
  383. data/lib/contrast/config/sampling_configuration.rb +22 -0
  384. data/lib/contrast/config/server_configuration.rb +23 -0
  385. data/lib/contrast/config/service_configuration.rb +22 -0
  386. data/lib/contrast/configuration.rb +214 -0
  387. data/lib/contrast/core_extensions/assess.rb +51 -0
  388. data/lib/contrast/core_extensions/assess/array.rb +58 -0
  389. data/lib/contrast/core_extensions/assess/assess_extension.rb +145 -0
  390. data/lib/contrast/core_extensions/assess/basic_object.rb +15 -0
  391. data/lib/contrast/core_extensions/assess/erb.rb +42 -0
  392. data/lib/contrast/core_extensions/assess/exec_trigger.rb +48 -0
  393. data/lib/contrast/core_extensions/assess/fiber.rb +125 -0
  394. data/lib/contrast/core_extensions/assess/hash.rb +22 -0
  395. data/lib/contrast/core_extensions/assess/kernel.rb +95 -0
  396. data/lib/contrast/core_extensions/assess/module.rb +14 -0
  397. data/lib/contrast/core_extensions/assess/regexp.rb +206 -0
  398. data/lib/contrast/core_extensions/assess/string.rb +75 -0
  399. data/lib/contrast/core_extensions/assess/tilt_template_trigger.rb +73 -0
  400. data/lib/contrast/core_extensions/delegator.rb +14 -0
  401. data/lib/contrast/core_extensions/eval_trigger.rb +52 -0
  402. data/lib/contrast/core_extensions/inventory.rb +22 -0
  403. data/lib/contrast/core_extensions/inventory/datastores.rb +37 -0
  404. data/lib/contrast/core_extensions/module.rb +42 -0
  405. data/lib/contrast/core_extensions/object.rb +27 -0
  406. data/lib/contrast/core_extensions/protect.rb +20 -0
  407. data/lib/contrast/core_extensions/protect/applies_command_injection_rule.rb +70 -0
  408. data/lib/contrast/core_extensions/protect/applies_deserialization_rule.rb +58 -0
  409. data/lib/contrast/core_extensions/protect/applies_no_sqli_rule.rb +81 -0
  410. data/lib/contrast/core_extensions/protect/applies_path_traversal_rule.rb +119 -0
  411. data/lib/contrast/core_extensions/protect/applies_sqli_rule.rb +63 -0
  412. data/lib/contrast/core_extensions/protect/applies_xxe_rule.rb +141 -0
  413. data/lib/contrast/core_extensions/protect/kernel.rb +30 -0
  414. data/lib/contrast/core_extensions/protect/psych.rb +7 -0
  415. data/lib/contrast/core_extensions/thread.rb +31 -0
  416. data/lib/contrast/internal_exception.rb +8 -0
  417. data/lib/contrast/rails_extensions/assess/action_controller_inheritance.rb +48 -0
  418. data/lib/contrast/rails_extensions/assess/active_record.rb +32 -0
  419. data/lib/contrast/rails_extensions/assess/active_record_named.rb +61 -0
  420. data/lib/contrast/rails_extensions/assess/configuration.rb +26 -0
  421. data/lib/contrast/rails_extensions/buffer.rb +30 -0
  422. data/lib/contrast/rails_extensions/rack.rb +45 -0
  423. data/lib/contrast/security_exception.rb +14 -0
  424. data/lib/contrast/sinatra_extensions/assess/cookie.rb +26 -0
  425. data/lib/contrast/sinatra_extensions/inventory/sinatra_base.rb +59 -0
  426. data/lib/contrast/tasks/service.rb +95 -0
  427. data/lib/contrast/utils/assess/sampling_util.rb +96 -0
  428. data/lib/contrast/utils/assess/tracking_util.rb +39 -0
  429. data/lib/contrast/utils/boolean_util.rb +33 -0
  430. data/lib/contrast/utils/cache.rb +69 -0
  431. data/lib/contrast/utils/class_util.rb +58 -0
  432. data/lib/contrast/utils/comment_range.rb +19 -0
  433. data/lib/contrast/utils/data_store_util.rb +23 -0
  434. data/lib/contrast/utils/duck_utils.rb +58 -0
  435. data/lib/contrast/utils/env_configuration_item.rb +52 -0
  436. data/lib/contrast/utils/environment_util.rb +152 -0
  437. data/lib/contrast/utils/freeze_util.rb +36 -0
  438. data/lib/contrast/utils/gemfile_reader.rb +191 -0
  439. data/lib/contrast/utils/hash_digest.rb +148 -0
  440. data/lib/contrast/utils/heap_dump_util.rb +113 -0
  441. data/lib/contrast/utils/invalid_configuration_util.rb +88 -0
  442. data/lib/contrast/utils/inventory_util.rb +126 -0
  443. data/lib/contrast/utils/io_util.rb +61 -0
  444. data/lib/contrast/utils/object_share.rb +117 -0
  445. data/lib/contrast/utils/operating_environment.rb +38 -0
  446. data/lib/contrast/utils/os.rb +49 -0
  447. data/lib/contrast/utils/path_util.rb +151 -0
  448. data/lib/contrast/utils/performs_logging.rb +152 -0
  449. data/lib/contrast/utils/preflight_util.rb +13 -0
  450. data/lib/contrast/utils/prevent_serialization.rb +52 -0
  451. data/lib/contrast/utils/rack_assess_session_cookie.rb +104 -0
  452. data/lib/contrast/utils/rails_assess_configuration.rb +95 -0
  453. data/lib/contrast/utils/random_util.rb +22 -0
  454. data/lib/contrast/utils/resource_loader.rb +23 -0
  455. data/lib/contrast/utils/ruby_ast_rewriter.rb +74 -0
  456. data/lib/contrast/utils/scope_util.rb +99 -0
  457. data/lib/contrast/utils/service_response_util.rb +116 -0
  458. data/lib/contrast/utils/service_sender_util.rb +98 -0
  459. data/lib/contrast/utils/sha256_builder.rb +69 -0
  460. data/lib/contrast/utils/sinatra_helper.rb +49 -0
  461. data/lib/contrast/utils/stack_trace_utils.rb +209 -0
  462. data/lib/contrast/utils/string_utils.rb +72 -0
  463. data/lib/contrast/utils/tag_util.rb +139 -0
  464. data/lib/contrast/utils/thread_tracker.rb +54 -0
  465. data/lib/contrast/utils/timer.rb +78 -0
  466. data/resources/assess/policy.json +1673 -0
  467. data/resources/csrf/inject.js +44 -0
  468. data/resources/deadzone/policy.json +55 -0
  469. data/resources/factory-bot-spec/spec_helper.rb +30 -0
  470. data/resources/inventory/policy.json +110 -0
  471. data/resources/protect/policy.json +417 -0
  472. data/resources/rubocops/kernel/catch_cop.rb +37 -0
  473. data/resources/rubocops/kernel/require_cop.rb +37 -0
  474. data/resources/rubocops/kernel/require_relative_cop.rb +33 -0
  475. data/resources/rubocops/module/autoload_cop.rb +37 -0
  476. data/resources/rubocops/module/const_defined_cop.rb +37 -0
  477. data/resources/rubocops/module/const_get_cop.rb +37 -0
  478. data/resources/rubocops/module/const_set_cop.rb +37 -0
  479. data/resources/rubocops/module/constants_cop.rb +37 -0
  480. data/resources/rubocops/module/name_cop.rb +37 -0
  481. data/resources/rubocops/object/class_cop.rb +37 -0
  482. data/resources/rubocops/object/freeze_cop.rb +37 -0
  483. data/resources/rubocops/object/frozen_cop.rb +37 -0
  484. data/resources/rubocops/object/is_a_cop.rb +37 -0
  485. data/resources/rubocops/object/method_cop.rb +37 -0
  486. data/resources/rubocops/object/respond_to_cop.rb +37 -0
  487. data/resources/rubocops/object/singleton_class_cop.rb +37 -0
  488. data/resources/rubocops/regexp/spelling_cop.rb +44 -0
  489. data/resources/rubocops/thread/new_cop.rb +39 -0
  490. data/resources/ruby-spec/ancestors_spec.rb +70 -0
  491. data/resources/ruby-spec/modulo_spec.rb +831 -0
  492. data/resources/ruby-spec/parameters_spec.rb +261 -0
  493. data/resources/ruby-spec/ruby_spec_spec_helper.rb +35 -0
  494. data/resources/test_marker.txt +1 -0
  495. data/ruby-agent.gemspec +129 -0
  496. data/service_executables/.gitkeep +0 -0
  497. data/service_executables/VERSION +1 -0
  498. data/service_executables/linux/contrast-service +0 -0
  499. data/service_executables/mac/contrast-service +0 -0
  500. metadata +945 -0
@@ -0,0 +1,261 @@
1
+ require_relative '../../spec_helper'
2
+ require_relative 'fixtures/classes'
3
+
4
+ describe "Method#parameters" do
5
+ class MethodSpecs::Methods
6
+ def one_key(a: 1); end
7
+ def one_keyrest(**a); end
8
+
9
+ def one_keyreq(a:); end
10
+
11
+ def one_splat_one_req(*a,b); end
12
+ def one_splat_two_req(*a,b,c); end
13
+ def one_splat_one_req_with_block(*a,b,&blk); end
14
+
15
+ def one_opt_with_stabby(a=-> b { true }); end
16
+
17
+ def one_unnamed_splat(*); end
18
+
19
+ def one_splat_one_block(*args, &block)
20
+ local_is_not_parameter = {}
21
+ end
22
+
23
+ define_method(:one_optional_defined_method) {|x = 1|}
24
+ end
25
+
26
+ it "returns an empty Array when the method expects no arguments" do
27
+ MethodSpecs::Methods.instance_method(:zero).parameters.should == []
28
+ end
29
+
30
+ it "returns [[:req,:name]] for a method expecting one required argument called 'name'" do
31
+ MethodSpecs::Methods.instance_method(:one_req).parameters.should == [[:req,:a]]
32
+ end
33
+
34
+ it "returns [[:req,:a],[:req,:b]] for a method expecting two required arguments called 'a' and 'b''" do
35
+ m = MethodSpecs::Methods.instance_method(:two_req)
36
+ m.parameters.should == [[:req,:a], [:req,:b]]
37
+ end
38
+
39
+ it "returns [[:block,:blk]] for a method expecting one block argument called 'a'" do
40
+ m = MethodSpecs::Methods.instance_method(:zero_with_block)
41
+ m.parameters.should == [[:block,:blk]]
42
+ end
43
+
44
+ it "returns [[:req,:a],[:block,:b] for a method expecting a required argument ('a') and a block argument ('b')" do
45
+ m = MethodSpecs::Methods.instance_method(:one_req_with_block)
46
+ m.parameters.should == [[:req,:a], [:block,:blk]]
47
+ end
48
+
49
+ it "returns [[:req,:a],[:req,:b],[:block,:c] for a method expecting two required arguments ('a','b') and a block argument ('c')" do
50
+ m = MethodSpecs::Methods.instance_method(:two_req_with_block)
51
+ m.parameters.should == [[:req,:a], [:req,:b], [:block,:blk]]
52
+ end
53
+
54
+ it "returns [[:opt,:a]] for a method expecting one optional argument ('a')" do
55
+ m = MethodSpecs::Methods.instance_method(:one_opt)
56
+ m.parameters.should == [[:opt,:a]]
57
+ end
58
+
59
+ it "returns [[:req,:a],[:opt,:b]] for a method expecting one required argument ('a') and one optional argument ('b')" do
60
+ m = MethodSpecs::Methods.instance_method(:one_req_one_opt)
61
+ m.parameters.should == [[:req,:a],[:opt,:b]]
62
+ end
63
+
64
+ it "returns [[:req,:a],[:opt,:b]] for a method expecting one required argument ('a') and one optional argument ('b')" do
65
+ m = MethodSpecs::Methods.instance_method(:one_req_one_opt)
66
+ m.parameters.should == [[:req,:a],[:opt,:b]]
67
+ end
68
+
69
+ it "returns [[:req,:a],[:opt,:b],[:opt,:c]] for a method expecting one required argument ('a') and two optional arguments ('b','c')" do
70
+ m = MethodSpecs::Methods.instance_method(:one_req_two_opt)
71
+ m.parameters.should == [[:req,:a],[:opt,:b],[:opt,:c]]
72
+ end
73
+
74
+ it "returns [[:req,:a],[:req,:b],[:opt,:c]] for a method expecting two required arguments ('a','b') and one optional arguments ('c')" do
75
+ m = MethodSpecs::Methods.instance_method(:two_req_one_opt)
76
+ m.parameters.should == [[:req,:a],[:req,:b],[:opt,:c]]
77
+ end
78
+
79
+ it "returns [[:opt,:a],[:block,:b]] for a method expecting one required argument ('a') and one block argument ('b')" do
80
+ m = MethodSpecs::Methods.instance_method(:one_opt_with_block)
81
+ m.parameters.should == [[:opt,:a],[:block,:blk]]
82
+ end
83
+
84
+ it "returns [[:req,:a],[:opt,:b],[:block,:c]] for a method expecting one required argument ('a'), one optional argument ('b'), and a block ('c')" do
85
+ m = MethodSpecs::Methods.instance_method(:one_req_one_opt_with_block)
86
+ m.parameters.should == [[:req,:a],[:opt,:b],[:block,:blk]]
87
+ end
88
+
89
+ it "returns [[:req,:a],[:opt,:b],[:opt,:c],[:block,:d]] for a method expecting one required argument ('a'), two optional arguments ('b','c'), and a block ('d')" do
90
+ m = MethodSpecs::Methods.instance_method(:one_req_two_opt_with_block)
91
+ m.parameters.should == [[:req,:a],[:opt,:b],[:opt,:c],[:block,:blk]]
92
+ end
93
+
94
+ it "returns [[:rest,:a]] for a method expecting a single splat argument ('a')" do
95
+ m = MethodSpecs::Methods.instance_method(:zero_with_splat)
96
+ m.parameters.should == [[:rest,:a]]
97
+ end
98
+
99
+ it "returns [[:req,:a],[:rest,:b]] for a method expecting a splat argument ('a') and a required argument ('b')" do
100
+ m = MethodSpecs::Methods.instance_method(:one_req_with_splat)
101
+ m.parameters.should == [[:req,:a],[:rest,:b]]
102
+ end
103
+
104
+ it "returns [[:req,:a],[:req,:b],[:rest,:c]] for a method expecting two required arguments ('a','b') and a splat argument ('c')" do
105
+ m = MethodSpecs::Methods.instance_method(:two_req_with_splat)
106
+ m.parameters.should == [[:req,:a],[:req,:b],[:rest,:c]]
107
+ end
108
+
109
+ it "returns [[:req,:a],[:opt,:b],[:rest,:c]] for a method expecting a required argument ('a','b'), an optional argument ('b'), and a splat argument ('c')" do
110
+ m = MethodSpecs::Methods.instance_method(:one_req_one_opt_with_splat)
111
+ m.parameters.should == [[:req,:a],[:opt,:b],[:rest,:c]]
112
+ end
113
+
114
+ it "returns [[:req,:a],[:req,:b],[:opt,:b],[:rest,:d]] for a method expecting two required arguments ('a','b'), an optional argument ('c'), and a splat argument ('d')" do
115
+ m = MethodSpecs::Methods.instance_method(:two_req_one_opt_with_splat)
116
+ m.parameters.should == [[:req,:a],[:req,:b],[:opt,:c],[:rest,:d]]
117
+ end
118
+
119
+ it "returns [[:req,:a],[:opt,:b],[:opt,:c],[:rest,:d]] for a method expecting a required argument ('a'), two optional arguments ('b','c'), and a splat argument ('d')" do
120
+ m = MethodSpecs::Methods.instance_method(:one_req_two_opt_with_splat)
121
+ m.parameters.should == [[:req,:a],[:opt,:b],[:opt,:c],[:rest,:d]]
122
+ end
123
+
124
+ it "returns [[:rest,:a],[:block,:b]] for a method expecting a splat argument ('a') and a block argument ('b')" do
125
+ m = MethodSpecs::Methods.instance_method(:zero_with_splat_and_block)
126
+ m.parameters.should == [[:rest,:a],[:block,:blk]]
127
+ end
128
+
129
+ it "returns [[:req,:a],[:rest,:b],[:block,:c]] for a method expecting a required argument ('a'), a splat argument ('b'), and a block ('c')" do
130
+ m = MethodSpecs::Methods.instance_method(:one_req_with_splat_and_block)
131
+ m.parameters.should == [[:req,:a],[:rest,:b],[:block,:blk]]
132
+ end
133
+
134
+ it "returns [[:req,:a],[:req,:b],[:rest,:c],[:block,:d]] for a method expecting two required arguments ('a','b'), a splat argument ('c'), and a block ('d')" do
135
+ m = MethodSpecs::Methods.instance_method(:two_req_with_splat_and_block)
136
+ m.parameters.should == [[:req,:a],[:req,:b],[:rest,:c],[:block,:blk]]
137
+ end
138
+
139
+ it "returns [[:req,:a],[:opt,:b],[:rest,:c],[:block,:d]] for a method expecting a required argument ('a'), a splat argument ('c'), and a block ('d')" do
140
+ m = MethodSpecs::Methods.instance_method(:one_req_one_opt_with_splat_and_block)
141
+ m.parameters.should == [[:req,:a],[:opt,:b],[:rest,:c],[:block,:blk]]
142
+ end
143
+
144
+ it "returns [[:req,:a],[:req,:b],[:opt,:c],[:block,:d]] for a method expecting two required arguments ('a','b'), an optional argument ('c'), a splat argument ('d'), and a block ('e')" do
145
+ m = MethodSpecs::Methods.instance_method(:two_req_one_opt_with_splat_and_block)
146
+ m.parameters.should == [[:req,:a],[:req,:b],[:opt,:c],[:rest,:d],[:block,:blk]]
147
+ end
148
+
149
+ it "returns [[:rest,:a],[:req,:b]] for a method expecting a splat argument ('a') and a required argument ('b')" do
150
+ m = MethodSpecs::Methods.instance_method(:one_splat_one_req)
151
+ m.parameters.should == [[:rest,:a],[:req,:b]]
152
+ end
153
+
154
+ it "returns [[:rest,:a],[:req,:b],[:req,:c]] for a method expecting a splat argument ('a') and two required arguments ('b','c')" do
155
+ m = MethodSpecs::Methods.instance_method(:one_splat_two_req)
156
+ m.parameters.should == [[:rest,:a],[:req,:b],[:req,:c]]
157
+ end
158
+
159
+ it "returns [[:rest,:a],[:req,:b],[:block,:c]] for a method expecting a splat argument ('a'), a required argument ('b'), and a block ('c')" do
160
+ m = MethodSpecs::Methods.instance_method(:one_splat_one_req_with_block)
161
+ m.parameters.should == [[:rest,:a],[:req,:b],[:block,:blk]]
162
+ end
163
+
164
+ it "returns [[:key,:a]] for a method with a single optional keyword argument" do
165
+ m = MethodSpecs::Methods.instance_method(:one_key)
166
+ m.parameters.should == [[:key,:a]]
167
+ end
168
+
169
+ it "returns [[:keyrest,:a]] for a method with a keyword rest argument" do
170
+ m = MethodSpecs::Methods.instance_method(:one_keyrest)
171
+ m.parameters.should == [[:keyrest,:a]]
172
+ end
173
+
174
+ it "returns [[:keyreq,:a]] for a method with a single required keyword argument" do
175
+ m = MethodSpecs::Methods.instance_method(:one_keyreq)
176
+ m.parameters.should == [[:keyreq,:a]]
177
+ end
178
+
179
+ it "works with ->(){} as the value of an optional argument" do
180
+ m = MethodSpecs::Methods.instance_method(:one_opt_with_stabby)
181
+ m.parameters.should == [[:opt,:a]]
182
+ end
183
+
184
+ # define_method variants
185
+ it "returns [] for a define_method method with explicit no-args || specification" do
186
+ m = MethodSpecs::Methods.instance_method(:zero_defined_method)
187
+ m.parameters.should == []
188
+ end
189
+
190
+ it "returns [[:rest, :x]] for a define_method method with rest arg 'x' only" do
191
+ m = MethodSpecs::Methods.instance_method(:zero_with_splat_defined_method)
192
+ m.parameters.should == [[:rest, :x]]
193
+ end
194
+
195
+ it "returns [[:req, :x]] for a define_method method expecting one required argument 'x'" do
196
+ m = MethodSpecs::Methods.instance_method(:one_req_defined_method)
197
+ m.parameters.should == [[:req, :x]]
198
+ end
199
+
200
+ it "returns [[:req, :x], [:req, :y]] for a define_method method expecting two required arguments 'x' and 'y'" do
201
+ m = MethodSpecs::Methods.instance_method(:two_req_defined_method)
202
+ m.parameters.should == [[:req, :x], [:req, :y]]
203
+ end
204
+
205
+ it "returns [] for a define_method method with no args specification" do
206
+ m = MethodSpecs::Methods.instance_method(:no_args_defined_method)
207
+ m.parameters.should == []
208
+ end
209
+
210
+ it "returns [[:req]] for a define_method method with a grouping as its only argument" do
211
+ m = MethodSpecs::Methods.instance_method(:two_grouped_defined_method)
212
+ m.parameters.should == [[:req]]
213
+ end
214
+
215
+ it "returns [[:opt, :x]] for a define_method method with an optional argument 'x'" do
216
+ m = MethodSpecs::Methods.instance_method(:one_optional_defined_method)
217
+ m.parameters.should == [[:opt, :x]]
218
+ end
219
+
220
+ it "returns [[:rest]] for a Method generated by respond_to_missing?" do
221
+ m = MethodSpecs::Methods.new
222
+ m.method(:handled_via_method_missing).parameters.should == [[:rest]]
223
+ end
224
+
225
+ it "adds nameless rest arg for \"star\" argument" do
226
+ m = MethodSpecs::Methods.new
227
+ m.method(:one_unnamed_splat).parameters.should == [[:rest]]
228
+ end
229
+
230
+ it "returns the args and block for a splat and block argument" do
231
+ m = MethodSpecs::Methods.new
232
+ m.method(:one_splat_one_block).parameters.should == [[:rest, :args], [:block, :block]]
233
+ end
234
+
235
+ it "returns [] for a Method generated by attr_reader" do
236
+ m = MethodSpecs::Methods.new
237
+ m.method(:reader).parameters.should == []
238
+ end
239
+
240
+ it "return [[:req]] for a Method generated by attr_writer" do
241
+ m = MethodSpecs::Methods.new
242
+ m.method(:writer=).parameters.should == [[:req]]
243
+ end
244
+
245
+ it "returns [[:rest]] for core methods with variable-length argument lists" do
246
+ # delete! takes rest args
247
+ "foo".method(:delete!).parameters.should == [[:rest]]
248
+ end
249
+
250
+ it "returns [[:rest]] or [[:opt]] for core methods with optional arguments" do
251
+ # pop takes 1 optional argument
252
+ [
253
+ [[:rest]],
254
+ [[:opt]]
255
+ ].should include([].method(:pop).parameters)
256
+ end
257
+
258
+ it "returns [[:req]] for each parameter for core methods with fixed-length argument lists" do
259
+ 'foo'.method('cs__patched_string_+'.to_sym).parameters.should == [[:req]] # REASON: ADDING PATCH CHANGES THIS
260
+ end
261
+ end
@@ -0,0 +1,35 @@
1
+ use_realpath = File.respond_to?(:realpath)
2
+ root = File.dirname(__FILE__)
3
+ dir = 'fixtures/code'
4
+ CODE_LOADING_DIR ||= use_realpath ? File.realpath(dir, root) : File.expand_path(dir, root)
5
+ require 'json'
6
+ require 'contrast-agent'
7
+ Contrast::Agent::Patching::Policy::Patcher.patch_methods
8
+
9
+ # Enable Thread.report_on_exception by default to catch thread errors earlier
10
+ if Thread.respond_to? :report_on_exception=
11
+ Thread.report_on_exception = true
12
+ else
13
+ class Thread
14
+ def report_on_exception=(value)
15
+ raise 'shim Thread#report_on_exception used with true' if value
16
+ end
17
+ end
18
+ end
19
+
20
+ # Running directly with ruby some_spec.rb
21
+ unless ENV['MSPEC_RUNNER']
22
+ mspec_lib = File.expand_path('../../mspec/lib', __FILE__)
23
+ $LOAD_PATH << mspec_lib if File.directory?(mspec_lib)
24
+
25
+ begin
26
+ require 'mspec'
27
+ require 'mspec/commands/mspec-run'
28
+ rescue LoadError
29
+ puts 'Please add -Ipath/to/mspec/lib or clone mspec as a sibling to run the specs.'
30
+ exit 1
31
+ end
32
+
33
+ ARGV.unshift $0
34
+ MSpecRun.main
35
+ end
@@ -0,0 +1 @@
1
+ Please do not remove this file. It is used for the resource_loader_spec tests.
@@ -0,0 +1,129 @@
1
+ # Copyright (c) 2020 Contrast Security, Inc. See https://www.contrastsecurity.com/enduser-terms-0317a for more details.
2
+ # frozen_string_literal: true
3
+
4
+ require_relative './lib/contrast/agent/version' # rubocop:disable Kernel/RequireRelative
5
+ require 'bundler' # rubocop:disable Kernel/Require
6
+ # https://github.com/grpc/grpc/issues/21514#issuecomment-581417788
7
+ module BundlerHack
8
+ def __materialize__
9
+ if name == 'google-protobuf'
10
+ Bundler.settings.temporary(force_ruby_platform: true) do
11
+ super
12
+ end
13
+ else
14
+ super
15
+ end
16
+ end
17
+ end
18
+ Bundler::LazySpecification.prepend(BundlerHack)
19
+
20
+ lib = File.expand_path('lib', __dir__)
21
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
22
+
23
+ # Add the team as authors of the Agent
24
+ def self.add_authors spec
25
+ spec.authors = %w[
26
+ galen.palmer@contrastsecurity.com
27
+ harold.mcginnis@contrastsecurity.com
28
+ donald.propst@contrastsecurity.com
29
+ alex.macdonald@contrastsecurity.com
30
+ mark.petersen@contrastsecurity.com
31
+ ]
32
+ end
33
+
34
+ # Add those dependencies required to develop or test the Agent
35
+ def self.add_dev_dependencies spec
36
+ spec.add_development_dependency 'bundler'
37
+ spec.add_development_dependency 'climate_control' # mock ENV
38
+ spec.add_development_dependency 'execjs'
39
+ spec.add_development_dependency 'factory_bot'
40
+ spec.add_development_dependency 'fake_ftp'
41
+ spec.add_development_dependency 'openssl'
42
+ spec.add_development_dependency 'parser', '~> 2.6'
43
+ spec.add_development_dependency 'pry'
44
+ spec.add_development_dependency 'rails', '>= 3'
45
+ spec.add_development_dependency 'rake', '~> 10.0'
46
+ spec.add_development_dependency 'rake-compiler', '~> 0'
47
+ spec.add_development_dependency 'rspec', '~> 3.0'
48
+ spec.add_development_dependency 'rspec-benchmark'
49
+ spec.add_development_dependency 'rspec_junit_formatter', '0.3.0'
50
+ spec.add_development_dependency 'rubocop', '0.80.0'
51
+ spec.add_development_dependency 'rubocop-performance', '1.5.2'
52
+ spec.add_development_dependency 'rubocop-rspec', '1.38.1'
53
+ spec.add_development_dependency 'simplecov', '~> 0.18'
54
+ spec.add_development_dependency 'sinatra', '>= 2'
55
+ spec.add_development_dependency 'sqlite3', '1.3.9'
56
+ spec.add_development_dependency 'therubyracer'
57
+ spec.add_development_dependency 'tilt'
58
+ spec.add_development_dependency 'yarjuf', '~> 2.0'
59
+ end
60
+
61
+ # Add those dependencies required to run the Agent in customer applications.
62
+ #
63
+ # Note: If you add a runtime dependency to the Agent, you'll need to update the
64
+ # dependencies.csv in this directory to indicate that and create a
65
+ # corresponding update to the fake gem server data in TeamServer.
66
+ def self.add_dependencies spec
67
+ spec.add_dependency 'google-protobuf', '~> 3.9.0'
68
+ spec.add_dependency 'parser', '~> 2.6'
69
+ spec.add_dependency 'rack', '>= 1.0', '< 3.0'
70
+ end
71
+
72
+ # Enumerate the files required to build the Agent.
73
+ def self.add_files spec
74
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
75
+ # Directories used for testing:
76
+ f.match(%r{^(spec|test)/}) ||
77
+ # Directories used in pipelines
78
+ f.match(%r{^(bin|bitbucket_scripts|vendor)/}) ||
79
+ # Configuration and other files that don't belong to one directory
80
+ f.match(/(Dockerfile)/) ||
81
+ f.match(/(.*\.csv)/) ||
82
+ f.match(/(.*\.md)/) ||
83
+ f.match(/(.*\.sh)/) ||
84
+ f.match(/(.*\.xml)/) ||
85
+ f.match(/(.*\.ya?ml)/)
86
+ end
87
+
88
+ spec.files << 'lib/contrast/api/dtm_pb.rb'
89
+ spec.files << 'lib/contrast/api/settings_pb.rb'
90
+ spec.files += Dir['service_executables/**/*']
91
+ spec.files += Dir['funchook/**/*']
92
+ spec.files += Dir['shared_libraries/**/*']
93
+ end
94
+
95
+ def self.add_metadata spec
96
+ spec.metadata['changelog_uri'] = 'https://docs.contrastsecurity.com/release.html'
97
+ spec.metadata['support_uri'] = 'https://support.contrastsecurity.com'
98
+ spec.metadata['trouble_shooting_uri'] = 'https://support.contrastsecurity.com/hc/en-us/search?utf8=%E2%9C%93&query=Ruby'
99
+ spec.metadata['wiki_uri'] = 'https://docs.contrastsecurity.com/'
100
+ end
101
+
102
+ Gem::Specification.new do |spec|
103
+ spec.name = 'contrast-agent'
104
+ spec.version = Contrast::Agent::VERSION
105
+
106
+ spec.email = %w[
107
+ ruby@contrastsecurity.com
108
+ ]
109
+
110
+ spec.summary = 'Contrast Security\'s agent for rack-based applications.'
111
+ spec.description = 'This gem instantiates a Rack middleware for rack-based ' \
112
+ 'web applications in order to provide Interactive Application Security ' \
113
+ 'Testing and Protection.'
114
+ spec.homepage = 'https://www.contrastsecurity.com'
115
+ spec.license = 'CONTRAST SECURITY (see license file)'
116
+ spec.required_ruby_version = ['>= 2.4.0', '< 2.8.0']
117
+
118
+ spec.bindir = 'exe'
119
+ spec.executables = ['contrast_service']
120
+ # Keep cs__common first, it handles funchook.h right now.
121
+ spec.extensions = Dir['ext/cs__common/extconf.rb', 'ext/**/extconf.rb']
122
+ spec.require_paths = ['lib']
123
+
124
+ add_authors(spec)
125
+ add_files(spec)
126
+ add_dev_dependencies(spec)
127
+ add_dependencies(spec)
128
+ add_metadata(spec)
129
+ end
File without changes
@@ -0,0 +1 @@
1
+ 2.5.3
metadata ADDED
@@ -0,0 +1,945 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: contrast-agent
3
+ version: !ruby/object:Gem::Version
4
+ version: 3.8.4
5
+ platform: ruby
6
+ authors:
7
+ - galen.palmer@contrastsecurity.com
8
+ - harold.mcginnis@contrastsecurity.com
9
+ - donald.propst@contrastsecurity.com
10
+ - alex.macdonald@contrastsecurity.com
11
+ - mark.petersen@contrastsecurity.com
12
+ autorequire:
13
+ bindir: exe
14
+ cert_chain: []
15
+ date: 2020-04-16 00:00:00.000000000 Z
16
+ dependencies:
17
+ - !ruby/object:Gem::Dependency
18
+ name: bundler
19
+ requirement: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: '0'
24
+ type: :development
25
+ prerelease: false
26
+ version_requirements: !ruby/object:Gem::Requirement
27
+ requirements:
28
+ - - ">="
29
+ - !ruby/object:Gem::Version
30
+ version: '0'
31
+ - !ruby/object:Gem::Dependency
32
+ name: climate_control
33
+ requirement: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - ">="
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ requirements:
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ version: '0'
45
+ - !ruby/object:Gem::Dependency
46
+ name: execjs
47
+ requirement: !ruby/object:Gem::Requirement
48
+ requirements:
49
+ - - ">="
50
+ - !ruby/object:Gem::Version
51
+ version: '0'
52
+ type: :development
53
+ prerelease: false
54
+ version_requirements: !ruby/object:Gem::Requirement
55
+ requirements:
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ version: '0'
59
+ - !ruby/object:Gem::Dependency
60
+ name: factory_bot
61
+ requirement: !ruby/object:Gem::Requirement
62
+ requirements:
63
+ - - ">="
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ type: :development
67
+ prerelease: false
68
+ version_requirements: !ruby/object:Gem::Requirement
69
+ requirements:
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: '0'
73
+ - !ruby/object:Gem::Dependency
74
+ name: fake_ftp
75
+ requirement: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: '0'
80
+ type: :development
81
+ prerelease: false
82
+ version_requirements: !ruby/object:Gem::Requirement
83
+ requirements:
84
+ - - ">="
85
+ - !ruby/object:Gem::Version
86
+ version: '0'
87
+ - !ruby/object:Gem::Dependency
88
+ name: openssl
89
+ requirement: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - ">="
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ type: :development
95
+ prerelease: false
96
+ version_requirements: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - ">="
99
+ - !ruby/object:Gem::Version
100
+ version: '0'
101
+ - !ruby/object:Gem::Dependency
102
+ name: parser
103
+ requirement: !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - "~>"
106
+ - !ruby/object:Gem::Version
107
+ version: '2.6'
108
+ type: :development
109
+ prerelease: false
110
+ version_requirements: !ruby/object:Gem::Requirement
111
+ requirements:
112
+ - - "~>"
113
+ - !ruby/object:Gem::Version
114
+ version: '2.6'
115
+ - !ruby/object:Gem::Dependency
116
+ name: pry
117
+ requirement: !ruby/object:Gem::Requirement
118
+ requirements:
119
+ - - ">="
120
+ - !ruby/object:Gem::Version
121
+ version: '0'
122
+ type: :development
123
+ prerelease: false
124
+ version_requirements: !ruby/object:Gem::Requirement
125
+ requirements:
126
+ - - ">="
127
+ - !ruby/object:Gem::Version
128
+ version: '0'
129
+ - !ruby/object:Gem::Dependency
130
+ name: rails
131
+ requirement: !ruby/object:Gem::Requirement
132
+ requirements:
133
+ - - ">="
134
+ - !ruby/object:Gem::Version
135
+ version: '3'
136
+ type: :development
137
+ prerelease: false
138
+ version_requirements: !ruby/object:Gem::Requirement
139
+ requirements:
140
+ - - ">="
141
+ - !ruby/object:Gem::Version
142
+ version: '3'
143
+ - !ruby/object:Gem::Dependency
144
+ name: rake
145
+ requirement: !ruby/object:Gem::Requirement
146
+ requirements:
147
+ - - "~>"
148
+ - !ruby/object:Gem::Version
149
+ version: '10.0'
150
+ type: :development
151
+ prerelease: false
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ requirements:
154
+ - - "~>"
155
+ - !ruby/object:Gem::Version
156
+ version: '10.0'
157
+ - !ruby/object:Gem::Dependency
158
+ name: rake-compiler
159
+ requirement: !ruby/object:Gem::Requirement
160
+ requirements:
161
+ - - "~>"
162
+ - !ruby/object:Gem::Version
163
+ version: '0'
164
+ type: :development
165
+ prerelease: false
166
+ version_requirements: !ruby/object:Gem::Requirement
167
+ requirements:
168
+ - - "~>"
169
+ - !ruby/object:Gem::Version
170
+ version: '0'
171
+ - !ruby/object:Gem::Dependency
172
+ name: rspec
173
+ requirement: !ruby/object:Gem::Requirement
174
+ requirements:
175
+ - - "~>"
176
+ - !ruby/object:Gem::Version
177
+ version: '3.0'
178
+ type: :development
179
+ prerelease: false
180
+ version_requirements: !ruby/object:Gem::Requirement
181
+ requirements:
182
+ - - "~>"
183
+ - !ruby/object:Gem::Version
184
+ version: '3.0'
185
+ - !ruby/object:Gem::Dependency
186
+ name: rspec-benchmark
187
+ requirement: !ruby/object:Gem::Requirement
188
+ requirements:
189
+ - - ">="
190
+ - !ruby/object:Gem::Version
191
+ version: '0'
192
+ type: :development
193
+ prerelease: false
194
+ version_requirements: !ruby/object:Gem::Requirement
195
+ requirements:
196
+ - - ">="
197
+ - !ruby/object:Gem::Version
198
+ version: '0'
199
+ - !ruby/object:Gem::Dependency
200
+ name: rspec_junit_formatter
201
+ requirement: !ruby/object:Gem::Requirement
202
+ requirements:
203
+ - - '='
204
+ - !ruby/object:Gem::Version
205
+ version: 0.3.0
206
+ type: :development
207
+ prerelease: false
208
+ version_requirements: !ruby/object:Gem::Requirement
209
+ requirements:
210
+ - - '='
211
+ - !ruby/object:Gem::Version
212
+ version: 0.3.0
213
+ - !ruby/object:Gem::Dependency
214
+ name: rubocop
215
+ requirement: !ruby/object:Gem::Requirement
216
+ requirements:
217
+ - - '='
218
+ - !ruby/object:Gem::Version
219
+ version: 0.80.0
220
+ type: :development
221
+ prerelease: false
222
+ version_requirements: !ruby/object:Gem::Requirement
223
+ requirements:
224
+ - - '='
225
+ - !ruby/object:Gem::Version
226
+ version: 0.80.0
227
+ - !ruby/object:Gem::Dependency
228
+ name: rubocop-performance
229
+ requirement: !ruby/object:Gem::Requirement
230
+ requirements:
231
+ - - '='
232
+ - !ruby/object:Gem::Version
233
+ version: 1.5.2
234
+ type: :development
235
+ prerelease: false
236
+ version_requirements: !ruby/object:Gem::Requirement
237
+ requirements:
238
+ - - '='
239
+ - !ruby/object:Gem::Version
240
+ version: 1.5.2
241
+ - !ruby/object:Gem::Dependency
242
+ name: rubocop-rspec
243
+ requirement: !ruby/object:Gem::Requirement
244
+ requirements:
245
+ - - '='
246
+ - !ruby/object:Gem::Version
247
+ version: 1.38.1
248
+ type: :development
249
+ prerelease: false
250
+ version_requirements: !ruby/object:Gem::Requirement
251
+ requirements:
252
+ - - '='
253
+ - !ruby/object:Gem::Version
254
+ version: 1.38.1
255
+ - !ruby/object:Gem::Dependency
256
+ name: simplecov
257
+ requirement: !ruby/object:Gem::Requirement
258
+ requirements:
259
+ - - "~>"
260
+ - !ruby/object:Gem::Version
261
+ version: '0.18'
262
+ type: :development
263
+ prerelease: false
264
+ version_requirements: !ruby/object:Gem::Requirement
265
+ requirements:
266
+ - - "~>"
267
+ - !ruby/object:Gem::Version
268
+ version: '0.18'
269
+ - !ruby/object:Gem::Dependency
270
+ name: sinatra
271
+ requirement: !ruby/object:Gem::Requirement
272
+ requirements:
273
+ - - ">="
274
+ - !ruby/object:Gem::Version
275
+ version: '2'
276
+ type: :development
277
+ prerelease: false
278
+ version_requirements: !ruby/object:Gem::Requirement
279
+ requirements:
280
+ - - ">="
281
+ - !ruby/object:Gem::Version
282
+ version: '2'
283
+ - !ruby/object:Gem::Dependency
284
+ name: sqlite3
285
+ requirement: !ruby/object:Gem::Requirement
286
+ requirements:
287
+ - - '='
288
+ - !ruby/object:Gem::Version
289
+ version: 1.3.9
290
+ type: :development
291
+ prerelease: false
292
+ version_requirements: !ruby/object:Gem::Requirement
293
+ requirements:
294
+ - - '='
295
+ - !ruby/object:Gem::Version
296
+ version: 1.3.9
297
+ - !ruby/object:Gem::Dependency
298
+ name: therubyracer
299
+ requirement: !ruby/object:Gem::Requirement
300
+ requirements:
301
+ - - ">="
302
+ - !ruby/object:Gem::Version
303
+ version: '0'
304
+ type: :development
305
+ prerelease: false
306
+ version_requirements: !ruby/object:Gem::Requirement
307
+ requirements:
308
+ - - ">="
309
+ - !ruby/object:Gem::Version
310
+ version: '0'
311
+ - !ruby/object:Gem::Dependency
312
+ name: tilt
313
+ requirement: !ruby/object:Gem::Requirement
314
+ requirements:
315
+ - - ">="
316
+ - !ruby/object:Gem::Version
317
+ version: '0'
318
+ type: :development
319
+ prerelease: false
320
+ version_requirements: !ruby/object:Gem::Requirement
321
+ requirements:
322
+ - - ">="
323
+ - !ruby/object:Gem::Version
324
+ version: '0'
325
+ - !ruby/object:Gem::Dependency
326
+ name: yarjuf
327
+ requirement: !ruby/object:Gem::Requirement
328
+ requirements:
329
+ - - "~>"
330
+ - !ruby/object:Gem::Version
331
+ version: '2.0'
332
+ type: :development
333
+ prerelease: false
334
+ version_requirements: !ruby/object:Gem::Requirement
335
+ requirements:
336
+ - - "~>"
337
+ - !ruby/object:Gem::Version
338
+ version: '2.0'
339
+ - !ruby/object:Gem::Dependency
340
+ name: google-protobuf
341
+ requirement: !ruby/object:Gem::Requirement
342
+ requirements:
343
+ - - "~>"
344
+ - !ruby/object:Gem::Version
345
+ version: 3.9.0
346
+ type: :runtime
347
+ prerelease: false
348
+ version_requirements: !ruby/object:Gem::Requirement
349
+ requirements:
350
+ - - "~>"
351
+ - !ruby/object:Gem::Version
352
+ version: 3.9.0
353
+ - !ruby/object:Gem::Dependency
354
+ name: parser
355
+ requirement: !ruby/object:Gem::Requirement
356
+ requirements:
357
+ - - "~>"
358
+ - !ruby/object:Gem::Version
359
+ version: '2.6'
360
+ type: :runtime
361
+ prerelease: false
362
+ version_requirements: !ruby/object:Gem::Requirement
363
+ requirements:
364
+ - - "~>"
365
+ - !ruby/object:Gem::Version
366
+ version: '2.6'
367
+ - !ruby/object:Gem::Dependency
368
+ name: rack
369
+ requirement: !ruby/object:Gem::Requirement
370
+ requirements:
371
+ - - ">="
372
+ - !ruby/object:Gem::Version
373
+ version: '1.0'
374
+ - - "<"
375
+ - !ruby/object:Gem::Version
376
+ version: '3.0'
377
+ type: :runtime
378
+ prerelease: false
379
+ version_requirements: !ruby/object:Gem::Requirement
380
+ requirements:
381
+ - - ">="
382
+ - !ruby/object:Gem::Version
383
+ version: '1.0'
384
+ - - "<"
385
+ - !ruby/object:Gem::Version
386
+ version: '3.0'
387
+ description: This gem instantiates a Rack middleware for rack-based web applications
388
+ in order to provide Interactive Application Security Testing and Protection.
389
+ email:
390
+ - ruby@contrastsecurity.com
391
+ executables:
392
+ - contrast_service
393
+ extensions:
394
+ - ext/cs__common/extconf.rb
395
+ - ext/cs__scope/extconf.rb
396
+ - ext/cs__assess_module/extconf.rb
397
+ - ext/cs__assess_active_record_named/extconf.rb
398
+ - ext/cs__assess_kernel/extconf.rb
399
+ - ext/cs__assess_marshal_module/extconf.rb
400
+ - ext/cs__assess_fiber_track/extconf.rb
401
+ - ext/cs__assess_regexp/extconf.rb
402
+ - ext/cs__assess_basic_object/extconf.rb
403
+ - ext/cs__contrast_patch/extconf.rb
404
+ - ext/cs__assess_string_interpolation26/extconf.rb
405
+ - ext/cs__assess_regexp_track/extconf.rb
406
+ - ext/cs__protect_kernel/extconf.rb
407
+ - ext/cs__assess_string/extconf.rb
408
+ - ext/cs__assess_array/extconf.rb
409
+ - ext/cs__assess_hash/extconf.rb
410
+ extra_rdoc_files: []
411
+ files:
412
+ - ".clang-format"
413
+ - ".dockerignore"
414
+ - ".gitignore"
415
+ - ".gitmodules"
416
+ - ".rspec"
417
+ - ".simplecov"
418
+ - Gemfile
419
+ - LICENSE.txt
420
+ - Rakefile
421
+ - exe/contrast_service
422
+ - ext/build_funchook.rb
423
+ - ext/cs__assess_active_record_named/cs__active_record_named.c
424
+ - ext/cs__assess_active_record_named/cs__active_record_named.h
425
+ - ext/cs__assess_active_record_named/extconf.rb
426
+ - ext/cs__assess_array/cs__assess_array.c
427
+ - ext/cs__assess_array/cs__assess_array.h
428
+ - ext/cs__assess_array/extconf.rb
429
+ - ext/cs__assess_basic_object/cs__assess_basic_object.c
430
+ - ext/cs__assess_basic_object/cs__assess_basic_object.h
431
+ - ext/cs__assess_basic_object/extconf.rb
432
+ - ext/cs__assess_fiber_track/cs__assess_fiber_track.c
433
+ - ext/cs__assess_fiber_track/cs__assess_fiber_track.h
434
+ - ext/cs__assess_fiber_track/extconf.rb
435
+ - ext/cs__assess_hash/cs__assess_hash.c
436
+ - ext/cs__assess_hash/cs__assess_hash.h
437
+ - ext/cs__assess_hash/extconf.rb
438
+ - ext/cs__assess_kernel/cs__assess_kernel.c
439
+ - ext/cs__assess_kernel/cs__assess_kernel.h
440
+ - ext/cs__assess_kernel/extconf.rb
441
+ - ext/cs__assess_marshal_module/cs__assess_marshal_module.c
442
+ - ext/cs__assess_marshal_module/cs__assess_marshal_module.h
443
+ - ext/cs__assess_marshal_module/extconf.rb
444
+ - ext/cs__assess_module/cs__assess_module.c
445
+ - ext/cs__assess_module/cs__assess_module.h
446
+ - ext/cs__assess_module/extconf.rb
447
+ - ext/cs__assess_regexp/cs__assess_regexp.c
448
+ - ext/cs__assess_regexp/cs__assess_regexp.h
449
+ - ext/cs__assess_regexp/extconf.rb
450
+ - ext/cs__assess_regexp_track/cs__assess_regexp_track.c
451
+ - ext/cs__assess_regexp_track/cs__assess_regexp_track.h
452
+ - ext/cs__assess_regexp_track/extconf.rb
453
+ - ext/cs__assess_string/cs__assess_string.c
454
+ - ext/cs__assess_string/cs__assess_string.h
455
+ - ext/cs__assess_string/extconf.rb
456
+ - ext/cs__assess_string_interpolation26/cs__assess_string_interpolation26.c
457
+ - ext/cs__assess_string_interpolation26/cs__assess_string_interpolation26.h
458
+ - ext/cs__assess_string_interpolation26/extconf.rb
459
+ - ext/cs__common/cs__common.c
460
+ - ext/cs__common/cs__common.h
461
+ - ext/cs__common/extconf.rb
462
+ - ext/cs__contrast_patch/cs__contrast_patch.c
463
+ - ext/cs__contrast_patch/cs__contrast_patch.h
464
+ - ext/cs__contrast_patch/extconf.rb
465
+ - ext/cs__protect_kernel/cs__protect_kernel.c
466
+ - ext/cs__protect_kernel/cs__protect_kernel.h
467
+ - ext/cs__protect_kernel/extconf.rb
468
+ - ext/cs__scope/cs__scope.c
469
+ - ext/cs__scope/cs__scope.h
470
+ - ext/cs__scope/extconf.rb
471
+ - ext/extconf_common.rb
472
+ - funchook/LICENSE
473
+ - funchook/Makefile
474
+ - funchook/Makefile.in
475
+ - funchook/README.md
476
+ - funchook/appveyor.yml
477
+ - funchook/autogen.sh
478
+ - funchook/autom4te.cache/output.0
479
+ - funchook/autom4te.cache/requests
480
+ - funchook/autom4te.cache/traces.0
481
+ - funchook/config.guess
482
+ - funchook/config.log
483
+ - funchook/config.status
484
+ - funchook/config.sub
485
+ - funchook/configure
486
+ - funchook/configure.ac
487
+ - funchook/distorm/COPYING
488
+ - funchook/distorm/MANIFEST
489
+ - funchook/distorm/MANIFEST.in
490
+ - funchook/distorm/README.md
491
+ - funchook/distorm/disOps/disOps.py
492
+ - funchook/distorm/disOps/x86db.py
493
+ - funchook/distorm/disOps/x86header.py
494
+ - funchook/distorm/disOps/x86sets.py
495
+ - funchook/distorm/examples/cs/TestdiStorm/Program.cs
496
+ - funchook/distorm/examples/cs/TestdiStorm/Properties/AssemblyInfo.cs
497
+ - funchook/distorm/examples/cs/TestdiStorm/TestdiStorm.csproj
498
+ - funchook/distorm/examples/cs/distorm-net.sln
499
+ - funchook/distorm/examples/cs/distorm-net/CodeInfo.cs
500
+ - funchook/distorm/examples/cs/distorm-net/DecodedInst.cs
501
+ - funchook/distorm/examples/cs/distorm-net/DecodedResult.cs
502
+ - funchook/distorm/examples/cs/distorm-net/DecomposedInst.cs
503
+ - funchook/distorm/examples/cs/distorm-net/DecomposedResult.cs
504
+ - funchook/distorm/examples/cs/distorm-net/Opcodes.cs
505
+ - funchook/distorm/examples/cs/distorm-net/Opcodes.tt
506
+ - funchook/distorm/examples/cs/distorm-net/Operand.cs
507
+ - funchook/distorm/examples/cs/distorm-net/Properties/AssemblyInfo.cs
508
+ - funchook/distorm/examples/cs/distorm-net/diStorm3.cs
509
+ - funchook/distorm/examples/cs/distorm-net/distorm-net.csproj
510
+ - funchook/distorm/examples/cs/readme
511
+ - funchook/distorm/examples/ddk/README
512
+ - funchook/distorm/examples/ddk/distorm.ini
513
+ - funchook/distorm/examples/ddk/dummy.c
514
+ - funchook/distorm/examples/ddk/main.c
515
+ - funchook/distorm/examples/ddk/makefile
516
+ - funchook/distorm/examples/ddk/sources
517
+ - funchook/distorm/examples/java/Makefile
518
+ - funchook/distorm/examples/java/distorm/src/Main.java
519
+ - funchook/distorm/examples/java/distorm/src/diStorm3/CodeInfo.java
520
+ - funchook/distorm/examples/java/distorm/src/diStorm3/DecodedInst.java
521
+ - funchook/distorm/examples/java/distorm/src/diStorm3/DecodedResult.java
522
+ - funchook/distorm/examples/java/distorm/src/diStorm3/DecomposedInst.java
523
+ - funchook/distorm/examples/java/distorm/src/diStorm3/DecomposedResult.java
524
+ - funchook/distorm/examples/java/distorm/src/diStorm3/OpcodeEnum.java
525
+ - funchook/distorm/examples/java/distorm/src/diStorm3/Opcodes.java
526
+ - funchook/distorm/examples/java/distorm/src/diStorm3/Operand.java
527
+ - funchook/distorm/examples/java/distorm/src/diStorm3/distorm3.java
528
+ - funchook/distorm/examples/java/jdistorm.c
529
+ - funchook/distorm/examples/java/jdistorm.h
530
+ - funchook/distorm/examples/java/jdistorm.sln
531
+ - funchook/distorm/examples/java/jdistorm.vcproj
532
+ - funchook/distorm/examples/linux/Makefile
533
+ - funchook/distorm/examples/linux/main.c
534
+ - funchook/distorm/examples/tests/Makefile
535
+ - funchook/distorm/examples/tests/main.cpp
536
+ - funchook/distorm/examples/tests/main.py
537
+ - funchook/distorm/examples/tests/test_distorm3.py
538
+ - funchook/distorm/examples/tests/tests.sln
539
+ - funchook/distorm/examples/tests/tests.vcxproj
540
+ - funchook/distorm/examples/tests/tests.vcxproj.filters
541
+ - funchook/distorm/examples/win32/disasm.sln
542
+ - funchook/distorm/examples/win32/disasm.vcxproj
543
+ - funchook/distorm/examples/win32/disasm.vcxproj.filters
544
+ - funchook/distorm/examples/win32/main.cpp
545
+ - funchook/distorm/include/distorm.h
546
+ - funchook/distorm/include/mnemonics.h
547
+ - funchook/distorm/make/linux/Makefile
548
+ - funchook/distorm/make/mac/Makefile
549
+ - funchook/distorm/make/win32/cdistorm.vcxproj
550
+ - funchook/distorm/make/win32/cdistorm.vcxproj.filters
551
+ - funchook/distorm/make/win32/distorm.sln
552
+ - funchook/distorm/make/win32/resource.h
553
+ - funchook/distorm/make/win32/resource.rc
554
+ - funchook/distorm/python/distorm3/__init__.py
555
+ - funchook/distorm/python/distorm3/sample.py
556
+ - funchook/distorm/setup.cfg
557
+ - funchook/distorm/setup.py
558
+ - funchook/distorm/src/config.h
559
+ - funchook/distorm/src/decoder.c
560
+ - funchook/distorm/src/decoder.h
561
+ - funchook/distorm/src/distorm.c
562
+ - funchook/distorm/src/instructions.c
563
+ - funchook/distorm/src/instructions.h
564
+ - funchook/distorm/src/insts.c
565
+ - funchook/distorm/src/insts.h
566
+ - funchook/distorm/src/mnemonics.c
567
+ - funchook/distorm/src/operands.c
568
+ - funchook/distorm/src/operands.h
569
+ - funchook/distorm/src/prefix.c
570
+ - funchook/distorm/src/prefix.h
571
+ - funchook/distorm/src/textdefs.c
572
+ - funchook/distorm/src/textdefs.h
573
+ - funchook/distorm/src/wstring.c
574
+ - funchook/distorm/src/wstring.h
575
+ - funchook/distorm/src/x86defs.h
576
+ - funchook/include/funchook.h
577
+ - funchook/install-sh
578
+ - funchook/src/Makefile
579
+ - funchook/src/Makefile.in
580
+ - funchook/src/__strerror.h
581
+ - funchook/src/config.h
582
+ - funchook/src/config.h.in
583
+ - funchook/src/decoder.o
584
+ - funchook/src/distorm.o
585
+ - funchook/src/funchook.c
586
+ - funchook/src/funchook.o
587
+ - funchook/src/funchook_internal.h
588
+ - funchook/src/funchook_io.c
589
+ - funchook/src/funchook_io.h
590
+ - funchook/src/funchook_io.o
591
+ - funchook/src/funchook_syscall.S
592
+ - funchook/src/funchook_syscall.o
593
+ - funchook/src/funchook_unix.c
594
+ - funchook/src/funchook_unix.o
595
+ - funchook/src/funchook_windows.c
596
+ - funchook/src/funchook_x86.c
597
+ - funchook/src/funchook_x86.o
598
+ - funchook/src/instructions.o
599
+ - funchook/src/insts.o
600
+ - funchook/src/libfunchook.so
601
+ - funchook/src/mnemonics.o
602
+ - funchook/src/operands.o
603
+ - funchook/src/os_func.c
604
+ - funchook/src/os_func.h
605
+ - funchook/src/os_func.o
606
+ - funchook/src/os_func_unix.c
607
+ - funchook/src/os_func_unix.o
608
+ - funchook/src/os_func_windows.c
609
+ - funchook/src/prefix.o
610
+ - funchook/src/printf_base.c
611
+ - funchook/src/printf_base.h
612
+ - funchook/src/printf_base.o
613
+ - funchook/src/textdefs.o
614
+ - funchook/src/wstring.o
615
+ - funchook/test/Makefile
616
+ - funchook/test/Makefile.in
617
+ - funchook/test/funchook_test
618
+ - funchook/test/libfunchook_test.c
619
+ - funchook/test/libfunchook_test.so
620
+ - funchook/test/libfunchook_test2.c
621
+ - funchook/test/suffix.list
622
+ - funchook/test/test_main.c
623
+ - funchook/test/test_main.o
624
+ - funchook/test/x86_64_test.S
625
+ - funchook/test/x86_64_test.o
626
+ - funchook/test/x86_test.S
627
+ - funchook/win32/config.h
628
+ - funchook/win32/funchook.sln
629
+ - funchook/win32/funchook.vcxproj
630
+ - funchook/win32/funchook.vcxproj.filters
631
+ - funchook/win32/funchook_test.vcxproj
632
+ - funchook/win32/funchook_test.vcxproj.filters
633
+ - funchook/win32/funchook_test_dll.vcxproj
634
+ - funchook/win32/funchook_test_dll.vcxproj.filters
635
+ - funchook/win32/funchook_test_exe.def
636
+ - lib/contrast-agent.rb
637
+ - lib/contrast.rb
638
+ - lib/contrast/agent.rb
639
+ - lib/contrast/agent/assess.rb
640
+ - lib/contrast/agent/assess/adjusted_span.rb
641
+ - lib/contrast/agent/assess/class_reverter.rb
642
+ - lib/contrast/agent/assess/contrast_event.rb
643
+ - lib/contrast/agent/assess/frozen_properties.rb
644
+ - lib/contrast/agent/assess/insulator.rb
645
+ - lib/contrast/agent/assess/policy/dynamic_source_factory.rb
646
+ - lib/contrast/agent/assess/policy/patcher.rb
647
+ - lib/contrast/agent/assess/policy/policy.rb
648
+ - lib/contrast/agent/assess/policy/policy_node.rb
649
+ - lib/contrast/agent/assess/policy/policy_scanner.rb
650
+ - lib/contrast/agent/assess/policy/preshift.rb
651
+ - lib/contrast/agent/assess/policy/propagation_method.rb
652
+ - lib/contrast/agent/assess/policy/propagation_node.rb
653
+ - lib/contrast/agent/assess/policy/propagator.rb
654
+ - lib/contrast/agent/assess/policy/propagator/append.rb
655
+ - lib/contrast/agent/assess/policy/propagator/base.rb
656
+ - lib/contrast/agent/assess/policy/propagator/center.rb
657
+ - lib/contrast/agent/assess/policy/propagator/custom.rb
658
+ - lib/contrast/agent/assess/policy/propagator/database_write.rb
659
+ - lib/contrast/agent/assess/policy/propagator/insert.rb
660
+ - lib/contrast/agent/assess/policy/propagator/keep.rb
661
+ - lib/contrast/agent/assess/policy/propagator/next.rb
662
+ - lib/contrast/agent/assess/policy/propagator/prepend.rb
663
+ - lib/contrast/agent/assess/policy/propagator/remove.rb
664
+ - lib/contrast/agent/assess/policy/propagator/replace.rb
665
+ - lib/contrast/agent/assess/policy/propagator/reverse.rb
666
+ - lib/contrast/agent/assess/policy/propagator/select.rb
667
+ - lib/contrast/agent/assess/policy/propagator/splat.rb
668
+ - lib/contrast/agent/assess/policy/propagator/split.rb
669
+ - lib/contrast/agent/assess/policy/propagator/substitution.rb
670
+ - lib/contrast/agent/assess/policy/propagator/trim.rb
671
+ - lib/contrast/agent/assess/policy/rewriter_patch.rb
672
+ - lib/contrast/agent/assess/policy/source_method.rb
673
+ - lib/contrast/agent/assess/policy/source_node.rb
674
+ - lib/contrast/agent/assess/policy/trigger_method.rb
675
+ - lib/contrast/agent/assess/policy/trigger_node.rb
676
+ - lib/contrast/agent/assess/policy/trigger_validation/ssrf_validator.rb
677
+ - lib/contrast/agent/assess/policy/trigger_validation/trigger_validation.rb
678
+ - lib/contrast/agent/assess/policy/trigger_validation/xss_validator.rb
679
+ - lib/contrast/agent/assess/properties.rb
680
+ - lib/contrast/agent/assess/rule.rb
681
+ - lib/contrast/agent/assess/rule/base.rb
682
+ - lib/contrast/agent/assess/rule/csrf.rb
683
+ - lib/contrast/agent/assess/rule/csrf/csrf_action.rb
684
+ - lib/contrast/agent/assess/rule/csrf/csrf_applicator.rb
685
+ - lib/contrast/agent/assess/rule/csrf/csrf_watcher.rb
686
+ - lib/contrast/agent/assess/rule/provider.rb
687
+ - lib/contrast/agent/assess/rule/provider/hardcoded_key.rb
688
+ - lib/contrast/agent/assess/rule/provider/hardcoded_password.rb
689
+ - lib/contrast/agent/assess/rule/provider/hardcoded_value_rule.rb
690
+ - lib/contrast/agent/assess/rule/redos.rb
691
+ - lib/contrast/agent/assess/rule/response_scanning_rule.rb
692
+ - lib/contrast/agent/assess/rule/response_watcher.rb
693
+ - lib/contrast/agent/assess/rule/watcher.rb
694
+ - lib/contrast/agent/assess/tag.rb
695
+ - lib/contrast/agent/at_exit_hook.rb
696
+ - lib/contrast/agent/class_reopener.rb
697
+ - lib/contrast/agent/deadzone/policy/deadzone_node.rb
698
+ - lib/contrast/agent/deadzone/policy/policy.rb
699
+ - lib/contrast/agent/disable_reaction.rb
700
+ - lib/contrast/agent/exclusion_matcher.rb
701
+ - lib/contrast/agent/feature_state.rb
702
+ - lib/contrast/agent/inventory/policy/policy.rb
703
+ - lib/contrast/agent/inventory/policy/trigger_node.rb
704
+ - lib/contrast/agent/logger_manager.rb
705
+ - lib/contrast/agent/middleware.rb
706
+ - lib/contrast/agent/module_data.rb
707
+ - lib/contrast/agent/patching/policy/after_load_patch.rb
708
+ - lib/contrast/agent/patching/policy/after_load_patcher.rb
709
+ - lib/contrast/agent/patching/policy/method_policy.rb
710
+ - lib/contrast/agent/patching/policy/module_policy.rb
711
+ - lib/contrast/agent/patching/policy/patch.rb
712
+ - lib/contrast/agent/patching/policy/patch_status.rb
713
+ - lib/contrast/agent/patching/policy/patcher.rb
714
+ - lib/contrast/agent/patching/policy/policy.rb
715
+ - lib/contrast/agent/patching/policy/policy_node.rb
716
+ - lib/contrast/agent/patching/policy/policy_unpatcher.rb
717
+ - lib/contrast/agent/patching/policy/trigger_node.rb
718
+ - lib/contrast/agent/protect/policy/policy.rb
719
+ - lib/contrast/agent/protect/policy/trigger_node.rb
720
+ - lib/contrast/agent/protect/rule.rb
721
+ - lib/contrast/agent/protect/rule/base.rb
722
+ - lib/contrast/agent/protect/rule/base_service.rb
723
+ - lib/contrast/agent/protect/rule/cmd_injection.rb
724
+ - lib/contrast/agent/protect/rule/csrf.rb
725
+ - lib/contrast/agent/protect/rule/csrf/csrf_evaluator.rb
726
+ - lib/contrast/agent/protect/rule/csrf/csrf_token_injector.rb
727
+ - lib/contrast/agent/protect/rule/default_scanner.rb
728
+ - lib/contrast/agent/protect/rule/deserialization.rb
729
+ - lib/contrast/agent/protect/rule/http_method_tampering.rb
730
+ - lib/contrast/agent/protect/rule/no_sqli.rb
731
+ - lib/contrast/agent/protect/rule/no_sqli/mongo_no_sql_scanner.rb
732
+ - lib/contrast/agent/protect/rule/path_traversal.rb
733
+ - lib/contrast/agent/protect/rule/sqli.rb
734
+ - lib/contrast/agent/protect/rule/sqli/default_sql_scanner.rb
735
+ - lib/contrast/agent/protect/rule/sqli/mysql_sql_scanner.rb
736
+ - lib/contrast/agent/protect/rule/sqli/postgres_sql_scanner.rb
737
+ - lib/contrast/agent/protect/rule/sqli/sqlite_sql_scanner.rb
738
+ - lib/contrast/agent/protect/rule/unsafe_file_upload.rb
739
+ - lib/contrast/agent/protect/rule/xss.rb
740
+ - lib/contrast/agent/protect/rule/xxe.rb
741
+ - lib/contrast/agent/protect/rule/xxe/entity_wrapper.rb
742
+ - lib/contrast/agent/railtie.rb
743
+ - lib/contrast/agent/reaction_processor.rb
744
+ - lib/contrast/agent/request.rb
745
+ - lib/contrast/agent/request_context.rb
746
+ - lib/contrast/agent/require_state.rb
747
+ - lib/contrast/agent/response.rb
748
+ - lib/contrast/agent/rewriter.rb
749
+ - lib/contrast/agent/scope.rb
750
+ - lib/contrast/agent/service_heartbeat.rb
751
+ - lib/contrast/agent/settings_state.rb
752
+ - lib/contrast/agent/socket_client.rb
753
+ - lib/contrast/agent/thread.rb
754
+ - lib/contrast/agent/tracepoint_hook.rb
755
+ - lib/contrast/agent/version.rb
756
+ - lib/contrast/api.rb
757
+ - lib/contrast/api/.gitkeep
758
+ - lib/contrast/api/connection_status.rb
759
+ - lib/contrast/api/dtm_pb.rb
760
+ - lib/contrast/api/settings_pb.rb
761
+ - lib/contrast/api/socket.rb
762
+ - lib/contrast/api/speedracer.rb
763
+ - lib/contrast/api/tcp_socket.rb
764
+ - lib/contrast/api/unix_socket.rb
765
+ - lib/contrast/common_agent_configuration.rb
766
+ - lib/contrast/components/agent.rb
767
+ - lib/contrast/components/app_context.rb
768
+ - lib/contrast/components/assess.rb
769
+ - lib/contrast/components/config.rb
770
+ - lib/contrast/components/contrast_service.rb
771
+ - lib/contrast/components/heap_dump.rb
772
+ - lib/contrast/components/interface.rb
773
+ - lib/contrast/components/inventory.rb
774
+ - lib/contrast/components/logger.rb
775
+ - lib/contrast/components/protect.rb
776
+ - lib/contrast/components/sampling.rb
777
+ - lib/contrast/components/scope.rb
778
+ - lib/contrast/components/settings.rb
779
+ - lib/contrast/config.rb
780
+ - lib/contrast/config/agent_configuration.rb
781
+ - lib/contrast/config/application_configuration.rb
782
+ - lib/contrast/config/assess_configuration.rb
783
+ - lib/contrast/config/assess_rules_configuration.rb
784
+ - lib/contrast/config/base_configuration.rb
785
+ - lib/contrast/config/default_value.rb
786
+ - lib/contrast/config/exception_configuration.rb
787
+ - lib/contrast/config/heap_dump_configuration.rb
788
+ - lib/contrast/config/inventory_configuration.rb
789
+ - lib/contrast/config/logger_configuration.rb
790
+ - lib/contrast/config/protect_configuration.rb
791
+ - lib/contrast/config/protect_rule_configuration.rb
792
+ - lib/contrast/config/protect_rules_configuration.rb
793
+ - lib/contrast/config/root_configuration.rb
794
+ - lib/contrast/config/ruby_configuration.rb
795
+ - lib/contrast/config/sampling_configuration.rb
796
+ - lib/contrast/config/server_configuration.rb
797
+ - lib/contrast/config/service_configuration.rb
798
+ - lib/contrast/configuration.rb
799
+ - lib/contrast/core_extensions/assess.rb
800
+ - lib/contrast/core_extensions/assess/array.rb
801
+ - lib/contrast/core_extensions/assess/assess_extension.rb
802
+ - lib/contrast/core_extensions/assess/basic_object.rb
803
+ - lib/contrast/core_extensions/assess/erb.rb
804
+ - lib/contrast/core_extensions/assess/exec_trigger.rb
805
+ - lib/contrast/core_extensions/assess/fiber.rb
806
+ - lib/contrast/core_extensions/assess/hash.rb
807
+ - lib/contrast/core_extensions/assess/kernel.rb
808
+ - lib/contrast/core_extensions/assess/module.rb
809
+ - lib/contrast/core_extensions/assess/regexp.rb
810
+ - lib/contrast/core_extensions/assess/string.rb
811
+ - lib/contrast/core_extensions/assess/tilt_template_trigger.rb
812
+ - lib/contrast/core_extensions/delegator.rb
813
+ - lib/contrast/core_extensions/eval_trigger.rb
814
+ - lib/contrast/core_extensions/inventory.rb
815
+ - lib/contrast/core_extensions/inventory/datastores.rb
816
+ - lib/contrast/core_extensions/module.rb
817
+ - lib/contrast/core_extensions/object.rb
818
+ - lib/contrast/core_extensions/protect.rb
819
+ - lib/contrast/core_extensions/protect/applies_command_injection_rule.rb
820
+ - lib/contrast/core_extensions/protect/applies_deserialization_rule.rb
821
+ - lib/contrast/core_extensions/protect/applies_no_sqli_rule.rb
822
+ - lib/contrast/core_extensions/protect/applies_path_traversal_rule.rb
823
+ - lib/contrast/core_extensions/protect/applies_sqli_rule.rb
824
+ - lib/contrast/core_extensions/protect/applies_xxe_rule.rb
825
+ - lib/contrast/core_extensions/protect/kernel.rb
826
+ - lib/contrast/core_extensions/protect/psych.rb
827
+ - lib/contrast/core_extensions/thread.rb
828
+ - lib/contrast/internal_exception.rb
829
+ - lib/contrast/rails_extensions/assess/action_controller_inheritance.rb
830
+ - lib/contrast/rails_extensions/assess/active_record.rb
831
+ - lib/contrast/rails_extensions/assess/active_record_named.rb
832
+ - lib/contrast/rails_extensions/assess/configuration.rb
833
+ - lib/contrast/rails_extensions/buffer.rb
834
+ - lib/contrast/rails_extensions/rack.rb
835
+ - lib/contrast/security_exception.rb
836
+ - lib/contrast/sinatra_extensions/assess/cookie.rb
837
+ - lib/contrast/sinatra_extensions/inventory/sinatra_base.rb
838
+ - lib/contrast/tasks/service.rb
839
+ - lib/contrast/utils/assess/sampling_util.rb
840
+ - lib/contrast/utils/assess/tracking_util.rb
841
+ - lib/contrast/utils/boolean_util.rb
842
+ - lib/contrast/utils/cache.rb
843
+ - lib/contrast/utils/class_util.rb
844
+ - lib/contrast/utils/comment_range.rb
845
+ - lib/contrast/utils/data_store_util.rb
846
+ - lib/contrast/utils/duck_utils.rb
847
+ - lib/contrast/utils/env_configuration_item.rb
848
+ - lib/contrast/utils/environment_util.rb
849
+ - lib/contrast/utils/freeze_util.rb
850
+ - lib/contrast/utils/gemfile_reader.rb
851
+ - lib/contrast/utils/hash_digest.rb
852
+ - lib/contrast/utils/heap_dump_util.rb
853
+ - lib/contrast/utils/invalid_configuration_util.rb
854
+ - lib/contrast/utils/inventory_util.rb
855
+ - lib/contrast/utils/io_util.rb
856
+ - lib/contrast/utils/object_share.rb
857
+ - lib/contrast/utils/operating_environment.rb
858
+ - lib/contrast/utils/os.rb
859
+ - lib/contrast/utils/path_util.rb
860
+ - lib/contrast/utils/performs_logging.rb
861
+ - lib/contrast/utils/preflight_util.rb
862
+ - lib/contrast/utils/prevent_serialization.rb
863
+ - lib/contrast/utils/rack_assess_session_cookie.rb
864
+ - lib/contrast/utils/rails_assess_configuration.rb
865
+ - lib/contrast/utils/random_util.rb
866
+ - lib/contrast/utils/resource_loader.rb
867
+ - lib/contrast/utils/ruby_ast_rewriter.rb
868
+ - lib/contrast/utils/scope_util.rb
869
+ - lib/contrast/utils/service_response_util.rb
870
+ - lib/contrast/utils/service_sender_util.rb
871
+ - lib/contrast/utils/sha256_builder.rb
872
+ - lib/contrast/utils/sinatra_helper.rb
873
+ - lib/contrast/utils/stack_trace_utils.rb
874
+ - lib/contrast/utils/string_utils.rb
875
+ - lib/contrast/utils/tag_util.rb
876
+ - lib/contrast/utils/thread_tracker.rb
877
+ - lib/contrast/utils/timer.rb
878
+ - resources/assess/policy.json
879
+ - resources/csrf/inject.js
880
+ - resources/deadzone/policy.json
881
+ - resources/factory-bot-spec/spec_helper.rb
882
+ - resources/inventory/policy.json
883
+ - resources/protect/policy.json
884
+ - resources/rubocops/kernel/catch_cop.rb
885
+ - resources/rubocops/kernel/require_cop.rb
886
+ - resources/rubocops/kernel/require_relative_cop.rb
887
+ - resources/rubocops/module/autoload_cop.rb
888
+ - resources/rubocops/module/const_defined_cop.rb
889
+ - resources/rubocops/module/const_get_cop.rb
890
+ - resources/rubocops/module/const_set_cop.rb
891
+ - resources/rubocops/module/constants_cop.rb
892
+ - resources/rubocops/module/name_cop.rb
893
+ - resources/rubocops/object/class_cop.rb
894
+ - resources/rubocops/object/freeze_cop.rb
895
+ - resources/rubocops/object/frozen_cop.rb
896
+ - resources/rubocops/object/is_a_cop.rb
897
+ - resources/rubocops/object/method_cop.rb
898
+ - resources/rubocops/object/respond_to_cop.rb
899
+ - resources/rubocops/object/singleton_class_cop.rb
900
+ - resources/rubocops/regexp/spelling_cop.rb
901
+ - resources/rubocops/thread/new_cop.rb
902
+ - resources/ruby-spec/ancestors_spec.rb
903
+ - resources/ruby-spec/modulo_spec.rb
904
+ - resources/ruby-spec/parameters_spec.rb
905
+ - resources/ruby-spec/ruby_spec_spec_helper.rb
906
+ - resources/test_marker.txt
907
+ - ruby-agent.gemspec
908
+ - service_executables/.gitkeep
909
+ - service_executables/VERSION
910
+ - service_executables/linux/contrast-service
911
+ - service_executables/mac/contrast-service
912
+ - shared_libraries/.gitkeep
913
+ - shared_libraries/funchook.h
914
+ - shared_libraries/libfunchook.so
915
+ homepage: https://www.contrastsecurity.com
916
+ licenses:
917
+ - CONTRAST SECURITY (see license file)
918
+ metadata:
919
+ changelog_uri: https://docs.contrastsecurity.com/release.html
920
+ support_uri: https://support.contrastsecurity.com
921
+ trouble_shooting_uri: https://support.contrastsecurity.com/hc/en-us/search?utf8=%E2%9C%93&query=Ruby
922
+ wiki_uri: https://docs.contrastsecurity.com/
923
+ post_install_message:
924
+ rdoc_options: []
925
+ require_paths:
926
+ - lib
927
+ required_ruby_version: !ruby/object:Gem::Requirement
928
+ requirements:
929
+ - - ">="
930
+ - !ruby/object:Gem::Version
931
+ version: 2.4.0
932
+ - - "<"
933
+ - !ruby/object:Gem::Version
934
+ version: 2.8.0
935
+ required_rubygems_version: !ruby/object:Gem::Requirement
936
+ requirements:
937
+ - - ">="
938
+ - !ruby/object:Gem::Version
939
+ version: '0'
940
+ requirements: []
941
+ rubygems_version: 3.0.3
942
+ signing_key:
943
+ specification_version: 4
944
+ summary: Contrast Security's agent for rack-based applications.
945
+ test_files: []