LOW severity: Use of `msg.sender` instead of `_msgSender()` prevents meta-transaction support. **Description:** Several contracts in the codebase use `msg.sender` directly instead of `_msgSender()`, which prevents proper meta-transaction support. This inconsistency affects both initialization and core functionality across the system.

The affected contracts and functions include:

-...

Vulnerable code:
// BaseContract.sol
function __BaseContract_init() internal onlyInitializing {
    __UUPSUpgradeable_init();
    __Pausable_init();
-   __Ownable_init(msg.sender);
+   __Ownable_init(_msgSender());
}

// SecuritizeOffRamp.sol
function redeem(uint256 assetAmount, uint256 minOutputAmount) external whenNotPaused nonZeroNavRate nonZeroLiquidityProvider {
    uint256 rate = navProvider.rate();

-   RedemptionValidator.validateRedemption(msg.sender, assetAmount, asset);
+   RedemptionValidator.validateRedemption(_msgSender(), assetAmount, asset);

-   CountryValidator.validateCountryRestriction(msg.sender, dsServiceConsumer, restrictedCountries);
+   CountryValidator.validateCountryRestriction(_msgSender(), dsServiceConsumer, restrictedCountries);

    // ... calculations ...

    RedemptionManager.RedemptionParams memory params = RedemptionManager.RedemptionParams({
        asset: asset,
        liquidityProvider: liquidityProvider,
        feeManager: feeManager,
        assetAmount: assetAmount,
        liquidityTokenAmount: liquidityTokenAmount,
        minOutputAmount: minOutputAmount,
-       redeemer: msg.sender,
+       redeemer: _msgSender(),
        assetBurn: assetBurn
    });

    // ... execution logic ...

    emit RedemptionCompleted(
-       msg.sender,
+       _msgSender(),
        assetAmount,
        liquidityTokenAmount,
        rate,
        fee,
        address(liquidityProvider.liquidityToken())
    );
}

// SecuritizeBridge.sol
function bridgeDSTokens(uint16 targetChain, uint256 value) external override payable whenNotPaused {
    uint256 cost = quoteBridge(targetChain);
    require(msg.value >= cost, "Transaction value should be equal or greater than quoteBridge response");
-   require(dsToken.balanceOf(msg.sender) >= value, "Not enough balance in source chain to bridge");
+   require(dsToken.balanceOf(_msgSender()) >= value, "Not enough balance in source chain to bridge");

    // ... validation logic ...

-   require(registryService.isWallet(msg.sender), "Investor not registered");
+   require(registryService.isWallet(_msgSender()), "Investor not registered");

-   string memory investorId = registryService.getInvestor(msg.sender);
+   string memory investorId = registryService.getInvestor(_msgSender());

    // ... other logic ...

-   dsToken.burn(msg.sender, value, BRIDGE_REASON);
+   dsToken.burn(_msgSender(), value, BRIDGE_REASON);

    wormholeRelayer.sendPayloadToEvm{value: msg.value}(
        targetChain,
        targetAddress,
        abi.encode(
            investorDetail.investorId,
            value,
-           msg.sender,
+           _msgSender(),
            investorDetail.country,
            investorDetail.attributeValues,
            investorDetail.attributeExpirations
        ),
        0,
        gasLimit,
        whChainId,
-       msg.sender
+       _msgSender()
    );

-   emit DSTokenBridgeSend(targetChain, address(dsToken), msg.sender, value);
+   emit DSTokenBridgeSend(targetChain, address(dsToken), _msgSender(), value);
}

function validateLockedTokens(string memory investorId, uint256 value, IDSRegistryService registryService) private view {
    // ... compliance service logic ...

-   uint256 availableBalanceForTransfer = complianceService.getComplianceTransferableTokens(msg.sender, block.timestamp, uint64(lockPeriod));
+   uint256 availableBalanceForTransfer = complianceService.getComplianceTransferableTokens(_msgSender(), block.timestamp, uint64(lockPeriod));
    require(availableBalanceForTransfer >= value, "Not enough unlocked balance in source chain to bridge");
}