Isabella Cerutti

70 papers A* 2A 1B 15C 4Journal 21Unranked 27
YearRankTypeTitle / Venue / Authors
2023 conf
MeditCom
Gianmarco Baldini, Isabella Cerutti
2023 conf
EuCNC/6G Summit
Chrysanthi Chountala, Isabella Cerutti, Jean-Marc Chareau, Philippe Viaud, Fausto Bonavitacola
2022 J jnl
Opt. Switch. Netw.
Nicola Andriolli, Alessio Giorgetti, Piero Castoldi, Gabriele Cecchetti, Isabella Cerutti, Nicola Sambo, Andrea Sgambelluri, Luca Valcarenghi, Filippo Cugini, Barbara Martini, Francesco Paolucci
2021 J jnl
JOCN
Justine Cris Borromeo, Isabella Cerutti, Piero Castoldi, Rosula S. J. Reyes, Nicola Andriolli
2019 conf
OECC/PSC
Justine Cris Borromeo, Isabella Cerutti, Piero Castoldi, Rosula S. J. Reyes, Nicola Andriolli
2018 conf
ICTON
Piero Castoldi, Alessio Giorgetti, Andrea Sgambelluri, Gabriele Cecchetti, Anna Lina Ruscelli, Nicola Sambo, Francesco Paolucci, A. Morea, Isabella Cerutti, Filippo Cugini
2018 J jnl
JOCN
Isabella Cerutti, M. N. A. Acmad, Rosula S. J. Reyes, Piero Castoldi, Nicola Andriolli
2017 conf
ASP-DAC
Alessandra Melani, Maria A. Serrano, Marko Bertogna, Isabella Cerutti, Eduardo Quiñones, Giorgio C. Buttazzo
2017 conf
OFC
Yule Xiong, Nicola Andriolli, Stefano Faralli, Fabrizio Gambini, Paolo Pintus, Marco Chiesa, Ruben Ortuño, Odile Liboiron-Ladouceur, Isabella Cerutti
2017 J jnl
JOCN
Isabella Cerutti, Jan Alain Corvera, Samuel Matthew G. Dumlao, Rosula S. J. Reyes, Piero Castoldi, Nicola Andriolli
2017 conf
ICTON
Philippe Velha, Isabella Cerutti, Nicola Andriolli
2016 B conf
NetSoft
Molka Gharbaoui, Isabella Cerutti, Barbara Martini, Piero Castoldi
2016 conf
ICTON
Barbara Martini, Molka Gharbaoui, Isabella Cerutti, Piero Castoldi
2016 conf
ICTON
Isabella Cerutti, Aman Mohammed Behredin, Nicola Andriolli, Odile Liboiron-Ladouceur, Piero Castoldi
2015 conf
OFC
Fabrizio Gambini, Paolo Pintus, Stefano Faralli, Nicola Andriolli, Isabella Cerutti
2015 conf
ONDM
Isabella Cerutti, Nicola Andriolli, Paolo Pintus, Stefano Faralli, Fabrizio Gambini, Odile Liboiron-Ladouceur, Piero Castoldi
2015 conf
ICTON
Isabella Cerutti, Gianmarco Bruno, Francesco Lazzeri, Jeroen Nijhof, Piero Castoldi
2014 conf
ONDM
Francesca Martinelli, Nicola Andriolli, Piero Castoldi, Isabella Cerutti
2014 conf
EuCNC
Nicola Andriolli, Isabella Cerutti, Paolo Pintus, Mirco Scaffardi, Diego Marini, Giovanni Battista Montanari, Fulvio Mancarella, Matteo Ferri, Roberto Balboni, Gabriele Bolognini
2014 conf
OFC
P. Liao, C. Zhang, X. Lu, M. Mir Shafiei, Isabella Cerutti, Nicola Andriolli, Odile Liboiron-Ladouceur
2014 J jnl
JOCN
Francesca Martinelli, Nicola Andriolli, Piero Castoldi, Isabella Cerutti
2014 conf
EuCNC
Isabella Cerutti, Nicola Andriolli, Pier Giorgio Raponi, Piero Castoldi, Odile Liboiron-Ladouceur
2014 conf
ECOC
Isabella Cerutti, Francesca Martinelli, Nicola Sambo, Filippo Cugini, Piero Castoldi
2013 J jnl
JOCN
Ion Popescu, Isabella Cerutti, Nicola Sambo, Piero Castoldi
2013 J jnl
Photonic Netw. Commun.
Francesco Paolucci, Isabella Cerutti, Filippo Cugini, Luca Valcarenghi, Piero Castoldi
2013 conf
OnlineGreenComm
Ajmal Muhammad, Paolo Monti, Isabella Cerutti, Lena Wosinska, Piero Castoldi
2013 conf
ONDM
Bogdan Uscumlic, Annie Gravey, Isabella Cerutti, Philippe Gravey, Michel Morvan
2012 J jnl
IEEE Trans. Veh. Technol.
Filippo Meucci, Laura Pierucci, Isabella Cerutti
2012 conf
ONDM
Yvan Pointurier, Bogdan Uscumlic, Isabella Cerutti, Annie Gravey, Jean-Christophe Antona
2012 J jnl
JOCN
Anna V. Manolova, Isabella Cerutti, Raul Muñoz, Sarah Ruepp, Alessio Giorgetti, Nicola Andriolli, Nicola Sambo, Piero Castoldi, Ricardo Martínez, Ramon Casellas
2012 J jnl
J. High Speed Networks
Luca Valcarenghi, Isabella Cerutti, Piero Castoldi
2012 conf
ICC
Abdallah Kassem, Isabella Cerutti, Piero Castoldi
2012 conf
ICC
Pier Giorgio Raponi, Nicola Andriolli, Isabella Cerutti, Piero Castoldi, Odile Liboiron-Ladouceur
2012 C conf
HPSR
Isabella Cerutti, Abdallah Kassem, Pier Giorgio Raponi, Piero Castoldi
2011 J jnl
JOCN
Odile Liboiron-Ladouceur, Pier Giorgio Raponi, Nicola Andriolli, Isabella Cerutti, Mohammed Shafiqul Hai, Piero Castoldi
2011 J jnl
Photonic Netw. Commun.
Bogdan Uscumlic, Isabella Cerutti, Annie Gravey, Philippe Gravey, Dominique Barth, Michel Morvan, Piero Castoldi
2011 J jnl
Wirel. Commun. Mob. Comput.
Farid Farahmand, Isabella Cerutti, Ankitkumar N. Patel, Jason P. Jue, Joel J. P. C. Rodrigues
2011 B conf
ICCCN
Farid Farahmand, Mohammad Masud Hasan, Isabella Cerutti, Jason P. Jue, Joel J. P. C. Rodrigues
2011 B conf
GLOBECOM
Anna V. Manolova, Isabella Cerutti, Nicola Andriolli, Nicola Sambo, Alessio Giorgetti, Piero Castoldi, Sarah Ruepp
2010 B conf
GLOBECOM
Farid Farahmand, Mohammad Masud Hasan, Isabella Cerutti, Jason P. Jue, Joel J. P. C. Rodrigues
2010 B conf
GLOBECOM
Ajmal Muhammad, Paolo Monti, Isabella Cerutti, Lena Wosinska, Piero Castoldi, Anna Tzanakaki
2010 C conf
HPSR
Anna V. Manolova, Sarah Ruepp, Raul Muñoz, Ramon Casellas, Ricardo Martinez, Isabella Cerutti, Nicola Sambo, Alessio Giorgetti, Nicola Andriolli, Piero Castoldi
2010 J jnl
IET Commun.
Pier Giorgio Raponi, Nicola Andriolli, Isabella Cerutti, Piero Castoldi
2010 B conf
GLOBECOM
Anna V. Manolova, Alessio Giorgetti, Isabella Cerutti, Nicola Sambo, Nicola Andriolli, Raul Muñoz, Ricardo Martínez, Ramon Casellas, Sarah Ruepp, Piero Castoldi
2009 conf
GridNets
Isabella Cerutti, Luca Valcarenghi, Piero Castoldi
2009 J jnl
IEEE Netw.
Nicola Sambo, Nicola Andriolli, Alessio Giorgetti, Luca Valcarenghi, Isabella Cerutti, Piero Castoldi, Filippo Cugini
2009 J jnl
Opt. Switch. Netw.
Isabella Cerutti, Piero Castoldi
2009 B conf
GLOBECOM
Isabella Cerutti, Luca Valcarenghi, Piero Castoldi
2009 A conf
ITC
Bogdan Uscumlic, Annie Gravey, Philippe Gravey, Isabella Cerutti
2008 B conf
GLOBECOM
Isabella Cerutti, Filippo Meucci, Piero Castoldi, Laura Pierucci
2008 J jnl
IEEE/ACM Trans. Netw.
Isabella Cerutti, Andrea Fumagalli, Puja Gupta
2008 B conf
GLOBECOM
Farid Farahmand, Isabella Cerutti, Ankitkumar N. Patel, Qiong Zhang, Jason P. Jue
2007 J jnl
IEEE Commun. Lett.
Nicola Sambo, Alessio Giorgetti, Isabella Cerutti, Piero Castoldi
2007 A* conf
INFOCOM
Isabella Cerutti, Andrea Fumagalli, Puja Gupta
2007 B conf
GLOBECOM
Isabella Cerutti, Luca Valcarenghi, Piero Castoldi
2007 C conf
BROADNETS
Isabella Cerutti, Luca Valcarenghi, Piero Castoldi, Ramzi Tka, Farouk Kamoun
2006 B conf
GLOBECOM
Isabella Cerutti, Piero Castoldi
2006 conf
ICC
Isabella Cerutti, Andrea Fumagalli, George Ho
2005 J jnl
IEEE Commun. Mag.
Isabella Cerutti, Andrea Fumagalli
2004 conf
ICC
Sudhakar Pitchumani, Isabella Cerutti, Andrea Fumagalli
2004 C conf
LANMAN
Marco Ghizzi, Isabella Cerutti, Piero Castoldi, Andrea Fumagalli
2004 B conf
ICCCN
Isabella Cerutti, Andrea Fumagalli, Sonal Sheth
2004 B conf
GLOBECOM
Sudhakar Pitchumani, Isabella Cerutti, Andrea Fumagalli
2003 J jnl
Photonic Netw. Commun.
Isabella Cerutti, Andrea Fumagalli, Rajmohan Rajagopalan, Miriam Regina Xavier de Barros, Sandro Marcelo Rossi
2003 J jnl
IEEE/ACM Trans. Netw.
Andrea Fumagalli, Isabella Cerutti, Marco Tacca
2002 conf
ONDM
Isabella Cerutti, Miriam Regina Xavier de Barros, Andrea Fumagalli, Rajmohan Rajagopalan, Sandro Marcelo Rossi
2000 conf
ONDM
Ana Lardies, Rajesh Jagannathan, Andrea Fumagalli, Isabella Cerutti, Marco Tacca
2000 B conf
GLOBECOM
Isabella Cerutti, Andrea Fumagalli, Marco Tacca, Ana Lardies, Rajesh Jagannathan
1999 B conf
ICCCN
Andrea Fumagalli, Marco Tacca, Isabella Cerutti
1999 A* conf
INFOCOM
Andrea Fumagalli, Isabella Cerutti, Marco Tacca, Francesco Masetti, Rajesh Jagannathan, Sridhar Alagar
redb/extractors/elf_extractors/elf_exports.py
← Index redb/extractors/elf_extractors/elf_exports.py python
import inspect
from datetime import datetime, timezone
from typing import Any, List, Set

