Skip to content

Commit 0627472

Browse files
committed
Report rasp rule used on wrapped functions
1 parent 6300ec5 commit 0627472

File tree

18 files changed

+42
-55
lines changed

18 files changed

+42
-55
lines changed

appsec/src/extension/commands/request_exec.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
struct ctx {
1717
struct req_info req_info; // dd_command_proc_resp_verd_span_data expect it
18-
dd_rasp_rule rasp_rule;
18+
zend_string *nullable rasp_rule;
1919
zval *nonnull data;
2020
};
2121

@@ -30,7 +30,8 @@ static const dd_command_spec _spec = {
3030
.config_features_cb = dd_command_process_config_features_unexpected,
3131
};
3232

33-
dd_result dd_request_exec(dd_conn *nonnull conn, zval *nonnull data, unsigned rasp_rule)
33+
dd_result dd_request_exec(
34+
dd_conn *nonnull conn, zval *nonnull data, zend_string *nullable rasp_rule)
3435
{
3536
if (Z_TYPE_P(data) != IS_ARRAY) {
3637
mlog(dd_log_debug, "Invalid data provided to command request_exec, "
@@ -48,7 +49,7 @@ static dd_result _pack_command(mpack_writer_t *nonnull w, void *nonnull _ctx)
4849
assert(_ctx != NULL);
4950
struct ctx *ctx = _ctx;
5051

51-
mpack_write(w, ctx->rasp_rule);
52+
dd_mpack_write_nullable_zstr(w, ctx->rasp_rule);
5253
dd_mpack_write_zval(w, ctx->data);
5354

5455
return dd_success;

appsec/src/extension/commands/request_exec.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,5 @@
99
#include <SAPI.h>
1010
#include <php.h>
1111

12-
dd_result dd_request_exec(dd_conn *nonnull conn, zval *nonnull data, unsigned rasp_rule);
12+
dd_result dd_request_exec(
13+
dd_conn *nonnull conn, zval *nonnull data, zend_string *nullable rasp_rule);

appsec/src/extension/ddappsec.c

Lines changed: 4 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -488,8 +488,8 @@ static PHP_FUNCTION(datadog_appsec_push_addresses)
488488
}
489489

490490
zval *addresses = NULL;
491-
long rasp_rule = dd_rasp_rule_none;
492-
if (zend_parse_parameters(ZEND_NUM_ARGS(), "z|l", &addresses, &rasp_rule) ==
491+
zend_string *rasp_rule = NULL;
492+
if (zend_parse_parameters(ZEND_NUM_ARGS(), "z|S", &addresses, &rasp_rule) ==
493493
FAILURE) {
494494
RETURN_FALSE;
495495
}
@@ -498,11 +498,7 @@ static PHP_FUNCTION(datadog_appsec_push_addresses)
498498
RETURN_FALSE;
499499
}
500500

501-
if (rasp_rule != dd_rasp_rule_lfi && rasp_rule != dd_rasp_rule_ssrf) {
502-
rasp_rule = dd_rasp_rule_none;
503-
}
504-
505-
if (rasp_rule != dd_rasp_rule_none &&
501+
if (rasp_rule && ZSTR_LEN(rasp_rule) > 0 &&
506502
!get_global_DD_APPSEC_RASP_ENABLED()) {
507503
return;
508504
}
@@ -515,7 +511,7 @@ static PHP_FUNCTION(datadog_appsec_push_addresses)
515511

516512
dd_result res = dd_request_exec(conn, addresses, rasp_rule);
517513

518-
if (rasp_rule > dd_rasp_rule_none) {
514+
if (rasp_rule && ZSTR_LEN(rasp_rule) > 0) {
519515
clock_gettime(CLOCK_MONOTONIC_RAW, &end);
520516
elapsed =
521517
((int64_t)end.tv_sec - (int64_t)start.tv_sec) *
@@ -575,16 +571,6 @@ static void _register_testing_objects()
575571
{
576572
dd_phpobj_reg_funcs(functions);
577573

578-
# define _REG_RASP_CONST(php_name, value) \
579-
do { \
580-
char v[] = "datadog\\appsec\\rasp\\" php_name; \
581-
dd_phpobj_reg_long_const( \
582-
v, sizeof(v) - 1, value, CONST_CS | CONST_PERSISTENT); \
583-
} while (0)
584-
585-
_REG_RASP_CONST("LFI", dd_rasp_rule_lfi);
586-
_REG_RASP_CONST("SSRF", dd_rasp_rule_ssrf);
587-
588574
if (!get_global_DD_APPSEC_TESTING()) {
589575
return;
590576
}

appsec/src/extension/ddappsec.h

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -67,10 +67,4 @@ int dd_appsec_rshutdown(bool ignore_verdict);
6767

6868
#define PHP_DDAPPSEC_EXTNAME "ddappsec"
6969

70-
typedef enum {
71-
dd_rasp_rule_none = 0,
72-
dd_rasp_rule_lfi,
73-
dd_rasp_rule_ssrf,
74-
} dd_rasp_rule;
75-
7670
#endif // DDAPPSEC_H

appsec/tests/extension/actions_handling_01.phpt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ array(2) {
3232
[1]=>
3333
array(2) {
3434
[0]=>
35-
int(0)
35+
string(0) ""
3636
[1]=>
3737
array(1) {
3838
["server.request.path_params"]=>

appsec/tests/extension/push_params_ok_01.phpt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ array(2) {
3232
[1]=>
3333
array(2) {
3434
[0]=>
35-
int(0)
35+
string(0) ""
3636
[1]=>
3737
array(1) {
3838
["server.request.path_params"]=>

appsec/tests/extension/push_params_ok_02.phpt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ array(2) {
3232
[1]=>
3333
array(2) {
3434
[0]=>
35-
int(0)
35+
string(0) ""
3636
[1]=>
3737
array(1) {
3838
["server.request.path_params"]=>

appsec/tests/extension/push_params_ok_03.phpt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ array(2) {
3232
[1]=>
3333
array(2) {
3434
[0]=>
35-
int(0)
35+
string(0) ""
3636
[1]=>
3737
array(1) {
3838
["server.request.path_params"]=>

appsec/tests/extension/push_params_ok_04.phpt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ $helper = Helper::createInitedRun([
1818
]);
1919

2020
var_dump(rinit());
21-
push_addresses(["server.request.path_params" => 1234], \datadog\appsec\rasp\LFI);
21+
push_addresses(["server.request.path_params" => 1234], "lfi");
2222
var_dump(rshutdown());
2323
print_r(root_span_get_metrics());
2424

@@ -40,7 +40,7 @@ array(2) {
4040
[1]=>
4141
array(2) {
4242
[0]=>
43-
int(1)
43+
string(3) "lfi"
4444
[1]=>
4545
array(1) {
4646
["server.request.path_params"]=>

appsec/tests/extension/push_params_ok_05.phpt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ $helper = Helper::createInitedRun([
1818
]);
1919

2020
var_dump(rinit());
21-
push_addresses(["server.request.path_params" => 1234], \datadog\appsec\rasp\LFI);
21+
push_addresses(["server.request.path_params" => 1234], "lfi");
2222
var_dump(rshutdown());
2323
print_r(root_span_get_metrics());
2424

0 commit comments

Comments
 (0)