Commit 849a7c8
committed
security: replace eval() with AST-based evaluator in configure_optimizers
Replace the unsafe eval(params.lr_lambda) call with a restricted
AST-based evaluator (_safe_eval_lr_lambda) that only permits numeric
constants, the epoch variable, parentheses, unary +/- and arithmetic
operators (+, -, *, /, //, %, **).
This prevents arbitrary code execution via malicious config overrides
or CLI arguments (CWE-95) while preserving full flexibility for valid
scheduler expressions.
Add a regression test that verifies malicious expressions (e.g.
__import__('os').system(...)) raise ValueError.
Closes #13051 parent 4db10b2 commit 849a7c8
2 files changed
Lines changed: 420 additions & 183 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
| 2 | + | |
2 | 3 | | |
3 | 4 | | |
4 | 5 | | |
| |||
945 | 946 | | |
946 | 947 | | |
947 | 948 | | |
948 | | - | |
| 949 | + | |
949 | 950 | | |
950 | 951 | | |
951 | 952 | | |
| |||
998 | 999 | | |
999 | 1000 | | |
1000 | 1001 | | |
| 1002 | + | |
| 1003 | + | |
| 1004 | + | |
| 1005 | + | |
| 1006 | + | |
| 1007 | + | |
| 1008 | + | |
| 1009 | + | |
| 1010 | + | |
| 1011 | + | |
| 1012 | + | |
| 1013 | + | |
| 1014 | + | |
| 1015 | + | |
| 1016 | + | |
| 1017 | + | |
| 1018 | + | |
| 1019 | + | |
| 1020 | + | |
| 1021 | + | |
| 1022 | + | |
| 1023 | + | |
| 1024 | + | |
| 1025 | + | |
| 1026 | + | |
| 1027 | + | |
| 1028 | + | |
| 1029 | + | |
| 1030 | + | |
| 1031 | + | |
| 1032 | + | |
| 1033 | + | |
| 1034 | + | |
| 1035 | + | |
| 1036 | + | |
| 1037 | + | |
| 1038 | + | |
| 1039 | + | |
| 1040 | + | |
| 1041 | + | |
| 1042 | + | |
| 1043 | + | |
| 1044 | + | |
| 1045 | + | |
| 1046 | + | |
| 1047 | + | |
| 1048 | + | |
| 1049 | + | |
| 1050 | + | |
| 1051 | + | |
| 1052 | + | |
| 1053 | + | |
| 1054 | + | |
| 1055 | + | |
| 1056 | + | |
| 1057 | + | |
| 1058 | + | |
| 1059 | + | |
| 1060 | + | |
| 1061 | + | |
| 1062 | + | |
| 1063 | + | |
| 1064 | + | |
1001 | 1065 | | |
1002 | 1066 | | |
1003 | 1067 | | |
| |||
0 commit comments