from elftools.elf.elffile import ELFFile
from elftools.common.exceptions import ELFError

from redb.extractors.enum import Tag
from redb.extractors.elf_extractor import ELFExtractor
from redb.models.dataclasses import ELFExport


class ELFExportExtractor(ELFExtractor):

    def __init__(
        self,
        filepath,
        log,
        exporters=None,
        index_prefix=None,
        elastic_index=None,
        known_benign=False,
        known_malicious=False,
        elf=None,
    ):
        super().__init__(
            filepath,
            log,
            exporters,
            index_prefix,
            elastic_index,
            known_benign,
            known_malicious,
            elf,
        )
        self.elf_exports = None
        self.elastic_index = self.index_prefix + "-elf_exports"
        self.log.debug(inspect.currentframe().f_code.co_name)

    def _get_exported_functions_from_symbols(self, elf) -> Set[str]:
        """Extract exported functions from symbol tables."""
        exported_functions = set()

        try:
            # Check both static (.symtab) and dynamic (.dynsym) symbol tables
            symbol_sections = ['.symtab', '.dynsym']

            for section_name in symbol_sections:
                section = elf.get_section_by_name(section_name)
                if not section or not hasattr(section, 'iter_symbols'):
                    continue

                for symbol in section.iter_symbols():
                    # Check if symbol is exported (defined and globally visible)
                    if (symbol.name and
                        symbol.entry.get('st_shndx', 0) != 'SHN_UNDEF' and  # Not undefined
                        symbol.entry.get('st_info', {}).get('bind') in ['STB_GLOBAL', 'STB_WEAK'] and  # Global or weak binding
                        symbol.entry.get('st_info', {}).get('type') in ['STT_FUNC', 'STT_OBJECT']):  # Function or object

                        # Additional checks for meaningful exports
                        if (symbol.entry.get('st_value', 0) > 0 or  # Has a value
                            symbol.entry.get('st_size', 0) > 0):    # Has a size
                            exported_functions.add(symbol.name)

        except Exception as e:
            self.log.error(f"Error extracting exported functions from symbols: {e}")

        return exported_functions

    def _get_exported_functions_from_dynamic_section(self, elf) -> Set[str]:
        """Extract exported functions information from dynamic section."""
        exported_functions = set()

        try:
            # Get the dynamic section
            dynamic_section = elf.get_section_by_name('.dynamic')
            if not dynamic_section:
                return exported_functions

            # Look for version definition sections that might indicate exports
            # This is complementary to symbol table analysis
            for tag in dynamic_section.iter_tags():
                if tag.entry.d_tag == 'DT_SONAME':
                    # If it has a SONAME, it's likely a shared library with exports
                    # The actual exports are still found in symbol tables
                    pass

        except Exception as e:
            self.log.error(f"Error extracting exports from dynamic section: {e}")

        return exported_functions

    def _filter_meaningful_exports(self, exports: Set[str]) -> Set[str]:
        """Filter out compiler-generated and internal symbols to focus on meaningful exports."""
        filtered_exports = set()

        # Common patterns to exclude (compiler-generated, internal symbols)
        exclude_patterns = [
            '_start',
            '_init',
            '_fini',
            '__libc_',
            '__gmon_start__',
            '_IO_stdin_used',
            '__data_start',
            '__bss_start',
            '_edata',
            '_end',
            '__TMC_END__',
            '_ITM_deregisterTMCloneTable',
            '_ITM_registerTMCloneTable',
            '__cxa_finalize',
            '__gxx_personality_v0',
            '_Jv_RegisterClasses'
        ]

        for export in exports:
            # Skip empty or very short names
            if not export or len(export) < 2:
                continue

            # Skip symbols that match exclude patterns
            skip = False
            for pattern in exclude_patterns:
                if export.startswith(pattern):
                    skip = True
                    break

            # Skip symbols that look like internal mangled names (but keep reasonable C++ names)
            if export.startswith('_Z') and len(export) > 50:  # Very long mangled names
                skip = True

            if not skip:
                filtered_exports.add(export)

        return filtered_exports

    def tag(self):
        return Tag.ELF_EXPORTS.value if hasattr(Tag, 'ELF_EXPORTS') else "elf_exports"

    def extract(self):
        try:
            self.log.debug(inspect.currentframe().f_code.co_name)

            def extract_data(elf):
                # Extract exported functions from multiple sources
                exported_functions = set()

                # From symbol tables (primary source)
                symbol_exports = self._get_exported_functions_from_symbols(elf)
                exported_functions.update(symbol_exports)

                # From dynamic section (supplementary)
                dynamic_exports = self._get_exported_functions_from_dynamic_section(elf)
                exported_functions.update(dynamic_exports)

                # Filter out compiler-generated and internal symbols
                meaningful_exports = self._filter_meaningful_exports(exported_functions)

                # Convert to sorted list for consistent output
                export_functions_list = sorted(list(meaningful_exports))

                # Return ELFExport dataclass
                return ELFExport(
                    elf_exports_total=len(export_functions_list),
                    elf_export_functions=export_functions_list,
                )

            if not self._is_elf_file():
                return None

            result = self._with_elf_file(extract_data)
            if result is None:
                return None

            self.elf_exports = result
            return self.elf_exports

        except Exception as e:
            self.log.error(f"Error extracting ELF exports {self.hash.sha256}: {e}")
            return None

    def prepare_export_data(self, exporter_type: str) -> Any:
        self.log.debug(inspect.currentframe().f_code.co_name)

        if exporter_type == "ElasticsearchExporter":
            return self.elf_exports
        elif exporter_type == "ClickHouseExporter":
            try:
                if not self.elf_exports:
                    return None

                # Prepare data array
                data = [[
                    self.sha256,
                    self.md5,
                    self.sha1,
                    self.elf_exports.elf_exports_total,
                    self.elf_exports.elf_export_functions,
                    datetime.now(timezone.utc)
                ]]

                column_names = [
                    'sha256', 'md5', 'sha1',
                    'elf_exports_total',
                    'elf_export_functions',
                    'analysis_date'
                ]

                if not data:
                    return None

                column_type_names = [
                    'FixedString(64)', 'FixedString(32)', 'FixedString(40)',
                    'UInt32',
                    'Array(LowCardinality(String))',
                    'DateTime64(3, \'UTC\')'
                ]

                return (data, column_names, column_type_names)

            except Exception as e:
                self.log.error(f"Error preparing export data: {e}")
                raise

    def get_clickhouse_table(self) -> str:
        return "redb_elf_exports"